Mostrare il risultato di una query con il PHP

Uno dei principali utilizzi del PHP e in generale dei linguaggi server side è l’interrogazione di basi di dati e la visualizzazione dei risultati in una pagina web.
In questo articolo vogliamo vedere quali sono i passi fondamentali per stampare il risultato di una query all’interno di una pagina mediante il php.
Faremo riferimento ad un database su MySql.

La prima cosa da fare è stabilire una connessione con il gestore dei database, per far questo abbiamo necessita di tre parametri: l’indirizzo del server db, la username dell’utente che si può connettere e la sua password.
Un’altra informazione che dobbiamo avere a disposizione è il nome del database che contiene i dati che ci interessano.

//connessione al server db
mysql_connect('indirizzo.server','usr','pwd');
//selezione db
mysql_select_db('nomeDb')

Generalmene tutti i parametri di connessione e il nome del database ci sono forniti dal provider.
In contesti di prova (come ad esempio installazioni di XAMPP o EasyPhp) la connessione dovrebbe essere:

//connessione al server db
mysql_connect('127.0.0.1','root','');

L’IP della macchina è 127.0.0.1 , ossia la macchina stessa, la username è ‘root’ e la password non c’è. Anche in questo caso però è necessario conoscere il nome del batabase.

In ogni caso da ora in poi daremo per scontato di essere connessi, quindi possiamo passare alla scrittura della query e alla sua esecuzione (se sentite dire “lanciare una query”, potete interpretarlo come “eseguire una query”)

Supponiamo di avere una tabella amici contenente i nomi,cognomi e telefoni dei nostri amici. la query potrebbe essere una cosa simile a:

SELECT nome,cognome,telefono FROM amici ORDER BY cognome,nome

Prima di proseguire occorre tener presente che il risultato di una query di selezione è una tabella. E’ necessario che questo concetto sia chiaro per prosegire con successo nello sviluppo della pagina.

Ora prepariamo la query e lanciamola:

$query="SELECT nome,cognome,telefono FROM amici ORDER BY cognome,nome";
$res=mysql_query($query);

Prima di tutto bisogna capire che l’SQL non è di pertinenza del php, quindi lo dobbiamo trattare come una stringa e passarlo al gestore di db tramite la funzione mysql_query.
Il server database ci risponderà con una tabella, ossia con delle informazioni disposte in righe e colonne, su una singola riga abbiamo le informazioni attinenti, ossia nome, cognome e telefono di una persona saranno sulla stessa riga.

Quindi la variabile $res conterrà una tabella (non è proprio così ma per farci capire va bene).

A questo punto quello che vogliamo fare è visualizzre riga per riga i dati estratti dalla tabelle.
Per fare questo controllere se $res esiste e se ha un numero di righe maggiore di 0.

if($res && mysql_num_rows($res)>0){
// qui ci andrà il codice per stampare i risultati
} else
     echo "nessun risultato";

Per scorrere i risultati della query dobbiamo utilizzare la funzione mysql_fetch_assoc(), che prende il $res e lo scorre tutte le righe fino all’ultima, e torna un array associativo finche scorre le righe, falso altrimenti, quindi per utilizzarlo si mette in ciclo while, nel seguente modo:

if($res && mysql_num_rows($res)>0){
     while($row=mysql_fetch_assoc($res)){
        echo $row['nome']." - ";
        echo $row['cognome']." - ";
        echo $row['telefono']." <br> ";
     }
} else
     echo "nessun risultato";

Come vedete per stampare i campi abbiamo usato esattamente i nomi dei campi selezionati dalla tabella. Anche questo è opera di mysql_fetch_assoc() che ritorna un array associativo i cui indici sono esattamente i nomi dei campi risultanti dalla query.

Ora non ci resta che mettere insieme tutti i pezzi e provare il codice.