Php e Mysql – 1 Per utilizzare le funzioni MySQL in PHP è necessario innanzitutto decommentare il riferimento alla libreria di accesso a mysql nel file php.ini (presente nella cartella di sistema): extension=php_mysql.dll Per esercitarci con php, costruiamo un semplice applicativo che consente di inserire nuovi supporti nella tabella ‘supporti’. I moduli PHP necessari sono: include/connmydb.php (effettua la connessione al database nelle altre pagine php) verifica_supporto.php (conferma dei dati inseriti) CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 form_supporto.php (raccoglie i dati) elabora_supporto.php (salva i dati nel db) 1 Php e Mysql – 2 - Connessione Concediamo i diritti di gestione del database all’utente ‘user_web’: GRANT ALL ON video_miocognome.* TO user_web@localhost IDENTIFIED BY ‘pwd_web’; Il contenuto del file ‘connmydb.php’, posto nella cartella ‘include’ accessibile da web, è il seguente: <? ?> @$link = mysql_pconnect("localhost", "user_web", "pwd_web") or die("Impossibile effettuare una connessione : " . mysql_error()); @mysql_select_db(“video_miocognome”) or die(“Impossibile selezionare un database."); CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 2 Php e Mysql – 3 - Form Nella pagina form_supporto.php troveremo, tra le altre, le istruzioni: … include("./include/connmydb.php"); … <form method='POST' action=‘verifica_supporto.php' name='dati_supporto'> … echo "<SELECT SIZE=‘1’ NAME=‘codice_film’>"; $query = "SELECT * FROM film ORDER BY titolo"; $esito = mysql_query($query) or die("Errore query : " . mysql_error()); // Esec. query $num_film = mysql_num_rows($esito); // Numero di righe estratte for ($i=0;$i<$num_film;$i++) { $codice_film=mysql_result($esito, $i, “codice_film”); // Lettura del codice $titolo=mysql_result($esito, $i, “titolo”) . “ – “ . mysql_result($esito, $i, “anno”) .; // Lettura titolo e anno echo "<OPTION VALUE='$codice_film'>$titolo</OPTION>\n"; } mysql_free_result($esito); // Azzeramento del ResultSet echo "</SELECT>"; … </form> CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 3 Php e Mysql – 4 – Verifica dati La pagina verifica_supporto.php visualizzerà i dati appena inseriti e conterrà, tra le altre, le istruzioni: … include("./include/connmydb.php"); … $query = "SELECT * FROM film WHERE codice_film=" . $_POST["codice_film"]; $esito = mysql_query($query) or die("Errore query : " . mysql_error()); // Esec. query if (!$esito||mysql_num_rows($esito)==0) { echo “Errore estraz. film, cod. : " . $_POST["codice_film"]; exit(); } $titolo = mysql_result($esito, 0, “titolo”) . " - " . mysql_result($esito, 0, “anno”); // Lettura del titolo e anno del film echo “Immissione supporto per il film:</TD>"; echo "<TD>" . $_POST[“codice_film”] . " - $titolo</TD>"; echo "<INPUT NAME=‘codice_film’ TYPE='hidden' VALUE=‘" . $_POST[" codice_film "] . “’>"; … CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 4 Php e Mysql – 5 Inserimento dati La pagina elabora_supporto.php carica i dati nel database e conterrà, tra le altre, le istruzioni: … include("./include/connmydb.php"); … $query = "INSERT INTO film VALUES (" . $_POST[“codice_supporto"]. ",’". $_POST[“tipo"]. “’,". $_POST[“codice_film"]. ",". $_POST[“quantita"]. "')"; echo "<B>Istruzione SQL eseguita: </B>$query<BR><BR>"; // Esecuzione della INSERT: @$esito = mysql_query($query) or die("Errore su INSERT: " . mysql_error()); echo "Inserimento effettuato con successo !<BR>"; … CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 5 PhpMyAdmin - 1 E’ un programma scritto in php per la gestione di database MySql via web. E’ scaricabile all’indirizzo web: http://www.phpmyadmin.net Per attivarlo è necessario: - - scompattare e copiare tutta la cartella in uno spazio web impostare i parametri di connessione di phpmyadmin nel file config.inc.php. In genere, per il localhost, è sufficiente impostare: - $cfg['PmaAbsoluteUri'] = ‘http://localhost/phpMyAdmin’; - $cfg['blowfish_secret'] = ‘passphrase_cifratura’; - $cfg['Servers'][$i]['auth_type'] = 'cookie'; (si rimanda alla manualistica per le altre forme di autenticazione) decommentare “extension=php_mbstring.dll” in php.ini (libreria necessaria per separare stringhe di caratteri multibyte) CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 6 PhpMyAdmin - 2 - eseguire lo script “scripts\create_tables_mysql_4_1_2+.sql” per creare il database di supporto per phpMyAdmin: collegarsi come root ed eseguire il comando mysql>source … NOTA: lo script crea anche l’utente pma SENZA password. Sarebbe opportuno impostare una password per pma con: SET PASSWORD FOR ‘pma'@'localhost'=PASSWORD(’password'); - aprire la console di gestione in Internet Explorer con l’indirizzo web http://localhost/phpMyAdmin/index.php NOTA: potrebbe essere necessario assegnare i diritti di lettura della cartella contenente phpMyAdmin all’utente del sistema operativo utilizzato per l’accesso via web (tipicamente IUSR… in Windows) CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 7 Esercitazione 5.1 Costruire un’applicazione web per la gestione di un negozio on line per la vendita di componenti hardware per PC tenendo presente che: - ogni visitatore del sito può effettuare ricerche di prodotti; - ogni visitatore del sito può inserire/togliere prodotti nel/dal carrello virtuale; - ogni visitatore, per poter procedere ad un acquisto, deve essere registrato ed autenticato; - il pagamento avviene tramite carta di credito il cui numero viene fornito all’atto della registrazione. Le tabelle minimali potrebbero essere: - clienti (cognome, nome, email, carta di credito, indirizzo, citta …); - citta (per semplicità non si considerano le località estere); - ordini; - dettaglio_ordini; SEGUE - carrello_dettaglio; CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 8 Esercitazione 5.1 - prodotti (prezzo unitario, quantità disponibile, categoria …); - categorie_prodotti; (ad esempio: stampanti, hard disk, monitor …). Individuare opportunamente i campi da inserire nelle varie tabelle. Ricerca dei prodotti I passi della procedura Inserimento nel carrello Conferma acquisto Autenticazione cliente (se non è stato già autenticato) Inserimento ordine CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 5 - Novembre 2005 9