Commenti alla pagina php di esempio cds_semplice.php $myusername="root"; Una tipica istruzione php. Si notano: • Il ; finale come in C# • L’uso del $ prima del nome della variabile. I nomi di variabili in PHP sono sempre precedute dal simbolo del dollaro. mysql_connect("localhost", $myusername, $mypassword) Apre una connessione ad un server MySQL. La funzione restituisce un identificativo di connessione MySQL in caso di successo oppure il valore FALSE in caso di errore. Testando quindi il risultato della funzione come se fosse una variabile booleana si può capire se la connessione è stata effettuata correttamente. Gli argomenti sono: il nome del server di database (localhost è il computer locale), username e password necessari per il collegamento. mysql_select_db("cdcol") Seleziona un database. L’argomento è il nome del database. In caso di errore la funzione restituisce il valore FALSE. mysql_real_escape_string($_REQUEST['titolo']) Converte gli eventuali caratteri speciali presenti nel testo (ad esempio apici e apostrofo) in “sequenza di escape” ovvero una modalità di scrittura di una stringa utilizzabile in SQL. Ad esempio: la stringa “Zak's “ diventa “Zak\’s”. La barra che precede l’apice indica che si tratta del carattere apice e non del delimitatore di stringa. $result = mysql_query("SELECT id,titel,interpret,jahr FROM cds ORDER BY interpret") mysql_query("INSERT INTO cds (titel,interpret,jahr) VALUES('$titolo','$interprete',$anno)") Esegue una query sul database con il quale si è create la connessione. L’argomento della funzione è la frase SQL da eseguire. L’argomento può essere una costante o una variabile o essere costruita in modo misto, come nell’esempio, utilizzando la particolare sintassi php che permette di inserire il valore delle variabili all’interno di costanti stringa, a patto che siano utilizzati i doppi apici per la delimitazione della stringa, come nel secondo esempio. La query può restituire un risultato oppure essere semplicemente eseguita sul server. Nel primo caso in esempio le righe ottenute dalla SELECT sono memorizzate in $result, pronte per essere elaborate (vedi mysql_fetch_array). Nel secondo caso, non viene restituito nulla dal momento che l’istruzione SQL è una query di inserimento. while ($row = mysql_fetch_array($result)) { La funzione mysql_fetch_array ecupera una riga dall’insieme di record restituiti da una query di selezione e la inserisce in un array associativo, ovvero un array nel quale l’indice può essere non soltanto un numero ma anche un nome simbolico. Questa modalità è utile per i database perché così è possibile utilizzare i nomi dei campi. Nell’esempio, $row è un array che contiene sequenzialmente UN record alla volta. Per accedere ai singoli campi si usa la sintassi $row[‘nome campo’] (vedi htmlspecialchars). Il costrutto while serve a realizzare la scansione sequenziale di tutti i record restituiti dalla query. Quando non ci sono più record, la mysql_fetch_array restituisce il valore FALSE. In questo modo, la while termina l’esecuzione del ciclo. htmlspecialchars($row['titel']) Converte i caratteri speciali in “entità HTML”. Serve quando si inseriscono dati provenienti dal database in HTML per consentire la corretta visualizzazione di eventuali caratteri speciali presenti nel record. $_REQUEST['interprete'] $_REQUEST indica, in modogenerale, l’insieme dei dati che sono stati inviati allo script da un modulo HTML (o anche in altri modi, ad es. i cookie). L’argomento tra parentesi quadre è il nome del singolo campo, così come è stato definito nel modulo di partenza, attraverso il descrittore NAME del campo del modulo. die() Interrompe l’esecuzione dello script. Le successive istruzioni, sia php che HTML non sono eseguite. echo "<tr valign='bottom'>" echo "<td class='tabval'><b>".htmlspecialchars($row['interpret'])."</b>&nbsp;</td>" L’istruzione echo consente di scrivere codice HTML da PHP, senza “chiudere” lo script PHP. Consente inoltre di “mescolare” stringhe fisse appartenenti all’HTML con variabili PHP, come mostrato nel secondo esempio, nel quale il contenuto del campo “interpret”, proveniente dal database, viene mostrato, inserito all’interno di un tag <TD> in modo da visualizzare il contenuto in forma tabellare.