REGIONE SICILIANA Progetto cofinanziato dal Piano straordinario per il lavoro in Sicilia: opportunità giovani - Priorità 3: Formazione giovani Anno Formativo 2013-2014 - Progetto Occupazione - Corso Webdesigner - Sede Trapani Scheda 40 PHP - MYSQL INTRODUZIONE MySQL, definito Oracle MySQL, è un Relational database management system, composto da un client con interfaccia a riga di comando e un server, entrambi disponibili sia per sistemi Unix o Unix-like come GNU/Linux che per Windows, anche se prevale un suo utilizzo in ambito Unix. Uno dei programmi più popolari per amministrare i database MySQL è phpMyAdmin (richiede un server web come Apache HTTP Server ed il supporto del linguaggio PHP). Si può utilizzare facilmente tramite un qualsiasi browser. CREAZIONE DI UNA TABELLA Ogni db contiene delle tabelle dove sono immagazzinati i dati. Una tabella è formata da campi (spazi virtuali in cui memorizzare ogni singolo dato) ed ogni campo ha specifiche caratteristiche, ad esempio il campo Luogo rappresenta un numero di caratteri (in genere da 25 a 30) idonei per memorizzare qualsiasi località mentre il campo Prezzo rappresenta un valore numerico con cifre decimali oppure il campo Datanascita rappresenta un certo numero di caratteri idonei per rappresentare una data del calendario. Per creare una nuova tabella basta cliccare sul link NUOVA oppure digitare Nome della tabella, numero di campi e cliccare su esegui nel riquadro Crea tabelle. Nel primo caso (click su Nuova) verrà chiesto il nome della tabella e il numero dei campi). Per il nome tabella si consiglia di indicare un nome breve, senza spazi, possibilmente (ma non è obbligatorio), utilizzando caratteri alfabetici minuscoli. Successivamente dovranno essere indicati il nome il tipo e le caratteristiche (lunghezza e valori) per ogni tipo di campo CAMPI DI TIPO NUMERICO I campi di tipo TINYINT, SMALLINT, MEDIUMINT, INT e BIGINT rappresentano numeri interi composti rispettivamente da 1, 2, 3, 4 e 8 bytes. Il TINYINT può contenere 256 valori, che vanno da -128 a +127 oppure da 0 a 255 nel caso di UNSIGNED. Allo stesso modo, SMALLINT può contenere 65536 valori, MEDIUMINT 16.777.216, INT oltre 4 miliardi, BIGINT circa 18 miliardi di miliardi. I campi di tipo FLOAT e DOUBLE rappresentano i numeri in virgola mobile. M rappresenta il numero totale di cifre rappresentate e D il numero di cifre decimali CAMPI DI TIPO STRINGA CHAR è una campo a lunghezza fissa (M) riempita con spazi a destra al momento della memorizzazione, che vengono eliminati in fase di lettura. La lunghezza prevista va da 0 a 255 caratteri. VARCHAR è una campo a lunghezza variabile; e la lunghezza massima dichiarabile è 65535 caratteri. Modulo didattico: Linguaggio HTML e Java Script Dispensa a cura del formatore: Dott. Mario Giurlanda - [email protected] - www.profmarioonline.altervista.org REGIONE SICILIANA Progetto cofinanziato dal Piano straordinario per il lavoro in Sicilia: opportunità giovani - Priorità 3: Formazione giovani Anno Formativo 2013-2014 - Progetto Occupazione - Corso Webdesigner - Sede Trapani Scheda 41 PHP - GESTIRE I DATI DI UNA TABELLA MYSQL(1) CONNESSIONE A TABELLA Per utilizzare i dati di una tabella MSQL occorre innanzitutto collegarsi al database ed, in particolare alla tabella. Per fare ciò è necessario utilizzare i seguenti comandi: $db=mysql_connect($host,$user,$password) or die ("impossibile connettersi al server"); mysql_select_db($database,$db) or die("impossibile connettersi al db"); naturalmente è necessario preventivamente definire $host,$user,$password, $database che ci sono stati forniti dal nostro provider (con ALTERVISTA e sufficiente solamente $db = mysql_connect;) DEFINIZIONE DI UNA QUERY PER LA SELEZIONE DEI DATI DA UTILIZZARE $query="select * from NOMETABELLA order by NOMECAMPO"; con questo comando (ovviamente sostituendo a NOMETABELLA e NOMECAMPO i nomi reali della tabella e del campo) si selezionano tutti i record della tebella orinati secondo il NOMECAMPO indicato. Se si omette order by NOMECAMPO i record verranno selezionati secondo l'ordine di immissione. SE si vuole un ordinamento decrescente basta indicare DESC dopo order by NOMECAMPO come ad esempio $query="select * from NOMETABELLA order by NOMECAMPO DESC"; INVIO DELLA QUERY A MYSQL $dbResult = mysql_query($query,$db); $Num = mysql_num_rows($res); ATTENZIONE: nel caso di aggiunta, modifica o cancellazione inserire $Num = mysql_affected_rows($db) (con altervista $Num = mysql_affected_rows()) Con questo codice si invia la query a MYSQL e si ottiene il numero dei record selezionati. Tale valore viene acquisito dalla variabile $Num ACQUISIZIONE DEI DATI for ($I=0; $I<$Num; $I++) { $Campo1 = mysql_result($dbResult,$I,0); $Campo2 = mysql_result($dbResult,$I,1); $Campo3 = mysql_result($dbResult,$I,2); . . . . $CampoN = mysql_result($dbResult,$I,N); COMANDI DI ELABORAZIONE DEI DATI } Con questo ciclo for si ottiene la lettura dei dati acquisiti dalla tabella MYSQL in riferimento alla query impostata in precedenza DISCONNESSIONE DALLA TABELLA mysql_close($db); Con questo comando ci si disconnette dalla tabella di MYSQL Modulo didattico: Linguaggio HTML e Java Script Dispensa a cura del formatore: Dott. Mario Giurlanda - [email protected] - www.profmarioonline.altervista.org REGIONE SICILIANA Progetto cofinanziato dal Piano straordinario per il lavoro in Sicilia: opportunità giovani - Priorità 3: Formazione giovani Anno Formativo 2013-2014 - Progetto Occupazione - Corso Webdesigner - Sede Trapani Scheda 42 PHP - GESTIRE I DATI DI UNA TABELLA MYSQL(2) INSERIRE RECORD IN UNA TABELLA Per inserire un nuovo record in una tabella MYSQL, dopo aver effettuato la connessione (scheda precedente) è necessario definire la seguente query $query="INSERT INTO NOMETABELLA (CAMPO1, CAMPO2, CAMPO3) values ($VAR1, '$VAR2', '$VAR3')"; NOMETABELLA deve essere sostituito con il nome della tabella, i nomi di campo CAMPO1, CAMPO2 CAMPO3 ecc devono essere sostituti con i nomi reali dei campi della tabella rispettando eventuali caratteri maiuscoli o minuscoli. le variabili $VAR1, $VAR2, $VAR3 ecc. devono essere sostituiti dai reali nomi delle variabili PHP che rappresentano i dati da inserire in tabella. In caso di campi numerici con è necessario delimitare la variabile con apici ($VAR1 nell'esempio) mentre per i campi di tipo stringa o data sarà necessario racchiudere le variabili fra apici ($VAR2 e $VAR3 nell'esempio). MODIFICARE I DATI DI UN RECORD IN UNA TABELLA Per modificare i dati di un record in una tabella MYSQL, dopo aver effettuato la connessione (scheda precedente) è necessario definire la seguente query $query="UPDATE NOMETABELLA SET NOMECAMPO1 = '$VAR1', NOMECAMPO2 = '$VAR2', NOMECAMPO3 = '$VAR3', WHERE (NOMECAMPO = '$VAR')"; NOMETABELLA deve essere sostituito con il nome della tabella, i nomi di i nomi di campo CAMPO1, CAMPO2 CAMPO3 ecc devono essere sostituti con i nomi reali dei campi della tabella rispettando eventuali caratteri maiuscoli o minuscoli. le variabili $VAR1, $VAR2, $VAR3 ecc. devono essere sostituiti dai reali nomi delle variabili PHP che rappresentano i dati da inserire in tabella. In caso di campi numerici con è necessario delimitare la variabile con apici ($VAR1 nell'esempio) mentre per i campi di tipo stringa o data sarà necessario racchiudere le variabili fra apici ($VAR2 e $VAR3 nell'esempio). La modifica dei dati avverrà in tutti i record in cui sia soddisfatta la condizione espressa tramite WHERE ELIMINARE UN RECORD IN UNA TABELLA Per eliminare un record in una tabella MYSQL, dopo aver effettuato la connessione (scheda precedente) è necessario definire la seguente query $query="delete from NOMETABELLA where (NOMECAMPO = '$VAR')"; Verranno eliminati tutti i record in cui sia soddisfatta la condizione espressa tramite WHERE Modulo didattico: Linguaggio HTML e Java Script Dispensa a cura del formatore: Dott. Mario Giurlanda - [email protected] - www.profmarioonline.altervista.org