Sei sulla pagina 1di 22

Cos' PHP?

Fino a qualche anno fa il web era formato da un certo numero di pagine statiche, ossia HTNL puro, incapaci di aggiornare automaticamente i
propri contenuti o consentire al visitatore di interagire con la pagina stessa.

L'evoluzione del web, culminata nell'introduzione della dinamicita della pagina, ha avuto come protagonisti i linguaggi cosiddetti "lato
server" (piu avanti spiegheremo il significato di questo termine) che hanno dato quel qualcosa che ancora mancava in internet e dato la
possibilita di sviluppi che fino a qualche anno fa erano impensati.
!l PHP dunque un linguaggio di programmazione (definito anche linguaggio di scripting) utilizzato per lo sviluppo di pagine web dinamiche,
uno dei piu recenti in questo campo.

!l PHP nasce a meta del 199+ e da allora il suo utilizzo andato via via aumentando (grazie anche alla sua filosofia free) ed oggi vanta
qualcosa come oltre 250.000 siti che implementano questo linguaggio.
Grazie al PHP (e a tutti gli altri linguaggi "lato server") possibile consentire agli utenti di interagire con un ampio database, farli muovere in
un negozio virtuale, prenotare online un biglietto aereo e cos via.


Guide: Lista generale { Guida di base Php


Funzionamento del PHP: lato client, lato server


La differenza tra lato client e lato server sta tutta nel modo e da chi viene interpretata una pagina Web quando essa viene caricata.

Una breve descrizione del funzionamento del PHP puo senza dubbio aiutarci a capire questa differenza:

quando un server Web predisposto per il PHP riceve una richiesta dal browser di un client iniziano una serie di operazioni: !l server:

1) Legge ed individua la pagina sul server.
2)Esegue le istruzioni PHP contenute all'interno della pagina ed esegue tutti i comandi PHP.
3) Rimanda la pagina risultante al Browser.

Un esempio pratico potrebbe essere quello di una pagina in PHP che si prefigge di leggere una riga di un qualsiasi database, il server Web
esegue ed ottiene la riga dal database ed invia il tutto al browser del client generando codice HTNL.

Per questo motivo nella pagina risultante non si puo vedere nessuna traccia del codice PHP, esso stato gia interpretato e "trasformato" in
HTNL dall'interprete ( il PHP, a differenza di linguaggi come il C o il C++ un linguaggio interpretato e non compilato ).

Come fa il server a capire quando una pagina contiene del codice PHP? Nolto semplice, dal formato della pagina.

Ogni pagina che contiene PHP deve avere un formato opportuno ( .php o .php3 o .php+ ), piu avanti vedremo come nel file di configurazione
di Apache vi sia una riga che indica al server stesso come trattare questo tipo di pagine.





Perch scegliere PHP?


Come abbiamo visto nella prima lezione il PHP non l'unico linguaggio interpretato presente nel mondo Web con cui si possono eseguire
pagine dinamiche, perch dunque scegliere questo linguaggio per soddisfare le proprie esigenze?
varie risposte possono essere date: in primo luogo PHP un linguaggio molto semplice da utilizzare, a cominciare dalla sintassi derivata
direttamente da veri linguaggi di programmazione come CfC++, Perl, Java.
!n secondo luogo, nonostante esso sia un linguaggio interpretato puo vantare prestazioni notevoli ulteriormente migliorate nella versione +.
Terzo, il PHP un linguaggio molto flessibile che ci consente di fare davvero tutto, dalla creazione di immagini alla manipolazione e creazione
di documenti in pdf, dalla gestione dei cookies alla elaborazione dei form HTNL e il supporto di molteplici tipologie di database.

Pagina 1 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht


Forse la vera forza del PHP sta senz'altro nella gestione dei database, con poche righe di codice possibile accedere qualsiasi database,
estrapolare i dati che ci interessano e inserirli nella pagina Web.
Un altro punto a favore del PHP la sua natura OpenSource, quindi gratuita. !nfine possiamo far rilevare l'alta portabilita del PHP; esso gira su
tutti in principali Web server ed in linea di massima non dobbiamo apportare nessuna modifica al codice quando lo spostiamo da un Web
server ad un altro ( la differenza tra le piattaforme Nicrosoft e quelle LinuxfUnix ).





Installazione di php4 e Apache


L'installazione sotto Linux anch'essa molto semplice (a mio parere piu semplice dell'installazione sotto Win32). Per chi fosse interessato ad
installare PHP e Apache su sistemi Windows rimandiamo alla guida Php in locale su Windows disponibile su questo stesso CD-RON.

!niziamo con lo scaricare i sorgenti dai rispettivi siti ( www.apache.org , www.php.net ).
Avremo dunque i sue file php-4.0.4pl1.tar.gz e apache_1.3.20.tar.gz.
Questi pacchetti contengono i file sorgente dei due programmi, prima del loro utilizzo dobbiamo compilare i vari file, assicuratevi di aver
installato il compilatore del CfC++.
Scompattiamo i due file nella nostra directory personale ( ad esempio in froot ): gunzip file php-+.0.+pl1.tar.gz ; tar xvf php-+.0.+pl1.tar.gz ;
stessa cosa per Apache: gunzip apache_1.3.20.tar.gz ; tar xvf apache_1.3.20.tar.gz
Dopo queste semplici operazioni avremo due nuove cartelle, apache_1.3.20 e php-+.0.+pl1.
Prima di cominciare la compilazione e l'installazione vera e propria alcune premesse sono doverose:

- per installare questi due pacchetti dovete avere i permessi di amministratore ( ossia accedere al sistema come "root" );
- installeremo il php direttemente all'interno dell'Apache e non come modulo;
- Se avete un pc datato abbiate un pochino di pazienza e non interrompete mai la compilazione una volta iniziata;
- Tutte queste operazioni devono essere eseguite dalla riga di comando;

Cominciamo: entriamo nella cartella dell'apache e scriviamo:


Attendiamo che il file di configurazione crei il Nakefile.
Andiamo ora alla cartella del php e scriviamo:


Quando il makefile stato creato scriviamo:


e


Se l'operazione di compilazione non da nessun errore dovreste aver installato con successo il PHP.

Ora occorre tornare nella cartella dei sorgenti di apache per ultimare la compilazione del Web server, anche qui scriviamo:


dopo aver riconfigurato Apache possiamo passare alla sua compilazione ed installazione:


Alla fine della compilazione ( se tutto andato bene ) dovreste avere un messaggio di successo.

Fate partire Apache entrando nella sua sottocartella "bin" e digitando:
./conf1gue -pef1x="pafh/1n/cu1/vog11amo/1nsfa11ae/apache" |1nv1o]
./conf1gue -W1fh-apache="pafh-de1-sogenf1-d1-apache" -enab1e-fack-vas-
pef1x=pafh/1n/cu1/vog11amo/1nsfa11ae/php |1nv1o]
make |1nv1o]
make 1nsfa11 |1nv1o]
./conf1gue -enab1e-fack-vas |1nv1o]
make |1nv1o]
make 1nsfa11 |1nv1o]
Pagina 2 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht






vi consiglio di copiare questo file ( apachectl ) nella vostra directory "fbin" in modo da poter far partire l'apache da qualsiasi posizione
all'interno di Linux.



./apachecf1 sfaf


Configuriamo PHP attraverso il php.ini


Prima di proseguire il nostro viaggio nell'immenso mondo del PHP occorre fermarsi un attimo per descrivere il funzionamento del file che lo
configura: php.ini.

Attraverso questo file potete personalizzare alcune importanti impostazioni o abilitarefdisabilitare molte funzioni del PHP.
!n questa lezione descriveremo solo le voci piu importanti del file lasciando a voi il compito di esplorare le altre sezioni presenti quando avrete
una maggiore dimestichezza con il linguaggio.
La prima voce che troviamo "Language Options",
nella prossima lezione spiegheremo il significato e l'uso di questa parte.
Altra parte molto interessante quella intitolata "Resource Limits".
Nella prima voce possiamo settare il numero di secondi per l'expired di uno script ( 30 secondi di default ), nella seconda voce potete scegliere
la quantita di memoria RAN da riservare al PHP.
Nella parte successiva, "Error Handing and logging", potete personalizzare i messaggi di errore in caso di sbagli nel codice.
vi consiglio di lasciare tutto com' per ora, man mano che capirete gli sbagli che farete durante la scrittura del codice potete personalizzare i
messaggi d'errore.
Nella sezione "Paths e Directories" ci sono varie voci molto interessanti da personalizzare: doc_roor a La cartella che contiene le pagine in php.
extension_dir a la directory in cui si trovano le estensioni per altri servizi del PHP ( solo per Win32 ).

Nella sezione "File Upload" potete settare tutti i valori per l'upload dei file direttamente dalle pagine web: File Upload a Settato su "ON"
permette l'upload dei file , diversamente per vietare questa possibilita scrivere "OFF".

Upload_tmp_dir setta la cartella in cui riversare i file che arrivano dall'esterno, lasciate questo valore vuoto se volete settare all'interno dello
script il nome di questa cartella.

Upload_max_filesize setta la grandezza massima dei file permessa nell'upload in mega. Per tutti coloro che hanno installato PHP sotto
Win32 nella sezione "Windows Extension" si possono abilitarefdisabilitare i file dll che regolano alcuni servizi.
Troverete all'interno dell'elenco i file per abilitare l'!NAP, la manipolazionef creazione dei pdf, la manipolazione delle gif e vari altri servizi.
Per abilitare il servizio occorre cancellare il punto e virgola iniziale, per disabilitarlo aggiungere il punto e virgola all'inizio.
Nel php.ini sono presenti vari altri parametri: gestione della posta; direttive per mysql; direttive per msql; gestione dei cookies; gestione dei
log; Consiglio inizialmente di lasciare inalterato questo file ( pena il non funzionamento del PHP ) e di modificare certe voci solo dopo una
discreta conoscenza del linguaggio.
Nelle lezioni dedicate al NySQL vi elenchero le voci che potete modificare per rendere ancora piu efficiente questo servizio.





Sintassi generale del linguaggio


Affinch l'interprete PHP riesca a distinguere all'interno del codice il linguaggio da interpretare ed eseguire ( PHP ) dall'HTNL occorre utilizzare
dei TAG particolari:
vediamo un piccolo esempio:

Pagina 3 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht


Queste righe di codice stamperanno in una tabella la parola Ciao". !n rosso possiamo distinguere il codice PHP delimitato dai tag <?php e ?>.
L'interprete PHP sa che tutto cio che si trova all'interno di questi delimitatori deve essere interpretato ed eseguito.
Tutto cio che si trova al di fuori dei tag PHP viene normalmente eseguito dal browser.
Per tutti coloro che intendono avvicinarsi al mondo del PHP comunque indispensabile una ottima conoscenza dell'HTNL in quanto, una volta
che lo script viene interpretato, il PHP restituisce semplice codice HTNL.
Esiste anche la possibilita di utilizzare altri tag per distinguere il codice dall'html:


Questa sintassi molto simile alla precedente ma il suo uso deve essere abilitato all'interno del PHP3.ini.
Nella sezione Language Option" dovete modificare il parametro short_open_tag" ed inserire On".


Questi tag sono attivi di default e possono risultare molto utili in quegli editor HTNL visuali che non conoscono le estensioni PHP.


Questa la sintassi utilizzata dall'ASP e deve essere attivata per poter essere utilizzata. Sempre nel PHP3.ini nella sezione Language Option"
dovete modificare il parametro asp_tags" su On".
Altra regola fondamentale che voglio accennarvi ( ma che riprenderemo piu volte nel corso della guida ) il segno di fine comando composto
dalle ;".
Uno degli errori piu diffusi per tutti coloro che si avvicinano per la prima volta al PHP la dimenticanza del segno di fine comando che,
generando un errore, non fa concludere l'esecuzione della pagina.

Anche in presenza di errori di questo tipo ( chiamati errori di sintassi ) il PHP ci viene incontro fornendoci un determinato messaggio di errore.
Se trovate un "parse error" molto probabilmente avete fatto un errore di sintassi come quello della dimenticanza del ; alla fine dell'istruzione.



<fab1e>
<f>
<fd>

<?php p1nf C1ao ?>
</fd>
</f>
</fab1e>
<? .. ?>
<5c1pf 1anguage=php ...</sc1pf>
<x ... x>


I commenti e la loro importanza


vi chiederete perch iniziamo la trattazione del linguaggio proprio parlando dei commenti.
Semplicemente perch credo che siano importantissimi, sia per chi inizia a programmare, sia per i programmatori esperti.
! commenti rendono il codice piu leggibile e modificabile, anche dopo tempo. ! commenti non vengono eseguiti dall'interprete per cui non
risparmiatevi in quanto una riga in piu non cambiera la velocita di esecuzione dello script e nello stesso tempo vi aiuta a seguire il codice passo
passo in tutte le operazioni che eseguite.
!l PHP supporta vari tipi di commenti:

quelli in stile C++:


commento in PHP


commenti in stile C:


Commento in PHP

//
1
/"
Pagina 4 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht




ed i commenti in stile Perl:




"/
#


Approfondimento: Variabili dinamiche


!l PHP pemette vari utilizzi per quanto riguarda le variabili, nelle prossime lezioni parleremo degli array mentre in questa lezione introduciamo
le variabili dinamiche.
Partiamo dall'assegnazione tradizionale di una variabile:


Poniamo ora il caso di avere l'esigenza di creare una nuova variabile che abbia come nome il valore della variabile sopra assegnata
( $variabile ).
E' possibile fare questo utilizzando le variabili dinamiche, scriveremo:


Con questa operazione il PHP esegue diverse operazioni: interpreta $$variabile partendo dalla parte interna dell'espressione ( $variabile ) ed in
questo modo crea una nuova variabile il cui nome uguale a "Ciao" ed il valore uguale a "Nondo".
Nel PHP si possono annidare le variabili all'interno di altre variabili fino a livelli infiniti ma vivamente consigliato non spingersi oltre il secondo
livello per non rendere il codice illeggibile ad altre persone oltre che a noi stessi.



$va1ab11e = "C1ao"
$$va1ab11e = "mondo"


Operatori


Per spiegare cosa sono gli operatori ed il loro utilizzo occorre introdurre alcuni nuovi termini che senz'altro molti di voi gia hanno visto in campo
matematico.
!n una espressione aritmetica 3 + 5 i numeri 3 e 5 sono detti operandi mentre il segno + l'operatore.
Gli operatori sono dei segni che ci permettono di svolgere le principali funzioni all'interno dei programmi PHP ( in tutti i linguaggi di
programmazione sono presenti gli operatori ).
Per esempio, il segno = ci permette di attribuire un valore ad una stringa come abbiamo visto negli esempi delle lezioni precedenti, ( operatore
di assegnamento ) oppure il segno + ci permette di sommare due o piu numeri e cos via.
Nel PHP esistono vari tipi di operatori, vi forniamo di seguito un breve elenco che sara oggetto di studio e approfondimento in tutte le nostre
altre lezioni.

Operatori Aritmetici:
Sono gli operatori piu semplici che ci permettono di svolgere le operazioni matematiche all'interno degli script.


Operatori di confronto
$a + $b// { + } La somma d1 $a e $b
$a - $b// { - } La soffaz1one fa $a e $b
$a " $b// { " } l1 podoffo d1 $a e $b
$a / $b// { /} l1 appofo d1 $a e $b
$a x $b// { x } l1 esfo de11a d1v1s1one d1 $a e $b
Pagina 5 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht


Gli operatori di confronto sono quelli che consentono di mettere in relazione tra loro due o piu espressioni:


Confronta l'uguaglianza del valore tra $a e $b ( stesso valore );


( != ) $a e $b sono diversi;


( < ) $a minore di $b;


( <= ) $a minore o uguale di $b;


( > ) $a maggiore di $b;


( => ) $a maggiore o uguale di $b;

Utilizzeremo e spiegheremo nella pratica gli operatori di confronto quando affronteremo il controllo del flusso e le espressioni condizionali, in
quella stessa sede introdurremo anche gli operatori logici che ci permettono di unire piu condizioni.



$a == $b { == }
$a != $b
$a < $b
$a <= $b
$a > $b
$a => $b


Controllo del flusso: nozioni generali


Fino a questa lezione ci siamo occupati delle caratteristiche generali del PHP. Abbiamo visto le variabili, gli operatori in generale ed alcune altre
piccole regole su cui si basa il linguaggio.
Tutte le nozioni viste sinora sono basilari per iniziare a scrivere qualche semplice script ma senza il controllo del flusso non potremo mai
rendere una pagina veramente dinamica.
vi chiederete, cosa significa controllare il flusso?
Ebbene, per rispondere a questa domanda occorre sapere che l'interpretazione e la codifica del PHP avviene seguendo un preciso ordine
generale, dall'alto verso il basso e da sinistra verso destra ( nello stesso modo in cui voi state leggendo questa lezione ).
!n molti casi ( molto spesso ) abbiamo bisogno di controllare questa interpretazione e dirigere il flusso a nostro piacere.
Supponiamo che si voglia eseguire un comando solo se si verifica una certa condizione oppure ripetere un comando finch noi lo vogliamo e
tante altre azioni.
Tutte queste operazioni richiedono un controllo che va sotto il nome appunto di controllo del flusso e man mano che leggerete le prossime
lezioni vi accorgerete quanto questo controllo sia utile per realizzare pagine realmente dinamiche.





Controllo del flusso: if


Tutte le varie formule che troverete all'interno delle lezioni sul controllo del flusso vengono definiti costrutti.
!l costrutto if permette di eseguire delle determinate operazioni solo se si verificano determinate condizioni.
vediamo un piccolo esempio pratico.
Pagina 6 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht
Poniamo il caso di voler confrontare due variabili, solo se queste due variabili sono uguali stamperemo a video il loro valore, scrivere cos:


Prima di commentare il nostro piccolo esempio vediamo di vedere la struttura del costrutto if:


Potremo quindi commentare l'esempio pratico in questo modo:
Se ( la variabile $a uguale alla variabile $b ) allora {
Stampami a video il valore della variabile $a e $b
)
!l costrutto if risulta molto semplice a parte qualche nuova regola; come potete notare non bisogna inserire alla fine della parentesi graffa di
chiusara il segno di fine istruzioni in quanto il costrutto if non una vera istruzione ma solo uno strumento di controllo alle istruzioni inserite al
suo interno.
Na cosa succede se $a e $b fossero state diverse?
La risposta alquanto semplice, poich la condizione non risulta vera il codice compreso nelle parentesi graffe non verra eseguito.
!l costrutto if ci offre delle ottime varianti per controllare ancora piu il nostro codice, il costrutto else :
vediamo un altro esempio:


Tradotto nella nostra lingua: se ( if ) $a $b sono uguali allora stampa ( print ) a video la frase " ! valori $a e $b sono uguali" altrimenti
( else ) stampa ( print ) a video la frase " ! valori $a e $b sono diversi".
!l costrutto else quindi ci consente di eseguire un secondo blocco di istruzioni nel caso la condizione risulti falsa.
Esistono molte altre opportunita con il costrutto if, supponiamo di avere molte condizioni da eseguire una dietro l'altra.
Supponiamo di voler stabilire se, sempre date due variabili $a e $b, $a maggiore, minore o uguale a $b, potremo scrivere in questo modo:


Questo metodo senz'altro funziona ma troppo macchinoso e porterebbe a grosse difficolta qualora le condizioni risultassero piu di tre. !n
questo caso il PHP ci viene incontro con un'altra vaiante : il costrutto elseif:
vi propongo la soluzione:


!n questo modo abbiamo utilizzato un nuovo costrutto che ci ha permesso di unire i tre cicli if visti poco sopra.
Sempre traducendo nella nostra lingua avremo che :
se ( if ) $a maggiore di $b stamperemo ( print ) a video $a maggiore di $b"
altrimenti se ( elseif ) $a minore di $b stamperemo ( print ) a video $a minore di $b"
altrimenti se ( elseif ) $a uguale di $b stamperemo ( print ) a video $a uguale di $b"
!l ciclo if forse uno dei costrutti piu utilizzati all'interno di qualsiasi script in PHP.
Nel suo uso date particolare attenzione alla apertura e chiusura delle parentesi graffe, molti programmatori utilizzano un piccolo trucco per
evitare questa dimenticanza, aprire e chiudere subito le parentesi e scrivere l'istruzione al loro interno successivamente.

<?php
$a=5 $b=5
1f{ $a == $b} {
p1nf l1 va1oe d1 a ugua1e a $a
p1nf l1 va1oe d1 b ugua1e a $b
}
?>
1f {cond1z1one} {
b1occo-1sfuz1on1 da esegu1e ne1 caso 1a nosfa 1sfuz1on1 1su1f1 vea.
}
<?php
$a=5
$b=5
1f { $a == $b} {
p1nf l va1o1 $a e $b sono ugua11
} e1se {
p1nf l va1o1 $a e $b sono d1ves1
}
?>
lf {$a<$b} {
p1nf $a magg1oe d1 $b
}

lf {$a>$b} {
p1nf $a m1noe d1 $b
}

lf {$a==$b} {
p1nf $a ugua1e d1 $b
}
lf {$a<$b} { p1nf $a magg1oe d1 $b
}
e1se1f {$a>$b} { p1nf $a m1noe d1 $b
} e1se1f {$a == $b} { p1nf $a ugua1e d1 $b
}
Pagina 7 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht






Controllo del flusso: while


Nolto spesso, in alcune pagine vi l'esigenza di ripetere l'esecuzione di determinate funzioni fino a quando non si verifica una determinata
condizione.
! due costrutti che vedremo in questa e nella prossima lezione servono a questo scopo e vengono chiamati costrutti di iterazione, in questo
capitolo inizieremo con il costrutto while.
Se avete gia studiato il costrutto if non avrete senz'altro problemi ad assimilare la semantica del costrutto while in quanto presentano molte
somiglianze:


Traducendo while nel nostro linguaggio potremo definirlo cos: finch una determinata condizione non diventa vera esegui le istruzioni
comprese all'interno delle parentesi graffe.
!l costrutto while utilizzato soprattutto nella navigazione degli array ( che vedremo nelle prossime lezioni ) ma anche in moltissime altre
occasioni.
A scopo puramente didattico vediamo come possiamo ricavarci la tabellina del 2 con il costrutto while:


comodo no?
L'output di questo semplicissimo programma sara: 2 + 6 8 10 12 1+ 16 18 20.
!nutile dire che questo esempio stato fatto solo per farvi capire il funzionamento del while, vedremo script piu complessi quando
analizzeremo Nysql e l'estrapolazione dei dati da un database.
Anche nel costrutto prestate particolare attenzione alla chiusura delle parentesi graffe ed assicuratevi che il ciclo non diventi infinito.
Per il costrutto while esiste una piccola variante che si differenzia da quella vista sopra per la modalita di esecuzione delle istruzioni comprese
tra parentesi graffe.
Nella sintassi tradizionale prima viene valutata la condizione e solo se vera viene eseguito il blocco istruzioni, nella variante dofwhile invece:


viene prima eseguito un blocco istruzioni e poi viene valutata l'istruzione, per i restanti cicli il funzionamento identico a quello del costrutto
tradizionale.



Wh11e{ cond1z1one } {
lsfuz1on1 da esegu1e
}
<?php
// def1n1sco una va1ab11e d1 comodo che ch1ameemo $a che appesenfea uno de1
// due memb1 de11a mo1f1p11caz1one { 1`a1fo 11 2 }
// po1ch 1a fabe111na pafe da1 numeo 1
$a = 1
// 1nfoduc1amo 11 cosfuffo Wh11e
Wh11e { $a != 10 } {
// vog11o sapee 1a fabe111na de1 2 f1no a 10
/" fadoffo saa cos1: f1nch { Wh11e } $a d1veso { != } da 10{ qu1nd1 f1nch 1a cond1z1one fa
paenfes1 1su1fea vea } esegu1 1`opeaz1one che saa "/
p1nf { $a " 2 }
// p1ma d1 usc1e da1 cosfuffo Wh11e 1ncemenf1amo d1 una un1fa 1a va1ab11e $a a1f1menf1
// 1ncoeemo ne1 p1 fequenfe eoe ne11`uso d1 quesfo c1c1o, oss1a un g1o 1nf1n1fo
// che f1n1a so1o dopo 11 f1meouf de1 PhP
// Ne1 cosfuffo Wh11e, f1nch $a d1veso da 10 esegu1a sempe 1`1sfuz1one
// che avefe 1nse1fo ne11e paenfes1 gaffe, una vo1fa che $a saa ugua1e a 10 s1
// usc1a da1 c1c1o e 1o sc1pf conf1nuea ad esegu1e 1e 1sfuz1on1 pesenf1 dopo
$a++
// l1 ++ un a1fo opeafoe de1 PhP, quesfo una foma abbev1afa de1 c1ass1co:
// $a = $a + 1
} ?>
do
{
b1occo-1sfuz1on1
}
Wh11e { cond1z1one }

Pagina 8 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht


Controllo del flusso: for


Un' altro ciclo per effettuare una ripezione il costrutto for. La sua sintassi quasi uguale a quella del while a parte la modalita di
funzionamento che presenta alcune interessanti varianti:


!l costrutto for si differenzia dal costrutto whil per via del fatto che il for viene utilizzato quando noi conosciamo il numero di ripetizioni da
eseguire.
!l for ha un funzionamento particolare, come potete voi stessi notare le condizioni tra parentesi sono 3 e non una come nel ciclo while.
Analiticamente puo essere spiegato in questo modo: per prima cosa viene valutata la condizione1 ( una solo volta ), generalmente questa
prima condizione una espressione, da qui inizia l'iterazione vera e propria: viene valutata la condizione 2, se falsa si esce dal ciclio, se vera si
esegue il blocco istruzioni.
Al termine di ogni operazione viene infine valutata la condizione3.
Per non creare troppa confusione per coloro che per la prima volta si trovano di fronte ad un ciclo di iterazione for vi ripropongo l'esempio fatto
con il while per la tabellina del 2.
Un confronto diretto tra questi due costrutti vi fara senz'altro aprrezzare maggiormente le differenze tra questi cicli di ripetizione:


Come detto sopra: viene prima ( una solo volta ) valutata la condizione1 ( $a = 1 ), dopo parte l'iterazione e viene valutata la condizione2, se
$a minore di 10 si eseguono le istruzioni altrimenti si esce dal ciclo.
!noltre alla fine di ogni ripetizione viene valutata la condizione 3 che nel nostro caso incremente la variabile $a di 1 unita.



fo { cond1z1one1, cond1z1one2,cond1z1one3 } {
b1occo-1sfuz1on1
}
<?php
fo {$a = 1 $a < 10 $a++ } {
p1nf { $a " 2 }
?>


Gli array


Non poteva non mancare in questa nostra guida una trattazione particolareggiata sugli array o vettori.
Ho voluto parlarli di queste variabili appositamente dopo le lezioni sul controllo del flusso perch per poter utilizzare gli array occorre avere una
certa dimestichezza con i costrutti while e for.
Questo non significa che gli array non possano essere utilizzati senza questi costrutti ma raramente incontrerete degli array senza trovare il
while o il for.
Cos' un array? Un array una variabile che contiene piu valori. Ecco un piccolo esempio:


Con questa riga di codice abbiamo appena creato un array ( $colori ), il quale non altro che una variabile con piu valori al suo interno.
Potremmo a questo punto chiederci, come facciamo a visualizzare i valori della variabile $colori?
Per rispondere a questa domando occorre entrare ancora piu in profondita e dire che nel PHP esistono due tipi di array: gli array ad indice
numerico e gli array associativi.
Nel nostro caso l'array $colori un array ad indice numerico poich il PHP assegna un numero univoco ai valori dell'array in base al loro
inserimento.
Per cui:
$colori[0] sara uguale a rosso"
$colori[1] sara uguale a verde"
$colori[2] sara uguale a blu"
e cos via se avessimo altri valori all'interno dell'array.

Ricordate che il primo valore nel PHP sempre lo 0.
Nel PHP l'utilizzo dell'array molto semplice in quanto non occorre dichiarare preventivamente quanti elementi saranno contenuti al suo
interno ma anzi possibile aggiungere elementi anche durante l'esecuzione dello script. volendo aggiungere un + elemento all'interno del
nostro array $colori basterebbe scrivere:


$co1o1 = aay {osso, vede, b1u}
$co1o1|]= v1o1a
Pagina 9 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht

!l PHP accodera in automatico il valore viola agli altri presenti nell'array e possiamo visualizzare il suo valore scrivendo:


Concludiamo il discorso sugli array ad indice numerico fornendo un piccolo esempio di come poter scorrere gli elementi contenuti all'interno di
un array, impiegheremo il costrutto for:


L'output di questo script sara: rosso , verde, blu, viola . Per quanto riguarda invece gli array associativi il discorso si semplifica ulteriormente
perch in questo caso siamo noi a scegliere il nome dell'indice dei valori presenti all'interno dell'array.
Utilizzando l'esempio dei colori potremo scrivere in questo modo il nostro array associativo:


e cos via..
!n questo caso per visualizzare il secondo colore ci bastera rischiare l'indice che noi stessi abbiamo attribuito al secondo valore, ossia:


L'output sara: verde.

Gli array, man mano che faremo degli script sempre piu complessi fungeranno da veri e propri magazzini per i nostri dati.
Pensate alla realizzazione di una rubrica personale, invece di definire una variabile per ogni voce della rubrica potremo semplicemente fare un
array associativo che le comprenda tutte e dopo maneggiare i dati attraverso gli indici che noi stessi abbiamo attribuito alle varie voci.
Ricordate che in PHP un array puo contenere vari tipi di dato nello stesso array: lettere, numeri reali, numeri in virgola mobile ecc. ecc.
!l PHP gestisce le stringhe di caratteri come veri e propri array ad indice numerico; se noi scriviamo:


potremo raggiungere qualsiasi singolo carattere contenuto nella variabile $stringa.
Per cui:

$stringa[0] sara uguale al carattere !
$stringa[1] sara uguale al carattere !
$stringa[2] sara uguale al carattere spazio"
e cos via fino alla fine della stringa.

Queste funzioni sono molto utili per eseguire il parsine di una stringa che potrete approfondire in lezioni piu complesse.



p1nf $co1o1|3]
<?php
// v1sua11zzeemo 1 va1o1 de11`aay $co1o1 pecedenfemenfe ceafo
$numeoe1emenf1 = counf{$co1o1}
// 1a funz1one counf confa 11 numeo d1 e1emenf1 pesenf1 a11`1nfeno d1 un aay
fo {$a = 0 $a< $numeoe1emenf1 $a++} {
p1nf $co1o1|$a]
// 1n1z1a1menfe $a saa ugua1e a 0, qu1nd1 v1sua11zzeemo 11 va1oe d1 $co1o1|0], po1
// $co1o1|1] e cos1 d1 segu1fo f1nch non a1veemo a11a f1ne de11`aay
}
?>
$co1o1|p1moco1oe] = osso
$co1o1|secondoco1oe] = vede
p1nf $co1o1|secondoco1oe]
$sf1nga = l1 mondo be11o


Personalizziamo il codice: le funzioni


!n determinati script complessi ( Forum, mailing list ) vengono compiute varie volte le stesse operazioni.
La semplice connessione ad un database costituisce un operazione che va ripetuta in ogni pagina ed ogni qual volta dobbiamo fare un
operazione sulle nostre tabelle.
Le funzioni ci aiutano ad evitare questi inutili sprechi di tempo fornendoci il modo di personalizzare il codice con delle funzioni fatte da noi.

Gia nel PHP ci sono varie funzioni che possiamo utilizzare per gli scopi piu comuni, ad esempio la funzione strlen() calcola quanti caratteri sono
presenti in una stringa, la funzione time() calcola l'ora e cos via..
Una funzione puo essere definita come un comando per effettuare una operazione: se $a contiene la stringa !l mondo bello" la funzione
( comando ) strlen($a) ci fornira il numero di caratteri della stringa contenuta in $a.
Pagina 10 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht

Tutti i comandi, una volta impartiti devono restituirci qualcosa e nell'esempio sopra riportato la risposta dello script sara 16.
!l PHP ci offre delle funzioni di carattere generale ma nel contempo ci permette di poter creare delle nostre funzioni.
Poniamo che per ipotesi io debba fare in continuazione la somma di due numeri e visualizzare il risultato. Nel modo tradizionale dovrei fare in
questo modo:


Certo lo script non molto lungo ma provate ad immaginare operazioni piu complesse e piu laboriose e scoprirete subito il vantaggio di poter
creare delle vostre funzioni.
La nostra funzione sara cos:


Una volta dichiarata la funzione per eseguire la somma di due numeri e visualizzare il risultato sara: somma(5,5); l'output del programma sara
10.
Come potete notare abbiamo creato una funzione che identica a quella vista poco sopra (strlen). Esaminiamo la sintassi della funzione: con la
parola function diciamo all'interprete PHP che stiamo creando una nuova funzione, subito dopo function deve essere definito il nome della
funzione ( nel nostro caso somma ) che verra poi utilizzato per richiamare la funzione stessa all'interno del nostro programma.
Dopo il nome seguono le parentesi tonde ( obbligatorie ), al loro interno dobbiamo inserire le variabili da passare alla funzione in modo che
possa eseguire su di esse le istruzioni che abbiamo inserito tra le parentesi graffe.
Attenzione, mentre le parentesi tonde sono obbligatorie, non obbligatorio inserire delle variabili da passare alla funzione in quanto magari
la funzione stessa che ha la funzione ( scusate il gioco di parole ) di creare altre variabili.
Prendete ad esempio una funzione per la generazione di un numero random compreso tra 10 e 20, scriveremo:


Questa funzione non neccessita di nessuna variabile esterna ma l'abbiamo costruita solo per generare a sua volta una variabile.
!l comando return indica alla funzione di restituire il valore che noi vogliamo che ci restituisca, in questo caso $c.
Capisco che all'inizio la pratica di creare nuove funzioni potra senz'altro risultare complessa ma sara un utilissimo strumento per programmi. La
logica delle funzioni personalizzate stimola la programmazione modulare ( ogni funzione uguale ad un modulo ) in cui ogni problema viene
suddiviso in problemi piu piccoli per poi assemblare il tutto.
Un'altro indiscutibile vantaggio delle funzione che potete utilizzarle in tutti i vostri programmi qualora abbiate bisogno di risolvere determinati
problemi.



<?php
$a = 5
$b = 5
$c = $a + $b
p1nf $c
?>
funcf1on somma {$a,$b} {
$c = $a + $b
p1nf $c
}
<?php
funcf1on andom {} {
$a = and{10,20}
efun $a
}
?>


Premessa a Mysql


Nysql un database relazionale open source.
Prima di spiegare le varie caratteristiche di Nysql occorre anzitutto spiegare cos' un database e perch viene utilizzato nelle appicazioni web.

Utilizzando la fantasia potremo paragonare i database ad una stanza piena di schedari. !n altre parole un database ci aiuta a tenere ordinati i
nostri dati e poterli raggiungere in ogni momento e da qualsiasi parte.
! database naturalmente non vengono utilizzati solo in ambito web ma oggi in ogni azienda troviamo svariati database per organizzare
fatture,ordini,ecc.
Per il nostro scopo ( costruire pagine web dinamiche ) i database ci aiutano ad organizzare i tanti dati che possiamo raccogliere ( si pensi ad
una mailing list o un forum ) oppure per ordinare quello che vogliamo esporre ( si pensi ad un sito di e-commerce ).
Perch PHP e Nysql?
Pagina 11 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht

Nysql un database molto veloce e professionale. Consente il salvataggio di grandi quantita di dati e l'accesso contemporaneo di molti utenti
( 101 ).
!l PHP contiene al suo interno numerose funzioni per la connessione dei database Nysql e per questo motivo che questa accoppiata sta
( sopratutto negli ultimi anni ) avendo un successo enorme.
Nel corso delle nostre lezioni sulla copia Nysql-PHP vedremo come iniziare a scrivere i nostri dati all'interno del database Nysql e come inserire
i dati presenti nel database all'interno delle nostre pagine.

Prima di iniziare una affermazione d'obbligo.
Nolto spesso ( all'inizio ) si confonde SQL con Nysql.
SQL non una tipologia di database ma il linguaggio utilizzato per connettersi ad essi. Anche Nysql utilizza SQL per dialogare con il resto del
mondo. Utilizzando ancora la fantasia potremo dire che mentre Nysql rapresenta vari schedari in cui sono presenti i dati, SQL il veicolo con il
quali questi dati vengono messi nelle nostre mani.





Installazione di Mysql: Linux


!nstallare Nysql molto semplice, sia sotto win32 sia sotto Linux. Potete scaricare i pacchetti per questi due sistemi direttamente dal sito del
mysql ( www.mysql.com ).

!n Linux, una volta scompattato il pacchetto nella vostra directory ( assicuratevi sempre di essere amministratori di sistema ) non vi resta che
far partire lo script che in automatico genera il make file:



se volete installare Nysql in una directory diversa da quella di default potete scrivere:



Quando lo script finisce la configurazione automatica potete installare i file con:


e



Una volta installato inizializzate il database creando delle tabelle di sistema: spostatevi nella directory in cui avete installato Nysql, accedete
alla sottodirectory fbin ed eseguite:



!nfine non vi resta che far partire il demone del mysql digitando:



!l simbolo 8 serve per far eseguire il demone in background.
Se non ricevete errori durante l'avvio del demone Nysql stato installato ed avviato con successo nella vostra macchina. Non ci rimane che
abilitare le funzioni nel PHP per il Nysql: dobbiamo ricompilare PHP.

Andiamo nella directory dove si trovano i sorgenti del PHP e riconfiguriamo l'engine in questo modo:

./conf1gue|1nv1o]
./conf1gue --pef1x=|pecoso e nome de11a d1ecfoy 1n cu1 vo1efe 1nsfa11ae Mysq1]
make |1nv1o]
make 1nsfa11 |1nv1o]
./mysqk1nsfa11db
./safemysq1d &
./conf1gue --pef1x-use-mysq1=|d1ecfoy 1n cu1 avefe 1nsfa11afo Mysq1] |1nv1o]
Pagina 12 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht


rinstalliamo PHP scrivendo:


e




make |1nv1o]
make 1nsfa11 |1nv1o]


Installazione di Mysql: Win32


L'installazione e l'esecuzione di Nysql nei sistemi Win32 semplificata rispetto all'installazione per Linux in quanto l'eseguibile che scaricate da
www.mysql.com si occupa di installare automaticamente i file.

Terminata l'installazione ( la cartella di installazione di default c:fmysql ) per avviare mysql dovremo accedere alla sottodirectory c:fmysqlfbin
attraverso DOS e digitare quanto segue:

Da questo momento Nysql in esecuzione in Background nel sistema, per terminare l'esecuzione digitare quanto segue sempre da DOS e
sempre al'interno della cartella bin:



Nei sistemi Win32 la configurazione del PHP non va cambiata in quanto le funzioni per il Nysql vengono attivate in automatico durante
l'installazione.



sfaf mysq1d-opf --sk1p-name-eso1ve --sk1p-ganf-fab1es --1anguage=1fa11an |1nv1o]
mysq1adm1n -u oof shufdoWn


Mysql: organizzazione interna


Se non avete mai usato o visto un database questa lezione cerchera di spiegarvi in parole semplici come organizzato il database Nysql.

Come possiamo vedere dall'immagine:

Pagina 13 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht



Un database organizzato in tabelle che possono avere svariate colonne organizzate in righe.
! nostri dati vengono inseriti nei campi con una catalogazione ordinata per colonne.
!n una ipotetica Nailing List costruiremo una tabella con una colonna chiamata e-mail ed all'interno dei campi di quella colonna potremo
inserire tutti gli indirizzi dei nostri utenti.

Durante l'inserimento, se la colonna presente Nysql creera una nuova riga per ogni dato che noi inseriamo.
Naturalmente questo un piccolo esempio scolastico. Un database articolato potra avere piu tabelle organizzate in piu colonne collegate tra di
loro.

Per accedere al database, inserire i dati, modificarli e qualsiasi altra azione utilizzeremo le funzioni che PHP ci mette a disposizione nel suo
corredo di funzioni. Assieme a PHP utilizzeremo SQL che sara il linguaggio che utilizzeremo per interfacciare PHP con Nysql.

Possiamo anticipare gia da ora come deve essere organizzata una conessione al database.
Per poter prendere i dati dal nostro database occorre stabilire anzitutto una connessione con questo, pensando ancora una volta a Nysql come
una stanza contenente tutti i nostri dati quando instauriamo una connessione non stiamo facendo altro che aprire la porta di questa ipotetica
stanza.
Una volta connessi possiamo inserire,modificare,cancellare i dati, le colonne, le tabelle del database.
Quando finiamo di fare tutte le operazioni dobbiamo chiudere la connessione ed liberare le risorse del sistema per altri utenti.


Queste sono le operazioni che dobbiamo memorizzare. Da ora in poi vedremo come fare questo nella pratica.




Breve introduzione a SQL


Quasi tutti i database presenti sul mercato per comunicare con l'esterno utilizzano il linguaggio creato dalla !BN molti anni fa che va sotto il
nome di SQL.

Anche PHP per comunicare e raccogliere i dati di un database Nysql utilizza SQL. Questa lezione non vuole addentrarsi nel mondo del SQL ma
solo riassumere tutte le funzioni di questo linguaggio riguardo l'interrogazione dei database.
All'interno di html.it potete trovare una guida molto esaustiva di questo linguaggio molto semplice.

SQL raccoglie al suo interno delle istruzioni abbastanza intuitive rivolte al database che risponde alla richiesta inviando i dati:

Poniamo di avere una tabella chiamata "ordini" formata da 2 colonne denominate rispettivamente "ordini_da_eseguire" e "ordini_eseguiti":

con l'istruzione:



chiedo al database di inviarmi tutti i dati contenuti della tabella "ordini", il segno * sta per tutti.
Avrei che potuto richiedere i dati di una sola colonna specificando il nome della colonna:
5LLLC1 " IkOM od1n1esegu1f1
Pagina 14 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht




in questo modo.

Come potete notare le istruzioni sono molto semplici e concise. Prima di proseguire in questo nostro viaggio consigliamo comunque una lettura
veloce di tutti gli altri comandi SQL come:




5LLLC1 od1n1esegu1f1 IkOM od1n1
CkLA1L
AL1Lk
lN5Lk1
OkDLk 8Y
JOlN
CkO55 JOlN
klGh1 JOlN
lN1O
WhLkL


Prima Fase: connessione a Mysql


Nelle precedenti lezioni abbiamo visto come funziona un database Nysql ed abbiamo parlato delle tre fasi caratteristiche di una lettura delle
tabelle: connessione, manipolazione dati e disconnessione.
Nell' ultima lezione abbiamo invece introdotto il linguaggio da utilizzare nella fase della manipolazione dei dati.

!n questa lezione e nelle successive vedremo come unire tutti questi elementi con il nostro PHP.
Piu volte vi ho detto che PHP contiene molte funzioni specifiche per Nysql, vedremo di esaminare le piu importanti ed impareremo ad inserire
modificare i nostri dati.

La prima cosa da fare la connessione al Nysql. A questo riguardo PHP ci fornisce una funzione apposita: mysql_connect.

La sintassi della funzione di connessione la seguente:



!l nome utente e la password sono indispensabili in quanto Nysql un database molto sicuro e non si puo accedere ad esso senza aver prima
creato un account.
Se state provando Nysql in locale potete tranquillamente lasciare vuoti questi 2 campi. Se invece dovete provare i vostri script nel vostro sito
dovete richiedere lo User e la Password ai vostri amministratori di sistema. Per quanto riguarda il nome dell'host esso quasi sempre localhost,
per maggiore sicurezza potete richiedere anche questo dato ai vostri amministratori di sistema.

vediamo uno script completo per la connessione:

<?php

mysq1connecf{nomehosf,nomeufenfe,passWod}

?>
<?php

// sc1pf pe 1a conness1one a mysq1


$host = 'localhost';
$user = 'vostro_user';
$password = 'vostra_password';
mysql_connect($host,$user,$password) or die ("Non riesco a connettermi");

Pagina 15 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht


La funzione "die" ci permette di stampare a video la scritta compresa tra virgolette nel caso la connessione non vada a buon fine. Nel caso PHP
non riesca a connettersi a Nysql vedremo la scritta "Non riesco a connettermi al database", nel caso contrario vedremo la scritta "Connessione
eseguita".

Abbiamo fatto per meta la prima fase, ora per manipolare i nostri dati dobbiamo selezionare il database da utilizzare.
Nysql permette, per ogni account, illimitati database.

Se non abbiamo ancora creato nessun database dobbiamo prima crearlo e poi selezionarlo, utilizzeremo quindi varie funzioni PHP nel prossimo
script:



Con questo script abbiamo completato la fase di connessione ad un database Nysql.

Abbiamo visto due nuove funzioni PHP:



e



Notate che in ogni funzione abbiamo inserito l'istruzione die, questo ci aiuta in caso di problemi ad identificare subito il perch degli errori e la
loro risoluzione.
Nella prossima lezione analizzeremo la manipolazione dei dati.


print "Connessione eseguita";

ff fine script di connessione

?>
<?php

// sc1pf pe 1a conness1one, ceaz1one e se1ez1one d1 un dafabase
// Mysq1


// M1 conneffo a Mysq1

$hosf = 1oca1hosf
$use = vosfouse
$passWod = vosfapassWod
mysql_connect($host,$user,$password) or die ("Non riesco a connettermi");

print "Connessione eseguita";
ff Creo il database "prova"


mysql_create_db("prova")or die ("Non riesco a creare il database");


ff seleziono il database appena creato


mysql_select_db("prova") or die ("Non riesco a selezionare il database");

print "Connessione, creazione, selezione del database eseguita";

ff Fine script
?>
mysq1ceafedb{"nomedafabase"}
mysq1se1ecfdb{"nomedafabase"}

Pagina 16 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht



Manipolazione dati: lettura, inserimento


Ora che abbiamo creato la nostra tabella possiamo iniziare ad inserire i dati. Ripeto che stiamo cercando di costruire un database che
memorizzi tutti gli indirizzi e-mail di colore che si iscrivono. Nelle precedenti lezioni abbiamo costruito una tabella formata da tre colonne: la
prima che memorizza un numero identificativo per ogni dato che inseriremo, la seconda che memorizza il nome e il cognome dell'utente e la
terza serve per l'indirizzo e-mail. vediamo ora i comandi SQL e le funzioni PHP per inserire i dati.



Con questo piccolo script abbiamo inserito un nuovo indirizzo all'interno della tabella mail. Non bisogna specificare a Nysql di creare un nuovo
campo in quanto questo avviene in automatico con l'uso dell'istruzione SQL "insert into".

vi voglio riproporre la sintassi dell'istruzione !NSERT !NTO perch una delle istruzioni piu utilizzate e la piu complessa perch molto articolata:

!NSERT !NTO nome_tabella (nome_campi) values ( dati_da_inserire_nei_campi);

Notate che l'elenco dei dati presente nella seconda coppia di parentesi tonde deve corrispondere all'ordine dei campi che abbiamo inserito nella
coppia delle prime parentesi.
Ripetermo lo script tutte le volte che dobbiamo inserire un nuovo campo.

Ora che la nostra tabella contiene qualche dato possiamo leggere al suo interno per sapere quali dati ci sono al suo interno, per far questo
utilizzeremo l'istruzione SQL "SELECT":



L'istruzione SELECT chiede i dati di una riga della tabella che abbiamo selezionato nell'istruzione FRON ( nel nostro caso la tabella si chiama
mail ). Per poter utilizzare i dati che Nysql invia dobbiamo utilizzare la funzione mysql_fetch_array che crea un array associativo che ha
come indice il nome delle colonne, continuando lo script avremo che per visualizzare i dati che abbiamo estrapolato dal database scriveremo:

<?php

// sc1pf pe 1nse1e 1 daf1 ne11a fabe11a ma11
// pe comod1fa suppon1amo d1 essec1 g1a conness1 a1 dafabase



// vog11o 1nse1e 1 nuov1 1nd11zz1, sc1veemo:

mysq1quey{"1nsef 1nfo ma11 {1dufenfe, nomecognome,ma11} va1ues {1,Ma1o
koss1,ma1o0suos1fo.com}"}


// f1ne sc1pf

?>
<?php

// sc1pf pe 1eggee 1 daf1 confenuf1 1n un campo de11a fabe11a
// ma11
// pe comod1fa suppon1amo d1 essec1 g1a conness1 a1 dafabase


$daf1 = mysq1quey{"se1ecf " fom ma11"}

$aay = mysq1fefchaay{$daf1}


// f1ne sc1pf


?>
<?php

// cod1ce pe 1eggee 1 daf1 confenuf1 1n un campo


p1nf "Confenufo de11a co1onna 1dufenfe: $aay|1dufenfe] "


p1nf "Confenufo de11a co1onna nomecognome: $aay|nomecognome] "
Pagina 17 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht



Naturalmente questo script legge una riga per volta e se nella istruzione SELECT non selezionate nulla Nysql restituira i dati dell'ultima riga
inserita, diversamente potete controllare il flusso dei dati Nysql con l'istruzione WHERE:



Nella nostra lingua l'istruzione SQL risulterebbe cos organizzata:
"Seleziona (SELECT) tutto (*) dalla tabella ( FRON ) mail dove ( WHERE ) il la colonna nome_cognome uguale a Nario Rossi.

Questo script va bene nel caso dovessimo leggere solo una riga della tabella, nel caso in cui vogliamo invece leggere tutto il contenuto della
tabella dovremo aggiungere un ciclo while cos organizzato:



Con questo script finch la tabella mail non sara vuota PHP creera l'array associativo contenente i dati letti dal database.





p1nf "Confenufo de11a co1onna ma11: $aay|ma11] "

?>
<?php

// vo1endo v1sua11zzae 1 daf1 de11ufenfe Ma1o koss1 ave1 sc1ffo
// 1n quesfo modo 11sfuz1one 5qL



$daf1 = mysq1quey{"5LLLC1 " IkOM ma11 WhLkL nomecognome=Ma1o koss1"}

$aay = mysq1fefchaay{$daf1}


// f1ne sc1pf


?>
<?php

// sc1pf pe 1eggee 1 daf1 confenuf11n fuff1 1 camp1 de11a fabe11a
// ma11
// pe comod1fa suppon1amo d1 essec1 g1a conness1 a1 dafabase


$daf1 = mysq1quey{"se1ecf " fom ma11"}

Wh11e { $aay = mysq1fefchaay{$daf1}} {


p1nf "Confenufo de11a co1onna 1dufenfe: $aay|1dufenfe] "


p1nf "Confenufo de11a co1onna nomecognome: $aay|nomecognome] "


p1nf "Confenufo de11a co1onna ma11: $aay|ma11] "


}


// f1ne sc1pf


?>


Manipolazione dati


Pagina 18 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht
Le ultime importanti nozioni sulla manipolazione dei dati inseriti nel database riguardano la modifica e la cancellazione dei dati. A questo scopo,
rispetto agli script visti precedentemente riguardo l'inserimento cambiano solo le istruzioni SQL. Per la modifica utilizzeremo l'istruzione
UPDATE mentre per la cancellazione l'istruzione DELETE.

Consiglio vivamente di utilizzare queste due istruzioni con cautela per non rischiare di cancellare o modificare tutti i dati che avete inserito
all'interno della tabella.

La modifica:



L'istruzione UPDATE molto semplice, ricordate sempre di specificare il WHERE perch altrimenti la modifica verra eseguita in tutti campi della
tabella mail ( per questo consiglio l'uso con cautela ).

vediamo la sintassi dell'istruzione UPDATE:

UPDATE nome_tabella SET nome_colonna='nuovo_valore' WHERE nome_colonna='identificativo_colonna';

Nella creazione della tabella abbiamo all'inizio previsto una colonna che contiene l'dentificativo numerico del campo. Questo indice
importantissimo per le istruzioni di modifica e di cancellazione perch in questo modo ogni riga ha un numero univoco e non si rischia di
cancellarefmodificare altre righe. Utilizzando l'identificativo avremo scritto:



Nolto piu semplice e senza rischio d'errore ( pensate se ci fossero stati due Nario Rossi all'interno della tabella mail).

L'istruzione DELETE permette di cancellare un intera riga dalla tabella. Utilizzate questa istruzione con molta cautela in quanto Nysql non
chiede conferme, neanche per la cancellazione di grosse quantita di dati:



Con questo script cancelliamo tutte le righe presenti all'interno della tabella mail. Nel caso volessimo cancellare una determinata riga
<?php


// sc1pf pe 1a mod1f1ca de1 daf1 ne11a fabe11a ma11

// suppon1amo d1 essee g1a conness1 a1 dafabase


$daf1 = mysq1quey {"uPDA1L ma11 5L1 ma11=ma1o0f1sca11nef.1f WhLkL nomecognome=MAklO kO55l"}

// f1ne sc1pf



?>
<?php


// sc1pf pe 1a mod1f1ca de1 daf1 ne11a fabe11a ma11

// suppon1amo d1 essee g1a conness1 a1 dafabase


$daf1 = mysq1quey {"uPDA1L ma11 5L1 ma11=ma1o0f1sca11nef.1f WhLkL 1dufenfe=1"}

// f1ne sc1pf



?>
<?php


// sc1pf pe 1a cance11az1one d1 fuff1 1 daf1 ne11a fabe11a ma11

// suppon1amo d1 essee g1a conness1 a1 dafabase


$daf1 = mysq1quey {"DLLL1L IkOM ma11"}


// f1ne sc1pf



?>
Pagina 19 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht

inseriremo nell'istruzione SQL l'istruzione WHERE, come segue:



Questo script cancellera la riga in cui l'id_utente uguale a 1.



<?php


// sc1pf pe 1a cance11az1one d1 una 1ga ne11a fabe11a ma11

// suppon1amo d1 essee g1a conness1 a1 dafabase


$daf1 = mysq1quey {"DLLL1L IkOM ma11 Whee 1dufenfe=1"}


// f1ne sc1pf



?>


Altre funzioni PHP-Mysql


PHP contiene molte funzioni e, per non confondere troppo le idee, vi proponiamo un semplice elenco di quelle piu importantanti impegnandoci
nel breve futuro a proporvi altra guide pia approfondite solo sul Nysql:

mysql_num_rows{)
Restituisce il numero di righe interessate dall'istruzione SQL:



mysql_insert_id{)
Restituisce l'ultimo id ( se presente ) della riga interessata dall' ultima operazione di !NSERT:




mysql_drop_db
Elimina un database Nysql:

<?php

// mysq1numoWs


$daf1 = mysq1quey{"5LLLC1 " IkOM ma11"}

$numeo1ghe = mysq1numoWs{$daf1}


?>
<?php

// mysq11nsef1d


$daf1 = mysq1quey{"lN5Lk1 lN1O ma11 {1dufenfe, nomecognome, ma11 va1ues {2, Ma1o koss1,
ma1o0f1sca11nef.1f} "}

$u1f1mo1d = mysq11nsef1d{}


?>
<?php

Pagina 20 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht



mysql_list_dbs
Restituisce la lista dei database presenti nel server Nysql:



mysql_list_tables
Restituisce la lista delle tabelle presenti nel database selezionato:



Questo l'elenco delle funzioni piu usate, potete trovare l'elenco completo delle funzioni sul sito del PHP www.php.net nella sezione funzioni per
Nysql


// mysq1dopdb


mysq1dopdb{"nomedafabasedae11m1nae"}


?>
<?php

// mysq111sfdbs

$conness1one = mysq1connecf{$hosf, $use, $passWod}

mysq111sfdbs{"$conness1one"}


?>
<?php

// mysq111sffab1es


mysq111sffab1es{"nomedafabase"}


?>


Chiusura di una connessione Mysql


Una volta conclusa la fase di manipolazione dei dati sempre opportuno chiudere tutte le connessioni al server Nysql e magari liberare la
memoria occupata dai risultati della query SQL.

E' buona norma specificare sempre queste due funzioni per non caricare inutilmente il server che sta eseguendo i vostri script e dare la
possibilita a tutti gli utenti di poter accedere al database.

Com ultimo esempio vi fornisco uno script completo di connessione, manipolazione e disconnessione ad un server Nysql.

<?php



// M1 conneffo a Mysq1

$hosf = 1oca1hosf
$use = vosfouse
$passWod = vosfapassWod
mysql_connect($host,$user,$password) or die ("Non riesco a connettermi");

print "Connessione eseguita";
Pagina 21 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht


Da notare che la funzione mysql_close puo non contenere argomenti in quanto Nysql chiudera automaticamente tutte le connessioni aperte.



ff seleziono il database appena creato


mysql_select_db("mail") or die ("Non riesco a selezionare il database");

print "!l database stato selezionato";


ff visualizzo tutti i campi presenti nella tabella mail


$dati = mysql_query("select * from mail");

ff inizio il ciclo while per la visualizzazione delle righe


while ($array = mysql_fetch_array($dati) {
print "Contenuto colonna id_utente: $array[id_utente| <br>";
print "Contenuto colonna nome_cognome: $array[nome_cognome| <br>";
print "Contenuto colonna mail: $array[mail|";
)

ff libero la memoria occupata dall'istruzione SELECT

mysql_free_result($dati);

ff chiudo la connessione al server Nysql

mysql_close();


ff Fine script



?>

Pagina 22 di 22 Guida di base PhP/Mysql
23/08/2003 mhtml:file://F:\Siti%20Web\Guida%20Php-MySQL\2.Guida%20di%20base%20PhP-Mysql.mht