Italian [B4A] database online

Elric

Well-Known Member
Licensed User
Ho fatto un atto di fede e non ho verificato se il problema fosse su
B4X:
VALUES ($ID, $values)
o su "type"... 😅

C'era il problema della data che non mi ero proprio posto, né in lettura né in scrittura... e poi c'era un problema di sintassi, poiché dopo VALUES le variabili devono essere tra apici (o apostrofi) mentre per l'indicazione del "WHERE" no. Chissà!

Stasera posto il mio esempio in B4J (testato) e in B4A (non testato).

Volevo farlo ieri ma devo aver combinato qualche pasticcio e non sono riuscito a testarlo in B4A.
 

Elric

Well-Known Member
Licensed User
Come anticipato allego B4J (testato) e B4A (non testato).

Grazie:
@sirjo66 per la sua guida e per il suo file execute.php a cui mi sono permesso di aggiungere solo una riga;
@LucaMs per i suggerimenti, i consigli sempre utili e per la sua innata capacità di cercatore (d'altronde se hai i capelli e gli occhiali (?), ci siamo!);
@Star-Dust, che pure se avevo letto questo e non ci avevo capito granché, mi è comunque servito per intuire alcuni concetti.


File execute.php da usare:
execute.php:
<?php

// esegue un comando SQL (SELECT - UPDATE - DELETE - INSERT o altri)

$sql = '';
if (isset($_GET['sql'])) $sql = $_GET['sql'];

$chk = '';
if (isset($_GET['chk'])) $chk = $_GET['chk'];

//include('include/config.php');
include('config.php');
include('queries.php');

$md5 = md5("SJ".$sql."PT");
//if ($md5 != strtolower($chk)) {
//    echo "E\nErrore parametro CHK\nParametro CHK non corretto\n"; // 4 righe
//    return;
//}

//avvio connessione al database
$db = @new mysqli($mysql_host,$mysql_user,$mysql_password,$mysql_database);
if ($db->connect_error) {
    echo "E\nErrore connessione al database\n".$db->connect_error."\n"; // 4 righe
    return;
}
$db->query("SET CHARACTER SET utf8");

$rs = $db->query($sql);
if ($rs === false) {
    echo "E\nErrore query\n".$db->error."\n".$sql;
    $db->close();
    return;
}

// estraggo il comando base
$cmd = strtoupper($sql);
$vn = strpos($cmd, " ");
if ($vn !== false) $cmd = substr($cmd, 0, $vn);

switch ($cmd) {
case "SELECT":
    $nrs = mysqli_num_rows($rs); // record count
    $lst = [];
    for ($i = 0; $i < $nrs; $i++) { $lst[] = mysqli_fetch_assoc($rs); } // porto i risultati sull'array $lst
    echo json_encode($lst);
    break;
case "UPDATE":
    echo "K\n".$db->affected_rows;
    break;
case "DELETE":
    echo "K\n";
    break;
case "INSERT":
    echo "K\n".$db->insert_id;
    break;
default:
    echo "K\n";
}

$db->close();

?>

File queries.php da usare:
queries.php:
<?php

$action = '';
if (isset($_GET['action'])) $action = $_GET['action'];

$ID = '';
if (isset($_GET['ID'])) $ID = $_GET['ID'];

$values = '';
if (isset($_GET['values'])) $values = $_GET['values'];

$splittedvalues = explode("|",$values);

$mil = $splittedvalues[2];
$seconds = $mil / 1000;
$date = date("Y-m-d", $seconds);

switch ($action)
{
    case "SelectAllAnimals":
        $sql = ("SELECT * FROM Animals");
    break;
 
    case "DeleteOneAnimal":
        $sql = ("DELETE FROM Animals WHERE ID = $ID");
    break;
   
    case "InsertOneAnimal":
        $sql = ("INSERT INTO Animals(ID, species, name, birth_date, sex) VALUES ('$ID', '$splittedvalues[0]', '$splittedvalues[1]', '$date', '$splittedvalues[3]')");
    break;
   
    case "UpdateOneAnimal":
        $sql = ("UPDATE Animals SET species= '$splittedvalues[0]', name = '$splittedvalues[1]', birth_date = '$date', sex = '$splittedvalues[3]' WHERE ID = $ID");
    break;
}

?>

Apprezzati osservazioni e suggerimenti!
 

Attachments

  • B4XPageAltvsDB.zip
    32.1 KB · Views: 188
Last edited:
Top