Italian B4A Altervista mySql PHP

Star-Dust

Expert
Licensed User
Longtime User
ASP.Net è moderno ed è nato insieme a tutti i prodotti netta ma non è la prima versione come vb.net non è la prima versione di visual basic


IMG_20200608_130602.jpg
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Come mai?
Complicato inutilmente. Quello che ho scritto io, molto più semplice e puoi selezionare tutti i campi di risposta che vuoi ... comunque hai scritto che non lo hai capito bene .... studialo e vedi
 

Elric

Well-Known Member
Licensed User
Complicato inutilmente. Quello che ho scritto io, molto più semplice e puoi selezionare tutti i campi di risposta che vuoi ... comunque hai scritto che non lo hai capito bene .... studialo e vedi
Ok, se ho capito bene non sei d'accordo sul fatto che l'esempio sia lean ma non sul fatto che ci sarebbe stato bene qui.

Che poi il tuo sia da studiare non ci sono dubbi!

... però qual è la parte "complicato inutilmente"?
 
Last edited:

Luciano Veneziano

Active Member
Licensed User
Longtime User
Premettendo che io ho esigenze diverse.
io ho aggiunto un'intestazione ed un END
.
$once serve per inserire il numero di records trovati e nomi dei campi nell'ordine
della query una sola volta (diminuisco drasticamente le dimensione del contenuto).

la prima riga del output somiglierà a:

OK;12;3;id;nome;cognome;
records...
END


Query:
$once = 0;
if ($result = $mysqli -> query($sql)) {
  print "OK;".mysqli_num_rows($result).";"; 
  while($row = $result->fetch_assoc()) {
    if(!$once) {  
      $fields = array_keys($row);  
      echo count($fields).";";
      echo implode(';',$fields);
       print "\r\n";      
      $once++;
    }
    echo implode(';',$row);
    print "\r\n";
  }
}
$mysqli -> close();
print "END\r\n";
 

Luciano Veneziano

Active Member
Licensed User
Longtime User
LA cosa veramente potente è che si possono creare applicazioni eterogenee (una sotto windows, una sotto Android, una Web)
che utilizzano lo stesso database senza bisogno di drivers o software aggiuntivo.
Clicca qui Noterete, che ho cambiato da win32 una frequenza da 4500hz a 2500hz, preso dal telefono android e trasferito all'apparecchio
via bluetooth, alla fine viene verificato, con l'oscilloscopio, che la seconda frequenza sia stata acquisita correttamente.
 
Last edited:

Xfood

Expert
Licensed User
buongiorno Ragazzi, torno sull'argomento perche non riesco a risolvere il problema,
sto utilizzando uno script php presolevato in giro che allego,
e una funzioncina semplice che allego,
riesco a fare ( fino ad esso) le selezioni select * from ecc. gli insert , e gli update,
sembra che tutto funzioni, ma quanto ho voluto provare un select count(*) from user, non mi ritorna nulla,
qualcuno potrebbe farmi capire dove sbaglio e correggere eventuale file php oppure funzione b4x?

Grazie mille

richiamo la funzione cosi
B4X:
' questa funziona'
Dim query As String = $"Select * from DgUtenti where id_accesso='${txtUsername.Text}' and password = '${txtPassword.Text}' limit 1;"$
        Wait For (php_fqgr.ExecuteRemoteQuery(query,metodo)) Complete (Valore As String)
        Log("valore " & metodo &": " & Valore)

B4X:
' questa non fa nulla

metodo="Cerca"
    Dim query As String = $"Select COUNT(*) from DgUtenti"$
    Wait For (php_fqgr.ExecuteRemoteQuery2(query,metodo)) Complete (Valore As String)
    Log("valore " & metodo &": " & Valore)

File Php
B4X:
<?php

$databasehost = "localhost";
$databasename = "";
$databaseusername ="";
$databasepassword = "";



error_reporting(E_ALL ^ E_WARNING);
error_reporting(0);
$con = mysqli_connect($databasehost,$databaseusername,$databasepassword, $databasename) or die(mysqli_error($con));
mysqli_set_charset ($con , "utf8");
$query = file_get_contents("php://input");
$sth = mysqli_query($con, $query);

if (mysqli_errno($con)) {
   header("HTTP/1.1 500 Internal Server Error");
   echo $query.'\n';
   echo mysqli_error($con);
}
else
{
   $rows = array();
   while($r = mysqli_fetch_assoc($sth)) {
     $rows[] = $r;
   }
   $res = json_encode($rows);
    echo $res;
    mysqli_free_result($sth);
}
mysqli_close($con);
?>

Funzione B4x
B4X:
Sub ExecuteRemoteQuery(Query As String, JobName As String) As ResumableSub
    Dim res As String
    Dim job As HttpJob
    Log(Query)
    job.Initialize(JobName, Me)
    job.PostString("http://127.0.01/file.php", Query)
    Wait For (job) JobDone(job As HttpJob)
    
    Log("successo?")
    Log(job.Success)
    
    If job.Success Then
        res = job.GetString
        If JobName="Insert" Then res="OK"
        If JobName="Delete" Then res="OK"
        If JobName="Update" Then res="OK"
        If JobName="Cerca" And  res.Length < 5 Then res="0"
'        Return res
    Else
        res = "KO"

    End If
    
    job.Release
    Return res
    
End Sub
 
Top