Il tutorial
Prerequisiti
Il tutto è facilitato per chi è in possesso dei seguenti requisiti:
- Buona conoscenza javascript e jQuery;
- Conoscenza minima del linguaggio Sql;
- Buona conoscenza di PHP;
jQuery Post
E’ la funzione che mi permette di fare tutto ciò: effettua una richiesta al server utilizzando il metodo POST.
$.post('file.php', 'parametri in post','funzione di ritorno', 'json');
Come l’esempio mostra accetta 4 parametri (in teoria alcuni in più ma per il momento è sufficiente questo):
- Il primo, obbligatorio, contiene il file fisico php dove all’interno vi sarà il codice con la query che restituisce le capitali;
- Il secondo, facoltativo, contiene un set di variabili da passare in POST. Esempio: {ID : 1};
- Il terzo parametro, obbligatorio, sarebbe una funzione javascript di ritorno,
- Il quarto parametro è una costante, JSON è un formato per lo scambio dati, sostanzialmente testo. Semplicemente si avvisa jQuery che per questo scambio si utilizza il formato JSON.
Per schiarire un pò le idee ecco uno schema riassuntivo del funzionamento di jQuery post in questo script:
Funzionamento
Basilarmente avremo 2 pagine:
- “index.php”: contiene la lista delle capitali, la funzione jQuery post e la funzione di ritorno dall’ajax;
- “json.php”: contiene la query che ha come ingresso l’ID della nazione e restituirà un set di dati (nel nostro caso il nome della capitale).
Index.php
Stampa delle nazioni all’interno della tabella:
$sql = mysql_query('select * from nazioni');
echo '
- ';
while($row = mysql_fetch_array($sql)){
echo '
- ' . $row['nazione'] . ' '; } echo '
Immediatamente dopo mi riservo uno spazio per un div “capitale” vuoto all’interno del quale stampo il risultato della chiamata ajax
echo '';
Chiusa la parte PHP mi occupo di scrivere la funzione javascript che al click di una nazione effettua la chiamata ajax con jQuery Post, come parametri passo:
- json.php: file Ajax;
- {IDnazione: contenuto_lista}: il parametro POST IDnazione che conterrà il valore “contenuto_lista” che mi ricavo prendendo l’id corrente della nazione cliccata (this.id);
- mostra_capitale: funzione di ritorno che spiegherò subito dopo;
- json: formato dati convenzionale.
Per beccare il risultato del file json.php utilizziamo la funzione mostra_capitale che accetta un parametro “data”, ad essa non faccio altro che dire di scrivere all’interno del div vuoto “capitale” precedentemente dichiarato il valore che mi ha fornito l’ajax.
Json.php
Molto più semplice, il file che restituirà il nome della Capitale, esso conterrà la query, in questo caso IDnazione che abbiamo chiamato nell’index.php lo gestiamo come se fosse una vera e prorpia variabile $_POST.
$sql = mysql_query('select * from capitali where cod_IDnazione = "' . $_POST['IDnazione'] . '"');
$row = mysql_fetch_array($sql);
E la funzione per restituire il set di dati al mittente (json_encode)
echo json_encode($row['capitale']);
Download
Puoi scaricare la risorsa direttamente da qui, troverai all’interno:
- lib/connessione.php: file di connessione al database;
- lib/jquerymin.1.6.1: jquery da includere;
- db.rtf: database d’esempio contenente Nazioni e Capitali;
- index.php e json.php: ne abbiamo abbondantemente parlato
Lascio i commenti aperti per ulteriori dubbi o chiarimenti.