Coding a php ajax json application to connect a mysql db.
Sviluppare una applicazione web con php e json per accedere ad un db mysql. L'anticamera per poi realizzare app gestionali.
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
6.01 php ajax_json_mysql
1. Stefano Floris,
Versione marzo 2015
Realizzare programmi gestionali in ambiente
Android con HTML e PHP, Ajax, Json
Pubblicato su
www.troppocurioso.altervista.org
E' arrivato il momento di
provare a realizzare delle
APP gestionali.
Applicazioni che girano su
dispositivi Android e che
accedono ad un database.
PHP, Ajax-Json e MYSQL
verso la programmazione gestionale
di dispositivi mobili Android
2. Per vedere una copia del testo della licenza visita il sito
http://www.creativecommons.it/Licenze
Stefano Floris, 2015
www.troppocurioso.altervista.org
Questa opera è sotto licenza
creativa (di tipo copyleft)
Attribuzione-Non commerciale-
Condividi allo stesso modo Generico.
3. Le applicazioni realizzate con
HTML e PHP viste fin qui erano
pensate per girare su pc. La
progettazione della loro
interfaccia era come illustrato
nella pagina seguente.
PHP, Ajax-Json e MYSQL
4. PHP, Ajax-Json e MYSQL
dd
E' la “vecchia” gestione che abbiamo
studiato nel capitolo 4: una pagina html
che chiama una pagina php che
interroga il db, prende il recordset e lo
visualizza.
5. Con i dispositivi mobili cambia
la prospettiva. Ci sono nel
mondo tanti dispositivi che
chiedono accesso ai db. Se i
server dovessero rispondere a
questo incredibile numero di
richieste scoppierebbero di
super lavoro, e allora...
PHP, Ajax-Json e MYSQL
Perché non far lavorare i client?
6. PHP, Ajax-Json e MYSQL
Questo è una
versione dello
stesso progetto. Di
seguito vi spiego.
7. Ecco cosa cambia. La
prima pagina, quella
html conterrà anche il
codice js per gestire il
risultato. Sarà la CPU
del client a
preoccuparsi di
visualizzare i dati.
Come vedete la seconda pagina è
quasi vuota. Il codice Php sarà ridotto:
svolgerà solo l'interrogazione al db ma
non gestirà piu' la parte di
visualizzazione dei risultati. La gestione
dell'interfaccia non è piu' appannaggio
del php ma del javascript sul client.
Il server lavorerà solo
sull'interrogazione al
db. Manderà il risultato
al client.
PHP, Ajax-Json e MYSQL
8. In sintesi. PHP si
utilizza per gestire il
database. HTMl e
javascript per gestire
l'interfaccia utente.
La pagina Php continua ad accedere al
db e a formulare la richiesta di dati (il
comando SQL). Il risultato viene inviato
alla pagina chiamante che lo interpreta
e lo visualizza.
Il dialogo fra pagina
chiamante e pagina php
avviene tramite il
protocollo di Ajax-json
che non è altro che un
formato di interscambio
di dati.
PHP, Ajax-Json e MYSQL
9. <body >
Elenco dei fornitori
Lancia: <input type="button"
onClick="prova()" name="fornitori"
value="vedi lista fornitori" ><br>
<div id="select" style="visibility:
hidden" style="text-align: center;
width: 100%;">
<select id="fornitori">
</select>
<br /> <br />
</div>
</body>
</html>
Analizziamo il
codice. Questo è
il body della
pagina html.
La novità è nella
parte delle div e
la gestione
dell'evento on-
click con una
funzione
javascript che
vediamo di
seguito.
PHP, Ajax-Json e MYSQL
10. <body >
Elenco dei fornitori
Lancia: <input type="button"
onClick="prova()" name="fornitori"
value="vedi lista fornitori" ><br>
<div id="select" style="visibility:
hidden" style="text-align: center;
width: 100%;">
<select id="fornitori">
</select>
<br /> <br />
</div>
</body>
</html>
Qui abbiamo una
pagina dove una
parte di oggetti
non sono visibili
(hidden). Lo
saranno
successivamente
, dopo essere
stati popolati dei
dati estratti dal
db.
PHP, Ajax-Json e MYSQL
11. Della stessa pagina vediamo adesso la
parte javascript.
PHP, Ajax-Json e MYSQL
12. <script type="text/javascript">
function prova() {
//alert('Benvenuto in JSON!');
var url = "accesso_db.php";
var sel = document.getElementById('fornitori');
var obj;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, true);
// Effettuo la richiesta ajax
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// In risposta dal mio file php avrò una stringa json e
// questa funzione la trasformerà in oggetto
obj = JSON.parse(xmlhttp.responseText);
// Ciclo ogni oggetto e rimepio la selectr con i dati
for ( i = 0; i < obj.length; i++) {
var opt = document.createElement('option');
opt.innerHTML = obj[i].ragionesoc;
opt.value = obj[i].id_fornitore;
sel.appendChild(opt);
}
document.getElementById("select").style.visibility="visible";
}
}
xmlhttp.send();
}
</script>
La parte js
si occupa di
chiamare la
pagina
.php,
inviando i
dati che
servono per
la query e
di ricevere
il recordset
in formato
stringa
json.
PHP, Ajax-Json e MYSQL
13. Adesso diamo uno sguardo alla
pagina .php.
PHP, Ajax-Json e MYSQL
14. <?php
// variabili di accesso al server e a MySQL
$host="172.16.0.24"; //replace with your
hostname
$username="floris"; //replace with your
username
$password="xxxxxxxx"; //replace with your
password
$db_name="floris_energia"; //replace with your
database
// ***********************
// Accesso al DB
// ***********************
$con=mysqli_connect($host, $username, $password)or
die("cannot connect");
mysqli_select_db($con,$db_name) or die ("cannot
select DB");
1/3.
Questa
parte qui
non ha
niente di
nuovo
rispetto a
quanto
conosciam
o.
PHP, Ajax-Json e MYSQL
15. // ***********************
// QUERY
// ***********************
$sql = "select * from fornitori"; //replace with your
table name
$result = mysqli_query($con,$sql);
$json = array();
if(mysqli_num_rows($result)){
// Scorro il record set (risultato della query)
while($row=mysqli_fetch_object($result)) {
// Vecchio metododi visualizzazione
// sostituito con il sistema Json
//echo "$row[0] - $row[1]";
// Metto nel vettore, alla prima riga libera
// il contenuto della riga attuale del
recordset
$json[]=$row;
}
}
2/3
In questa
parte si
crea la
query SQL,
si invia
come
sempre ed
il risultato
viene
salvato in
un vettore
(json).
PHP, Ajax-Json e MYSQL
16. // ***********************
// Chiudo DB
// ***********************
mysqli_close($con);
// ***********************
// Invio la stringa
// ***********************
echo json_encode($json);
?>
3/3
Si chiude il
db e si invia
in output il
recordset
che verrà
interpretato
dalle
funzioni
json di
javascrit
come visto
sopra.
PHP, Ajax-Json e MYSQL
17. Abbiamo terminato.
Il prossimo passo è la realizzazione di
APP con accesso a DB.
Seguiteci su
www.altervista.troppocuriso.org
PHP, Ajax-Json e MYSQL