Spiegazioni esercizio “Gestione Tabella con PHP e MySQL foglio_di_stile.css (foglio di stile esterno) Questo file contiene: 1. la struttura generale delle quattro pagine web dinamiche: index.php, inserisci.php, modifica.php, cancella.php 2. il formato e i colori delle form utilizzate 3. il formato e i colori dei pulsanti utilizzati. Struttura delle pagine: E’ costituita dai seguenti Box Div: contenitore contenuti intestazione footer Formato, colori, caratteri …. Delle form: classe formato_form Formato e colori dei pulsanti ovali: classe fsSubmitButton Formato e colori dei pulsanti rettangolari: classe fsSubmitButton index.php (pagina web dinamica) Contiene una parte in linguaggio php e una parte in linguaggio html contenente un css interno utilizzato per definire i Box Div (tutti conglobati nella div “contenuti” del css esterno) : zona_visualizzazione inserisci modifica cancella e per definire i colori e il formato della tabella html contenente l’elenco dei dati contenuti nella tabella del database. La zona di codice php ha la funzione di: 1. stabilire una connessione con il database utilizzato, 2. preparare e eseguire la query di selezione in linguaggio sql per prelevari i dati dalla tabella del database e memorizzarli in una variabile stringa, 3. impaginare in html i risultati estratti dal DB creando un elenco tabellare Gestioene tabella con mysql e php - ultimo aggiornamento 01/06/2016 Pag. 1 4. preparare e eseguire una query di selezione in linguaggio sql per estrarre i dati (descrizione e codice) da inserire nella variabile stringa $OUT2 per realizzare una combo box che verrà utilizzata sia nella “modifica” che nella “cancellazione” 5. chiudere la connessione con il DB. La zona relativa al linguaggio HTML avrà il compito di: 1. 2. 3. 4. 5. definire l’intestazione della pagina, definire l’intestazione della tabella di visualizzazione tramite l’istruzione php: <?php print $OUT1 ?> visualizzare i dati presenti nella tabella del DB, definire la form per l’inserimento con pulsante che rimanda alla pagina “inserisci.php”, definire la form per la modifica con la rispettiva combo box di selezione descrizione e con pulsante che rimanda alla pagina “modifica.php”, 6. definire la form per la cancellazione con la rispettiva combo box di selezione descrizione e con pulsante che rimanda alla pagina “cancella.php”, 7. definire la zona footer. Query di selezione per estrarre dati da tabella: SELECT nome_tabella.campo1, nome_tabella.campo2, ……………………. nome_tabella.nome_campo FROM nome_database.nome_tabella ORDER BY …….. inserisci.php (pagina web dinamica) Contiene una parte in linguaggio php e una parte in linguaggio html contenente il css esterno utilizzato per definire i Box Div: contenitore, intestazione, contenuti e footer utilizzati per definire la struttura della pagina web. La parte in linguaggio php tramite un’istruzione IF gestisce due situazioni diverse: 1. se $daindex = 1 significa che si proviene dalla pagina index si impostano solo i valori delle variabili $azione=”inserisci.php”, $messaggio="Inserisci in Tabella", $annulla="reset" 2. se $daindex è diverso da 1 significa che si proviene dalla pagina inserisci.php si impostano i valori delle variabili: $daindex="0"; $annulla="hidden"; $messaggio="Inserimento effettuato con successo, continua...."; $azione="index.php"; poi ci si connette al database, si acquisiscono le variabili col metodo POST e si esegue la query per inserire la nuova riga nella tabella con i dati acquisiti dalla form. La parte di HTML contiene la FORM per l’inserimento dei dati. Quando si apre la form ci si posiziona sul primo campo (utilizzando la proprietà autofocus).. Gestioene tabella con mysql e php - ultimo aggiornamento 01/06/2016 Pag. 2 modifica.php (pagina web dinamica) Contiene una parte in linguaggio php e una parte in linguaggio html contenente il css esterno utilizzato per definire i Box Div: contenitore, intestazione, contenuti e footer utilizzati per definire la struttura della pagina web. La parte in linguaggio php tramite un’istruzione IF gestisce due situazioni diverse: 1. se $daindex = 1 significa che si proviene dalla pagina index e si impostano solo i valori delle variabili $azione=”modifica.php”, $messaggio="AGGIORNA", $annulla="button". Poi si acquisiscono le variabli di input con il metodo POST, ci si connette al Database, si compila nella variabile $SQL il comando SQL per leggere la riga della tabella da visualizzare (query di selezione) salvando nella variabile $Risultato il risultato del comando, con un ciclo WHILE si impaginano i risultati estratti dal Database . Query di selezione per estrarre dati da tabella: SELECT nome_tabella.campo1, nome_tabella.campo2, ……………………. nome_tabella.nome_campo_n FROM nome_database.nome_tabella WHERE codice = $nome_combo” 2. se $daindex è diverso da 1 significa che si proviene dalla pagina modifica.php si impostano i valori delle variabili: $azione=”index.php” , $messaggio=" Aggiornamento effettuato con successo, torna a elenco..."; $annulla="hidden”. Poi si acquisiscono le variabili di input, ci si connette al database, si compila nella variabile $SQL il comando SQL per aggiornare i dati nella tabella (query di aggiornamento) e infine si esegue il comando SQL utilizzando la funzione mysql_query. UPDATE nome_database.nome_tabella SET campo1 = variabile1, …………………….. Campo_ n = variabile_ n WHERE nome_tabela.codice = $nascosto ; La parte di HTML contiene la FORM per la visualizzare i dati tetti dal Database e consentire di modificarli. Gestioene tabella con mysql e php - ultimo aggiornamento 01/06/2016 Pag. 3 cancella.php (pagina web dinamica) Contiene una parte in linguaggio php e una parte in linguaggio html contenente il css esterno utilizzato per definire i Box Div: contenitore, intestazione, contenuti e footer utilizzati per definire la struttura della pagina web. La parte in linguaggio php tramite un’istruzione IF gestisce due situazioni diverse: una volta acquisite le variabili di input: 1. se $daindex = 1 significa che si proviene dalla pagina index e si impostano solo i valori delle variabili $azione=”cancella.php”, $messaggio=" Conferma cancellazione ", $tipo="button", $nascosto = $nome_combo. 2. se $daindex è diverso da 1 significa che si proviene dalla pagina cancella.php si impostano i valori delle variabili: $daindex="0", $azione=”index.php” , $messaggio=" Cancellazione effettuata con successo, continua..."; $tipo="hidden”. Poi ci si connette al database, si compila nella variabile $SQL il comando SQL per cancellare i dati nella tabella (query di cancellazione) e infine si esegue il comando SQL utilizzando la funzione mysql_query. DELETE FROM nome_database.nome_tabella WHERE nome_tabella. codice = $nascosto; La parte di HTML contiene la FORM per confermare l’operazione di cancellazione e per tornare alla pagina index.php.. Principali Funzioni PHP utilizzate nel progetto: mysql_connect("nome server", "nome database", "") Questa funzione consente di connettersi ad un Database. I dati necessari alla connessione sono: indirizzo del server: bisogna specificare su quale computer è in esecuzione il server MySQL. Nella maggior parte dei casi MySQL gira sulla stessa macchina in cui è in funzione il server web (e quindi il PHP) pertanto l'indirizzo da specificare è "localhost". Se invece il server si trova su un diverso computer, raggiungibile attraverso una connessione TCP/IP, allora bisogna specificare il nome di dominio (es. sql.mioserver.it) o l'indirizzo IP (es. 162.54.23.12) della macchina che lo ospita. nome utente e password: si tratta delle credenziali che permettono al server MySQL di identificare l'utente che effettua la richiesta di connessione. Se abbiamo appena Gestioene tabella con mysql e php - ultimo aggiornamento 01/06/2016 Pag. 4 installato MySQL allora possiamo usare il nome utente "root" e per password quella specificata durante l'installazione. La funzione mysql_connect() restituisce come risultato un numero che costituisce l'identificativo di connessione MySQL in caso di successo oppure FALSE in caso contrario. E' quindi possibile verificare l'esito della connessione semplicemente controllando il risultato restituito da mysql_connect(). Se qualcosa va storto possiamo inoltre ottenere maggiori informazioni sull'accaduto utilizzando un'altra funzione,mysql_error(), che ci mostrerà un messaggio esplicativo sul problema verificatosi. Anche se tutte le connessioni ai server MySQL vengono automaticamente chiuse alla fine dell'esecuzione dello script, è buona norma chiudere la connessione esplicitamente, appena lo script ha terminato le operazioni con il database. Per farlo basta richiamare la funzione mysql_close() a cui passiamo come parametro l'identificativo di connessione ottenuto da mysql_connect(). mysql_error() Questa funzione restituisce il testo dell'errore dall'ultima funzione MySQL, oppure '' (stringa vuota) se si è verificato nessun errore. Esempio: $SessioneDb = mysql_connect("localhost", "prova", "") or die("Connessione non riuscita: " . mysql_error()); ci si connette al database “prova” e in caso di errore si visualizza il messaggio: “ Connessione non Riuscita” con il relativo codice di errore. mysql_close(identificativo_connessione) Questa funzione chiude la connessione al server MySQL associata all'identificativo di connessione specificato (variabile $SessioneDb. Se identificativo_connessione non è specificato, viene usata l'ultima connessione aperta. mysql_query($SQL, $SessioneDb) Questa funzione invia una query al database attualmente attivo sul server associato all'identificativo di connessione (variabile $sessioneDb) specificato. La stringa della query (variabile $SQL) non dovrebbe terminare con un punto e virgola. Gestioene tabella con mysql e php - ultimo aggiornamento 01/06/2016 Pag. 5 La query mysql_query() restituisce TRUE in caso di successo e FALSE in caso di errore. Un valore restituito diverso da FALSE indica che la query era lecita ed è stata eseguita dal server. Esempio: $Risultato = mysql_query($SQL, $SessioneDb) or die("Query non valida: " . mysql_error()."<br />\n".$SQL); mysql_fetch_assoc($Risultato) Restituisce un array associativo che corrisponde alla riga caricata o FALSE se non ci sono più righe. La variabile $Risultato contiene la stringa risultato della query eseguita con la funzione mysql_query. Esempio: //--Ciclo per impaginazione html dei risultati estratti dal DB, cereando elenco tabellatre-while($RigaRis=mysql_fetch_assoc($Risultato)) { $codice = $RigaRis[codice]; $descrizione = $RigaRis[descrizione]; $importo = $RigaRis[importo]; //--Emissione elemento in html, in forma di riga tabellare-$OUT1.=" <tr> <td>".$codice."</td> <td>".$descrizione."</td> <td>".$importo."&nbsp;&euro;"."</td> </tr> "; } Gestioene tabella con mysql e php - ultimo aggiornamento 01/06/2016 Pag. 6