La programmazione web: lato client e lato server Parlando di PHP e di altri linguaggi di scripting può capitare di sentir citare le espressioni "lato client" e "lato server": per chi non è esperto della materia, tali definizioni possono suonare un po' misteriose. Proviamo a chiarire questi concetti: vediamo come funziona, in maniera estremamente semplificata, la richiesta di una pagina Web. L'utente apre il suo browser e digita un indirizzo Internet, ad esempio www.nostrosito.it/pagina1.html: a questo punto il browser si collega al server www.nostrosito.it e gli chiede la pagina pagina1.html. Tale pagina contiene esclusivamente codice HTML: il server la prende e la spedisce al browser, così com'è (insieme ad eventuali file allegati, ad esempio immagini). Il nostro utente quindi avrà la possibilità di visualizzare questa pagina. Supponiamo ora che l'utente richieda invece la pagina pagina2.php: questa, contrariamente a quella di prima, non contiene solo codice HTML, ma anche PHP. In questo caso il server, prima di spedire la pagina, esegue il codice PHP, che in genere produce altro codice HTML: ad esempio, PHP potrebbe controllare che ore sono e generare un messaggio di questo tipo: "Buon pomeriggio, sono le 17.10!" oppure: "Ehi, che ci fai alzato alle 4 del mattino?". Dopo l'esecuzione, la pagina non conterrà più codice PHP, ma solo HTML. A questo punto è pronta per essere spedita al browser. (Ovviamente, il file che non contiene più codice PHP non è quello "originale", ma la "copia" che viene spedita al browser. L'originale rimane disponibile per le prossime richieste.) Quindi l'utente vede solo il codice HTML, e non ha accesso al codice PHP che ha generato la pagina. Per comprendere ancora meglio questo concetto, confrontiamo PHP con un altro linguaggio di scripting molto diffuso sul Web, cioè JavaScript, che di solito viene usato come linguaggio "lato client": JavaScript infatti viene eseguito non dal server, ma dal browser dell'utente (il client, appunto). JavaScript ci consente di eseguire operazioni che riguardano il sistema dell'utente, come ad esempio aprire una nuova finestra del browser, o controllare la compilazione di un modulo segnalando eventuali errori prima che i dati vengano spediti al server. Ci permette anche di avere un'interazione con l'utente: ad esempio, possiamo far sì che quando il mouse passa su una determinata immagine, tale immagine si modifichi. Per svolgere tutti questi compiti, JavaScript deve essere eseguito sul sistema dell'utente: per questo il codice JavaScript viene spedito al browser insieme al codice HTML. Quindi l'utente ha la possibilità di visualizzarlo, contrariamente a ciò che accade con PHP. Abbiamo citato alcune utili funzioni svolte da JavaScript sul browser dell'utente: PHP, essendo eseguito sul server, non è in grado di svolgere direttamente queste funzioni. Ma attenzione: questo non significa che non sia in grado ugualmente di controllarle! Infatti PHP svolge principalmente la funzione di 'creare' il codice della pagina che viene spedita all'utente: di conseguenza, così come può creare codice HTML, allo stesso modo può creare codice JavaScript. Questo significa che PHP ci può permettere, ad esempio, di decidere se ad un utente dobbiamo spedire il codice JavaScript che apre una nuova finestra, oppure no. In pratica, quindi, lavorando sul lato server abbiamo il controllo anche del lato client. Rimane un ultimo dettaglio da svelare: come fa il server a sapere quando una pagina contiene codice PHP che deve essere eseguito prima dell'invio al browser? Semplice: si basa sull'estensione delle pagine richieste. Nell'esempio che abbiamo visto prima, pagina1 aveva l'estensione .html, mentre pagina2 aveva l'estensione .php: sulla base di questo, il server sa che nel secondo caso deve eseguire PHP, mentre nel primo può spedire il file così com'è. In realtà il server deve essere istruito per poter fare ciò: generalmente gli si dice di eseguire PHP per le pagine che hanno estensione .php. È possibile comunque assegnargli qualsiasi altra estensione (fino a qualche anno fa veniva utilizzata phtml, anche se ormai la pratica è caduta in disuso). Si possono utilizzare anche le estensioni standard .htm e .html, ma ciò significherebbe chiamare PHP per tutte le pagine richieste, anche se non contengono codice PHP: questo rallenterebbe inutilmente il lavoro del server e dunque è meglio evitarlo. PHP e l'HTML PHP è un linguaggio la cui funzione fondamentale è quella di produrre codice HTML, che è quello dal quale sono formate le pagine web. Ma, poichè PHP è un linguaggio di programmazione, abbiamo la possibilità di analizzare diverse situazioni (l'input degli utenti, i dati contenuti in un database) e di decidere, di conseguenza, di produrre codice HTML condizionato ai risultati dell'elaborazione. Questo è, in parole povere, il Web dinamico. Come abbiamo visto precedentemente, quando il server riceve una richiesta per una pagina PHP, la fa analizzare dall'interprete del linguaggio, il quale restituisce un file contenente solo il codice che deve essere inviato al browser (in linea di massima HTML, ma può esserci anche codice JavaScript, fogli di stile CSS o qualunque altro contenuto fruibile da un browser, come immagini e documenti Pdf). Detto questo, come avviene la produzione di codice HTML? La prima cosa da sapere è come fa l'interprete PHP a discernere quale porzione di un file contiene codice da elaborare e quale codice da restituire solamente all'utente. Questa fase di riconoscimento è molto importante, dato che permette a PHP di essere incluso all'interno di normale codice HTML in modo da renderne dinamica la creazione. Il codice PHP deve essere compreso fra appositi tag di apertura e di chiusura, che sono i seguenti: <?php //tag di apertura ?> //tag di chiusura (le due slash “//” identificano l’inizio di un commento) Tutto ciò che è contenuto fra questi tag deve corrispondere alle regole sintattiche del PHP, ed è codice che sarà eseguito dall'interprete (lato server) e non sarà inviato direttamente al browser (lato client). Per generare l'output da inviare al browser attraverso codice PHP viene normalmente utilizzato il costrutto echo. Vediamo un semplice esempio, composto da codice HTML e codice PHP (il codice PHP è evidenziato in grassetto): <html> <head> <title> <?php echo "Pagina di prova PHP"; ?> </title> </head> <body> <?php echo "Buona giornata!"; ?> </body> </html> Questo banalissimo codice produrrà un file HTML il cui contenuto sarà semplicemente: <html> <head> <title> Pagina di prova PHP </title> </head> <body> Buona giornata! </body> </html> E quindi l'utente vedrà sul suo browser la riga "Buona giornata!". Il titolo della pagina sarà invece “Pagina di prova PHP”. La sintassi del PHP prevede che il punto e virgola debba obbligatoriamente chiudere ogni istruzione. Ricordiamoci quindi di metterlo sempre, con qualche eccezione che vedremo più avanti. Da quanto abbiamo detto finora emerge una realtà molto importante: chi vuole avvicinarsi al PHP deve già avere una conoscenza approfondita di HTML e di tutto quanto può far parte di una pagina web (si consiglia per questo di leggere le nostre Guide all'HTML, al JavaScript, e ai CSS). Questo perchè lo scopo principale di PHP è proprio la produzione di questi codici La sintassi del PHP PHP necessita di una coppia di tag per l'apertura e la chiusura del codice contenuto in un file richiesto da un Web Server. Si tratta dei tag <?php ...codice php... ?> I commenti. Sono possibili diverse soluzioni per inserire commenti all’interno del codice php: <?php echo “ciao”; // stampa la parola ciao [commento in stile C++, sempre a fine riga, senza chiusura] echo /* funzione per la stampa di codice */ “<br />” [stile C, con apertura e chiusura] ?> Tutto ciò che noi inseriamo nei commenti verrà ignorato dall’interprete che andrà ad elaborare il codice. Le variabili. Possiamo immaginare una variabile come una specie di contenitore alla quale associamo un nome all'interno del quale viene conservato il valore che ci interessa che può cambiare di volta in volta. All’interno del programma potremo richiamare il contenitore indicandone unicamente il nome così da poter ottenere il suo contenuto che può variare (..variabile). In PHP possiamo scegliere il nome delle variabili usando lettere, numeri e underscore (_). Il primo carattere del nome non può essere un numero. Dobbiamo inoltre ricordarci che il nome delle variabili è sensibile all'uso delle maiuscole e delle minuscole. Nello script PHP il nome delle variabili è preceduto dal simbolo del dollaro ($). PHP, a differenza di molti altri linguaggi, non richiede che le variabili vengano dichiarate prima del loro uso. <?php $a = 5; //assegna alla variabile “a” il valore 5 echo $a; //stamperà la varaibile a, quindi 5 ?> Con le variabili possiamo eseguire somme, sottrazioni, moltiplicazioni ecc: <?php $a = 74; $b = 29; $risultato = $a + $b; echo $risultato; //stamperà il risultato di a+b ?> I tipi di dato. Come abbiamo detto in php non è necessario dichiarare le variabili. Possiamo dunque inserire qualsiasi contenuto al suo interno seguendo i seguenti criteri: <?php $vero = true; //valore booleano, non sono necessari gli apici $falso = false; $int1 = 129; //numeri interi, non sono necessari gli apici $int2 = -715; $int3 = 5 * 8; //$int3 vale 40 $vm1 = 4.153; // equivale a 4,153 $vm2 = 3.2e5; // equivale a 3,2 * 10^5, cioè 320.000 $vm3 = 4E-8; // equivale a 4 * 10^-8, cioè 4/100.000.000 = 0,00000004 $frase = “oggi c’è il sole”; //stringhe, sono obbligatori gli apici “ o ‘ di apertura e chiusura $frase = ‘oggi piove’; ?> Da ricordare che l’uso degli apici è obbligatorio anche se stampiamo delle frasi: echo “ciao”; Per utilizzare apici all’interno di stringhe aperte dallo stesso apice: echo “Disse \“no \” e scappai”; Prima dell’apice da inserire nel testo utilizzare lo slash \, stamperà : disse “no” e me ne andai $frase = “Disse \“no \” e me ne andai”; Gli operatori aritmetici Gli operatori sono un altro degli elementi di base di qualsiasi linguaggio di programmazione, in quanto ci consentono non solo di effettuare le tradizionali operazioni aritmetiche, ma più in generale di manipolare il contenuto delle nostre variabili. Il più classico e conosciuto degli operatori è quello di assegnazione: $nome = “Pippo”; /*il simbolo = assegna alla variabile che sta alla sua destra il valore che sta alla sua sinistra*/ Operazioni aritmetiche: $a $b $c $d $e = = = = = 3 5 9 8 7 + * / % 7; 2; 6; 2; 4; //addizione //sottrazione //moltiplicazione //divisione //modulo altri casi: $a = $a + 10; //il valore di $a aumenta di 10 $a++; ++$a; //incrementa di 1 a $a--; --$a; //decrementa di 1 a Gli operatori di confronto Anche php, come tutti i linguaggi di programmazione, può determinare se due valori messi a confronto da una condizione restituiscono un valore vero o falso (booleano: true, false) == : uguale (NB: l’uguale si ripete due volte!!) != : diverso > : maggiore >= : maggiore o uguale < : minore <= : minore o uguale Potremo dunque mettere a confronto due variabili, una variabile e una stringa o un numero, ed eseguire operazioni diverse a seconda che una determinata condizione sia vera o falsa. if ($età > 13) { echo “puoi passare”; } //se la tua età è maggiore di 13 anni puoi passare. La sintassi per le condizioni IF in php è la seguente: if (condizione1) { azione1 } //se la condizione1 è vera allora eseguirà azione1 elseif (condizione2) { azione2 } //se la condizione1 è falsa e condizione2 è vera eseguirà azione1 else { azione3 } //se le condizioni 1 e 2 sono false eseguirà azione3 E’ possibile utilizzare unicamente IF, senza ELSE, IF ed ELSE, senza ELSEIF a seconda delle necessità. E’ anche possibile concatenare più condizioni utilizzando dei connettivi logici. Per esempio per tradurre in php la seguente frase “se ti chiami Alfredo e suoni la chitarra allora puoi accedere.”: if (($nome == “Alfredo”) && ($suoni == true)) { “puoi accedere”; } Da notare: l’uso della parentesi che racchiude le due condizioni, l’uso dell’operatore && per tradurre “e”. Altre situzioni: “se ti chiami Alfredo o suoni la chitarra o hai meno di 20 anni allora puoi accedere.” if (($nome == “Alfredo”) || ($suoni == true) || ($canti == true)) { “puoi accedere”; } da notare l’uso di || per tradurre “o”. Attraverso questa sintassi possiamo porre qualsiasi condizione seguendo le regole della logica proposizionale. I cicli. Per quanto riguarda i cicli rimando alla lezione “I cicli” di HTML.it: http://php.html.it/guide/lezione/2650/i-cicli/ Un ciclo ci permette di eseguire in maniera ripetitiva una determinata operazione finché una determinata condizione è vera o falsa. Accenno unicamente il ciclo WHILE, più utilizzato e facile da comprendere: $k = 1; while ($k <= 10) { $multipli = 5 * $k; echo $multipli.”<br />”; $k++; } Traduciamo questo codice in italiano: Assegnamo a K il valore 1. Eseguiamo la moltiplicazione di 5 per K e stampiamo il risultato. Incrementiamo il valore di K di 1, eseguiamo di nuovo la moltiplicazione di 5 per K e stampiamo il risultato. Tutto ciò si ripete finchè K non raggiunge il valore 10. Cosa succederà? Verranno stampate tutte le moltiplicazioni 5 x K con K minore di 10 e quindi 5x1, 5x2, 5x3 …. 5x10: i multipli di 5! Le funzioni. Una delle caratteristiche principali di php è la possibilità di gestire le funzioni. Il vantaggio di una funzione è paragonabile a quella di una macro: è possibile cioè eseguire una stessa operazione (per esempio il MCD di 3 numeri) più volte in diversi punti del codice senza necessariamente dover riscrivere tutto il codice dell’operazione ma semplicemente richiamando il nome della funzione nella quale è contenuto l’insieme delle operazioni. Vediamo un esempio: function il_maggiore($num1, $num2, $num3) { if (($num1 > $num2) && ($num1 > $num3) ) return $num1 //se elseif (($num2 > $num1) && ($num1 > $num2) ) return $num2 elseif (($num3 > $num1) && ($num1 > $num2) ) return $num3 } num1 è maggiore di num2 e num3 allora num1 è il maggiore Questa funzione restituisce (return) il valore maggiore tra tre numeri inseriti (num1, num2, num3). Nelle operazioni all’interno della funzione, come si vede dal codice, possiamo richiamare le variabili num1, num2, num3 che vengono assegnate quando noi andremo ad utilizzare la funzione: <?php echo il_maggiore(10, 2, 3); richiama la funzione il_maggiore che restituirà il massimo dei tre valori inseriti. ?> Ovviamente potremo modificare a piacere i tre valori ma non potremo utilizzarne di più o di meno! Non potremo cioè inserire 10 numeri il_maggiore(10, 23, 42, 43, 12, 2, ecc) e 2 il_maggiore(23, 21), ma potremo solo inserire il numero di valori dichiarato nella funzione: function il_maggiore($num1, $num2, $num3) //sono dichiarate 3 variabili e dunque potremo usare tre valori. Sono a disposizione inoltre moltissime funzioni predefinite (come time, che restituisce l’ora). Per maggiori info rimando alla guida di html.it. http://php.html.it/guide/lezione/2657/le-funzioni-in-php-gestire-le-variabili/ http://php.html.it/guide/lezione/2658/le-funzioni-in-php-gestire-le-stringhe/ http://php.html.it/guide/lezione/2660/le-funzioni-in-php-gestire-le-date/ La pagina dinamica: come inviare richieste al server. La principale peculiarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti. Questa possibilità si materializza attraverso i meccanismi che permettono agli utenti, oltre che di richiedere una pagina ad un web server, anche di specificare determinati parametri che saranno utilizzati dallo script PHP per determinare quali contenuti la pagina dovrà mostrare. In alcuni casi, i dati che devono essere trasmessi allo script sono piuttosto numerosi: pensiamo ad esempio ad un modulo di registrazione per utenti, nel quale vengono indicati nome, cognome, indirizzo, telefono, casella e-mail ed altri dati personali. In questo caso lo script, dopo averli ricevuti, andrà a salvarli in database. Vedremo ora come il PHP riceve dati dall'utente. Esistono due sistemi per passare dati ad uno script php: il metodo GET e il metodo POST. Il metodo GET consiste nell'accodare i dati all'indirizzo della pagina richiesta, facendo seguire il nome della pagina da un punto interrogativo e dalle coppie nome/valore dei dati che ci interessano. Nome e valore sono separati da un segno di uguale. Le diverse coppie nome/valore sono separate dal segno '&'. Quindi, immaginando di avere il risultato di un volo in partenza da Venezia e arrivo a Barcellona per l’8 giugno: il link che andremo a scrivere sarà: volo.php?partenza=Venezia&arrivo=Barcellona$data=080607 Il server alla quale è pervenuta tale richiesta elaborerà il codice php, interrogherà a sua volta un database e restituirà i risultati. All’interno del codice php potremo richiamare i valori partenza, arrivo, data, anteponendo ad esse $, esse infatti non sono altro che variabili dichiarate automaticamente dal php attraverso $_GET[‘nomevariabile’] Un’alternativa per inviare dati al server è quello di utilizzare il metodo POST nei normali form per la creazione di moduli. Se vogliamo inviare una mail ondine dovremo produrre un modulo: Destinatario Testo mail INVIA Questo modulo verrà tradotto in html inserendo la funzione POST e action: <form action="mail.php" method="post"> <input type="text" name="destinatario"> <input type="text” name="testomail”> <input type="submit" name="submit" value="invia"> </form> Inserendo method=”post”, e action=”volo.php”, una volta che premiamo il tasto INVIA (submit) invieremo a mail.php tutte le variabili identificate con il nome dell’input (destinatario e testomail) con il valore che noi andremo a scrivere dentro al singolo campo del modulo. A differenza del precedente metodo qui non otterremo un indirizzo del tipo [email protected]&testomail=blablabla… perché tutte le variabili verranno nascoste ed inviate senza che possano essere visualizzate nella barra degli indirizzi. Questo metodo viene utilizzato solitamente per moduli da compilare (per iscriversi ad un blog per esempio), per effettuare ricerche, per inviare mail, testi ecc. Le variabili $_SERVER Quando ci colleghiamo ad una qualsiasi pagina web il nostro browser (Internet Explorer, Firefox) invia di nascosto al server alcune informazioni relative al nostro software: sistema operativo utilizzato, risoluzione, lingua, ecc. Tutte queste informazioni vengono trasformate dal server in delle variabili che possono essere richiamate nel codice php. Vediamo la lista di queste variabili: $_SERVER['HTTP_REFERER'] : restituisce l’indirizzo (url) di provenienza. Possiamo quindi determinare l’indirizzo della pagina dalla quale l’utente proviene. Utile per creare statistiche: salvando tutti gli indirizzi di provenienza in un database, per esempio, potremo sapere in che percentuale la nostra utenza si suddivide. Potremo così sapere se accedono da google, da altri siti, direttamente senza passare da altre pagine, ecc. $_SERVER['REQUEST_TIME'] : restituisce l’ora esatta in cui lo script viene eseguito. Disponibile solo dalla versione 5.1 di php. $_SERVER['HTTP_ACCEPT_LANGUAGE'] : restituisce la lingua corrente utilizzata dal nostro browser. Utile per siti multi-lingua: potremo adattare una pagina automaticamente a seconda della provenienza dell’utente. $_SERVER['HTTP_USER_AGENT'] : restituisce una stringa dalla quale possiamo determinare il programma utilizzato per accedere alla nostra pagina. Possiamo così fare una statistica dei programmi utilizzati per visualizzare il nostro sito (Firefox, Explorer, Safari, Opera ecc) ma anche sapere quando un BOT (i programmino dei motori di ricerca che girano per la rete alla ricerca di contenuti) visita una nostra pagina. Un esempio: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Possiamo anche determinare il sistema operativo utilizzato. Ve ne sono molte altre ma meno utili. Rimando alla reference guide del php in www.php.net dove potete trovare tutto ciò che volete sul php (molte pagine sono anche tradotte in italiano). Il database: MYSQL Fin’ora il php sembrerebbe un linguaggio estremamente potente e versatile: è effettivamente un linguaggio paragonabile ai più complessi C o C++ (dalla versione php 5 c’è il pieno supporto per la programmazione ad oggetti) ma a cui puoi avere accesso attraverso internet. Inoltre il codice non ha bisogno di essere compilato poiché è il server stesso che lo interpreta ogni volta. Ma se non introduciamo l’uso di un database l’uso che ne possiamo fare è estremamente ridotto. Possiamo eseguire operazioni, anche complesse, ma non avendo la possibilità alcuna di salvare i nostri risultati la cosa risulta abbastanza limitativa. I database vengono appunto incontro a questo inconveniente. Sono dei server, separati rispetto all’host che stiamo utilizzando come spazio web, che utilizzano un protocollo particolare, e nella quale possiamo salvare dati in particolari tabelle. Queste tabelle possono essere elaborate, incrociate, eseguendo direttamente operazioni dal php. CLIENT SERVER http Database MYSQL Il server http, dove sono contenuti i nostri codici php, può collegarsi ad un database, inserire, ritirare o modificare informazioni e restituire dei risultati al client. E tutto questo lo possiamo fare tramite il php. Possiamo quindi per esempio gestire un servizio di news ad inserimento ed aggiornamento automatico. Il client (utente) vuole inserire una news. Compila un form (modulo html) in creanews.php, attraverso il metodo POST il browser invierà i dati al server dov’è contenuta la pagina php, per esempio inseriscinews.php: il codice php di inseriscinews.php provvederà ad inserire all’interno del database la news. Creando queste due pagine (creanews.php, dove c’è il modulo da compilare, e inseriscinews.php, dove il server andrà a salvare i dati ricevuti da creanews nel database) qualsiasi utente potrà creare delle news. Passiamo alla loro visualizzazione. L’utente, lato client, vuole leggere tutte le news presenti. Si collegherà quindi a legginews.php. All’interno del codice ci saranno le istruzioni necessarie affinché il server si colleghi al database mysql, richieda tutte le news, e le stampi nella pagina. Possiamo così avere automaticamente tutte le news stampate nella pagina. Creando questi 3 file e avendo a disposizione un database mysql, potremo inserire e leggere infinite news. Se nel database inseriamo per esempio anche la data di creazione della news potremo interrogare il database richiedendo solo le news scritte negli ultimi 10 giorni, o tutte le news che contengano la parola “astronauta”, o tutte le news scritte da un determinato utente. Un database funziona per tabelle. Ogni database può contenere centinaia di tabelle con dati diversi che possono, volendo, essere incrociati. Per quello che vogliamo realizzare (inserimento di news) abbiamo unicamente bisogno di una tabella. Vediamola: ID 1 2 3 Autore DylanDog Paperino Rai News Data 02/feb/07 03/feb/07 06feb/07 Oggetto Incubo Paperone? Scoop Testo Ricordi? quando, secondo te, avevo fatto qualcosa di male, mi rinchiu… Zio Paperone alzò gli occhi al soffitto, e sospirò ma si può lavorare… Ciccio litiga con Nonna papera la quale vorrebbe licenziarlo per aver… Questa è una classica tabella che possiamo trovare in un database mysql per la gestione di news. ID, Autore, Oggetto, Testo, Data sono i titoli di ogni colonna ai quali faremo riferimento per richiamare le news. Un’altra tabella, con solo due colonne, possiamo averla per esempio gestire le statistiche del sito: Statistica Pagine Visitate Accessi singoli … Contatore 5643 456 … Vediamo ora come possiamo modificare queste tabelle all’interno del codice php per aggiungerci dei dati. Essendo il database mysql un server separato da quello che utilizziamo per eseguire codice php perché utilizza un protocollo differente dovremo prima connetterci, inserendo l’indirizzo IP dell’host, il nome utente e la password relativa al server. Assegneremo quindi ad una variabile un valore particolare che identifica la connessione ad un server mysql: <?php $db = mysql_connect("nomehost","nomeutente","password"); … ?> Ogni server mysql può contenere più database, dovremo quindi selezionare il nome del database che vogliamo: <?php $db = mysql_connect("nomehost","nomeutente","password"); mysql_select_db("nomedatabase"); … ?> Tutte queste informazioni (nomehost, nomeutente ecc) vengono date da chi ci fornisce il servizio. Ora siamo collegati al nostro database e possiamo fare ciò che vogliamo. La gestione del database può esser effettuata attraverso un tool, chiamato phpMyAdmin, che ci permette di modificare e creare le tabelle. Per iniziare ad inserire le news dovremo quindi creare questa tabella, e lo possiamo fare su phpMyAdmin, solitamente servizio messo a disposizione dal fornitore del servizio. Nel creare la tabella dovremo specificare il contenuto di ogni colonna, che essa sia una stringa, un valore intero, e ci dovremo comportare come fossero variabili da dichiarare. Quello che vogliamo fare ora, invece che gestire news, è gestire dei commenti che ogni studente può inserire riguardanti la cogestione di questi giorni: il concetto è lo stesso, ma invece che news, sono commenti. Per quello che vogliamo fare dovremo creare una tabella con 4 colonne: id, che identifica il numero del commento (campo fondamentale per poterle poi richiamare), autore, testo del commento, data di creazione del commento. Abbiamo chiamato la tabella “commenti” I campi li abbiamo nominati “id”, “testo”, “autore”, “data”. Per inserire un commento dovremo utilizzare la seguente sintassi: dopo esserci connessi al server mysql (vedi sopra) possiamo inserire all’interno del codice php la query: mysql_query("INSERT INTO nometabella (campo1, campo2, campo3….) VALUES ('valore1’, ‘valore2’, ‘valore3’); ", $db); NB: valore1, valore2 ecc che siano esse stringhe o variabili devono essere sempre tra apici. Dopo l’inserimento della query dovremo inserire la variabile $db, che se guardate sopra, identifica la connessione a quel determinato server MySql. Quindi: mysql_query("INSERT INTO commenti (autore, testo, data) VALUES ('$autore', '$testo', $time); ", $db); le variabili autore e testo possono provenire da una pagina precedente, inviate, per esempio, tramite il metodo POST. A $time viene assegnato il valore time() [ $time = time(); ], ora corrente espressa in numero di secondo passati dal primo gennaio del 1970 (?). ID, non inserito all’interno dei campi, è un campo particolare che si autoincrementa man mano che inseriamo nuovi commenti. Fin’ora abbiamo visto come inserire un commento. Per leggere tutti i commenti dovremo creare invece un nuovo file, riconnetterci al server mysql, ed eseguire la seguente richiesta: <?php $db = mysql_connect("nomehost","nomeutente","password"); mysql_select_db("nomedatabase"); $risultato = mysql_query("SELECT * FROM commenti ", $db); //seleziona tutti i dati contenuti nella tabella “commenti” ?> Più complesso è ora capire come stampare tutti i commenti. La cosa può essere fatta sfruttando un ciclo while e una particolare funzione di php per gestire le tabelle mysql: Ad ogni ciclo alla variabile $row, che è un array di valori con tutti i campi della tabella commenti, verranno assegnati i valori di una determinata riga della tabella: while ($row = mysql_fetch_array($risultato)) { echo “Commento numero “.$row[id]”.”: “.$row[autore]:”<br />; } Questo ciclo si ripete per tutte le righe contenute nella nostra tabella. Attraverso la variabile $row possiamo all’interno del ciclo richiamare i singoli campi (autore, testo ecc). Per farlo dovremo inserire all’interno delle parentesi quadre il nome del campo: $row[testo], $row[autore] ecc. Conoscendo l’html sarà possibile creare strutture più complesse, come tabelle e altre strutture. Alla fine quindi: <?php $db = mysql_connect("nomehost","nomeutente","password"); mysql_select_db("nomedatabase"); $risultato = mysql_query("SELECT * FROM commenti ", $db); //seleziona tutti i dati contenuti nella tabella “commenti” while ($row = mysql_fetch_array($risultato)) { echo “Commento numero “.$row[id]”.”: “.$row[autore]:”<br />; //stampa tutti i commenti inseriti nella tabella } ?> MySql ha un vastissimo campo di applicazione, e quello esposto qui è solo una minima punta di un iceberg. Fate riferimento alle guide di html.it per avere maggiori dettagli sull’utilizzo dei database.