1 / 71

Corso di Basi di Dati

Corso di Basi di Dati. Implementazione di WIS c on PHP & MySQL Home page del corso : http:// www.cs.unibo.it /~ difelice / dbsi /. Implementazione di WIS & PHP. Per l’implementazione di WIS , sono necessari i seguenti software: DMBS  nel nostro caso , MySQL

zelig
Download Presentation

Corso di Basi di Dati

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Corso di Basi di Dati Implementazione di WIS con PHP & MySQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

  2. Implementazione di WIS & PHP • Per l’implementazione di WIS, sononecessariiseguenti software: • DMBS nelnostrocaso, MySQL • Web server nelnostrocaso, Apache • Linguaggio scripting server-side  PHP • Pacchettiintegrati per diverse piattaforme: • LAMP • XAMP • MAMP (http://www.mamp.info)

  3. Implementazione di WIS & PHP Dopo aver installato LAMP/MAMP/XAMP, e’ necessarioavviarei server PHP/MySQL …

  4. Implementazione di WIS & PHP PHP e’ un linguaggio di scripting server-side. • Gli script PHP sonoeseguitidirettamentedall’ • interpretecontenutonel web-server (Apache). • Sicurezza Gli script sonotrasparenti al client. • Compatibilita’  Nessunproblema di compatibilita’ tra client differenti. • Accesso a risorse Gli script possonoaccedereallerisorsecontenutesul server.

  5. Implementazione di WIS & PHP Uno script PHP sipresenta come un insieme di istruzioniracchiusetra tag <?php><?>. <html> <head><title>Primo Script PHP</title></head> <body> <p> <b> Data corrente: </b> <?phpecho date("m.d.y"); ?> </p> </body> </html>

  6. Implementazione di WIS & PHP http://www.cs.unibo.it/data.php RISORSA RICHIESTA <html> <head> </head> <body> <p> <b> Data corrente: </b> <?php echo date("m.d.y"); ?> </p> </body> </html> <html> <head> </head> <body> <p> <b> Data corrente: </b> 11.21.12</p> </body> </html> SERVER-SIDE CLIENT-SIDE

  7. Implementazione di WIS & PHP • PHP e’ a tuttiglieffetti un linguaggio di programmazione ad alto livello(come C, Java, etc): • Costrutti: variabili, costrutti di selezione, iterazione, funzioni, etc • Estensioneobject-oriented • Librerie (integrazione DBMS, web-service, gestionestringhe, etc) • Gestionecomponenti per il Web(cookie, sessioni, etc)

  8. Implementazione di WIS & PHP Il comandoecho consente di inviareunastringasul browser (e solo dopostampa a video!) <html> <head></head> <body> <?php $testVariable=“<b>Salve</b>” echo $testVariable ?> </body> </html> <html> <head></head> <body> Salve </body> </html>

  9. Implementazione di WIS & PHP Il comandoecho consente di inviareunastringasul browser (e solo dopostampa a video!) <html> <head></head> <body> <?php $testVariable=“Salve” echo $testVariable ?> </body> </html> <html> <head></head> <body> Salve </body> </html>

  10. Implementazione di WIS & PHP • E’ possibileinserirecommenti in due modi: • Medianteilcarattere // (commentosusingolariga) • $testVariable=5 // Dichiarazione • Medianteilcarattere: /* (commentisupiurighe) */ • /* Dichiarazione di unavariabile • Commentosupiu’ righe */ • $testVariable=5

  11. Implementazione di WIS & PHP • PHP e’ un linguaggiodebolmentetipato. • Non e’ necessariodichiarareunavariabile prima del suoutilizzo(come inveceavviene in Java) • Unasingolavariabilepuo’ contenere un qualsiasitipo di dato. • I nomidellevariabilisonopreceduti da $. • $testVariable=5 • $testVariable=‘Tre’

  12. Implementazione di WIS & PHP Tramiteilcomandoarray, e’ possibiledefiniredegliarray, non necessariamenteomogeenei … $myarray=array(“hello”,2,3.5,”3”); echo $myarray[0]; echo $myarray[1]; E’ possibileaggiungere/modificareelementidegli array in manieradinamica: $myarray[0]=“world”; $myarray[4]=“4; $myarray[] = “newelem” // Aggiunta in coda!

  13. Implementazione di WIS & PHP Gliindicidegli array non devonoesserenecessariamenteinteri, ma possonoancheesserestringhe (array associativi). $birthdays[“Sara”]=“10/02/1982”; $birthdays[“Michele”]=“12/02/1982”; Creazione di array associativi: $birthdays=array(“Sara” => “10/02/1982”, “Michele” =>”12/02/1982”);

  14. Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: if-else Il comandoif-else consente di eseguire un certoinsieme di istruzioni se e’ soddisfattaunacertacondizione (ramo if) o un altroinsieme (ramo else) se la condizione non e’ soddisfatta. if (condizione) { … IstruzioniRamo if } else { … IstruzioniRamo else }

  15. Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: if-else Il comandoif-else consente di eseguire un certoinsieme di istruzioni se e’ soddisfattaunacertacondizione (ramo if) o un altroinsieme (ramo else) se la condizione non e’ soddisfatta. if ($name==“Marco”) { echo(“Benvenuto, Marco”); } else { echo(“Utentesconosciuto”); }

  16. Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: while Il comandowhile consente di eseguire un certoinsieme di istruzioninelmentre e’ soddisfattaunacertacondizione. while (Condizione) { … Istruzione/i da ripetere } Condizione= unaqualsiasiespressionelogico/matematica.

  17. Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: while Il comandowhile consente di eseguire un certoinsieme di istruzioninelmentre e’ soddisfattaunacertacondizione. $count=1; while ($count<=10) { // Stampo 10 valori echo($count); $count++; } echo(“Fine del ciclo”);

  18. Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: for Il comandofor consente di eseguire un certoinsieme di istruzioninelmentre e’ soddisfattaunacertacondizione. for (espressione; condizione; espressione) { … Istruzione/i da ripetere } Condizione= unaqualsiasiespressionelogico/matematica.

  19. Implementazione di WIS & PHP STRUTTURE DI CONTROLLO: for Il comandofor consente di eseguire un certoinsieme di istruzioninelmentre e’ soddisfattaunacertacondizione. for ($count=1; $count<=10; $count++) { echo($count); // Stampo 10 valori } echo(“Fine del ciclo”);

  20. Implementazione di WIS & PHP DEFINIZIONE DI FUNZIONI: function Un programma PHP puo’ includerefunzioni, chericevonoparametri in ingressoe restituiscono (eventualmente) un valore di ritorno. functionsomma($a, $b, $c) { $result=$a + $b +$c; return $result; } $val=somma(1,5,6); echo($val)

  21. Implementazione di WIS & PHP DEFINIZIONE DI FUNZIONI: function All’interno di unafunzionepossonoessere definite variabililocali. Con l’istruzioneglobalsipuo’ accedere a variabiliglobalidefinite nello script. function somma($b, $c) { global $a; result=$a+ $b +$c; return $result; } $a=10; $val=somma(5,6);

  22. Implementazione di WIS & PHP DEFINIZIONE DI FUNZIONI: function E’ possibileinvocareunafunzioneanchespecificando un numero di parametriinferiore a quelliprevistidall’intestazionedellafunzione. function f1($a, $b, $c=20) { result=$a*$b+$c; return $result; } $a=10; $b=20; $val=f1($a,$b);

  23. Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI • Esistonodue tecniche per passareparametri in ingressoad uno script PHP: • MetodoGET: I parametrisonoinseriti in appendiceallaURLdello script PHP. • MetodoPOST: I parametrisonoinviati (non in forma visibile) insiemeallarichiesta HTTP.

  24. Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodoGET Inviodeiparametrilato client: http:/www.cs.unibo.it/script.php?nome=Michele http:/www.cs.unibo.it/script.php? nome=Michele&cognome=Rossi Recuperodeiparametrilato server: (script.php) $name=$_GET[“nome”]; $lastname=$_GET[“cognome”]; $_GET e’ unavariabile di sessione di PHP contenente iparametrinell’URL (array associativo)

  25. Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodoGET Inviodeiparametrilato client: http:/www.cs.unibo.it/script.php?nome=Michele Utilizzodeiparametrilato server: (script.php) <?php $name=$_GET[“nome”]; Echo(“Benvenuto, “.$name.”!”); ?> Concatenatore di stringhe

  26. Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodoPOST Inviodeiparametrilato client: <form action=“script.php” method=“post” <div><label for=“firstname”> Nome: </label> <input type=“text” name=“firstname” id=“firstname”> </div> <div><label for=“lastname”> Cognome: </label> <input type=“text” name=“lastame” id=“firstname”> </div> <div> <input type=“submit” value=“Vai”></div> </form>

  27. Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodoPOST Recuperodeiparametrilato server: (script.php) <?php $name=$_POST[“firstname”]; $name=$_POST[“lastname”]; Echo(“Benvenuto, “$name.$lastname.”!”); ?> Vantaggirispetto al metodo GET: (i) dimensione/numerparametri; (ii) privacy

  28. Implementazione di WIS & PHP PASSAGGIO DEI PARAMETRI: metodoGET/POST Recuperodeiparametrilato server: (script.php) <?php $name=$_REQUEST[“firstname”]; $name=$_REQUEST[“lastname”]; Echo(“Benvenuto, “$name.$lastname.”!”); ?> $REQUEST_ astraedallamodalita’ di invioparametri (GET/POST).

  29. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI In PHP, e’ possibilecreareunaclasse con ilcostruttoclass. Unaclassepuo’ conteneremetodiedattributi. classmyClass { public $a=10; // Attributo public function sayHello() { echo(“Hello! ”); } }

  30. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Con ilcostruttonew, e’ possibilecreareoggetti di unacertaclasse, mentre con ilsimbolo  e’ possibileaccedere a metodi/attributi di un oggetto. $myObject=new myClass(); $myObject a = $myObjecta + 5; $myObject printHello();

  31. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Se sivuoleaccedere a metodi/attributi di un oggettoall’internodelladefinzionedellaclassestessa, e’ necessariousare la variabilethis per far riferimentoall’oggettocorrente. classmyClass { public $a=10; // Attributo public function sayHello() { echo($thisa); }}

  32. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Ogniclassepuo’ avere un costruttore (ilmetodo__construct), chepuo’ ricevereparametri in ingresso per l’inizializzazionedell’oggetto. classmyClass { public $a=10; // Attributo public function __construct($val) { $thisa = $val; } } myObject=new myClass(5);

  33. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI Unaclassepuo’ disporre di metodiedattributistatici, dichiaratiattraversoilcostruttostatic. classmyClass { public static $var=10; // Attributo public static function hello() { echo(“Salve”); } } echo myClass::$var; myClass::hello();

  34. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI • Come in altrilinguaggi ad oggetti (Java, C++, etc) anche in PHP e’ possibilecostruiregerarchie di classimediantel’ereditarieta’. • E’ inoltrepossibilelimitare la visibilita’ degliattributi/metodimediantegliindicatori: • public, private, protected

  35. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI class A { // Definizionedell’oggetto A public $a=10; public $b=20; public function get_a()) { return $thisa; } } class B extends A { // Definizionedell’oggetto B public function get_b() { return $thisb; } } $b=new B(); echo($bget_a()); echo($bget_b());

  36. Implementazione di WIS & PHP PROGRAMMAZIONE ad OGGETTI • Sfruttandol’ereditarieta’ traclassi, e’ possibile fare overriding di metodidefinitidallaclassegenitore. • Altricostrutti OOP in PHP: • Classiastratte(costruttoabstract) • Interfacce (costruttointerface) • Type Hinting (dallaversione 5 in poi …)

  37. Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poterinterfacciareuno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificaredati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestireirisultatidella query SQL

  38. Implementazione di WIS & PHP • PDO (PHP Data Object): Estensione di PHP per la connessione con un DBMS (es. MySQL). • E’ necessariocreare un oggetto PDO, specificando come parametri: • Tipo di DB (es. sql) • Hostname del server cheospitail DB • Nome del DB • Credenzialidell’utente (lato DBMS)

  39. Implementazione di WIS & PHP Esempio di connessione: $pdo=newPDO(“mysql:host=localhost;dbname=mydb”, “marco”, “mypassword”); L’istruzioneritornaun oggetto di tipo PDO cherappresenta la connessione con il DB … Chesuccede se la connessione non e’ disponibile? Vienerestituitaun’eccezione da gestire…

  40. Implementazione di WIS & PHP Esempio di connessione con try/catch: try { $pdo=new PDO(‘mysql:host=localhost; dbname=mydb’, ‘marco’,’mypasswd’); } catch(PDOException ex) { echo(“Connessione non riuscita”); exit(); }

  41. Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poterinterfacciareuno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificaredati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestireirisultatidella query SQL

  42. Implementazione di WIS & PHP Sollevareun’eccezioneogniqualvolta un oggetto PDO non riesce ad eseguireun’operazionesul DB: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Configurare la codificadeidati: $pdoexec(‘SET NAMES “utf8”’);

  43. Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poterinterfacciareuno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificaredati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestireirisultatidella query SQL

  44. Implementazione di WIS & PHP • Il comandoexecconsente di inviareuna query SQL di aggiornamento/inserimento/cancellazioneal DBMS e di eseguirla. • Input: Stringadella query SQL da eseguire • Output: Numerorigheinteressatedalla query • $sql=‘INSERT into STUDENTI VALUES (“Marco”, “Rossi”)’; // Creazionedella query in unastringa • $result=$pdoexec($sql);

  45. Implementazione di WIS & PHP • E’ necessarioutilizzaretry/catch in ogni query! • try{ • $sql=‘INSERT into STUDENTI VALUES (“Marco”, “Rossi”)’; • $result=$pdoexec($sql); • } • catch(PDOException $e) { • echo(‘Codiceerrore’.egetMesssage()); • exit(); • } • echo(‘NumeroRigheinserite:’.$result’);

  46. Implementazione di WIS & PHP • Il comandoqueryconsente di inviareuna query SQL di ricerca (SELECT) al DBMS e di eseguirla. • Input: Stringadella query SQL da eseguire. • Output: Un oggettoPDOStatementcontenente un insieme di risultatidella query SQL. • $sql=‘SELECT * FROM STUDENTI’; • $result=$pdoquery($sql);

  47. Implementazione di WIS & PHP CONNESSIONE CON UN DBMS Per poterinterfacciareuno script PHP con un DBMS, in modo da recuperare/inserire/cancellare/modificaredati da un DB, e’ necessario: Connettersi ad un DB Configurare la connessione Costruire/Eseguire la query SQL Gestireirisultatidella query SQL

  48. Implementazione di WIS & PHP • Un oggetto di tipoPDOStatemente’ un result set, contententeun elenco di tutte le righerestituitedalla query. • Il metodofetch()consente di prelevare la rigasuccessiva del result set. • Se non ci sonorighe, vienerestituitofalse (nessunaeccezionesollevata). • Ogniriga e’ un array associativo, con indicipari ad inomidegliattributidellatabellarisultato.

  49. Implementazione di WIS & PHP • Esempio di query SELECT: • try{ • $sql=‘SELECT * FROM STUDENTI’; • $result=$pdoquery($sql); • } • catch(PDOException) { …} • while($row=$resultfetch()) { • echo(‘Nome:’.$row[‘name’]); • } OggettoPDOStatement

  50. Implementazione di WIS & PHP • In alternativa, e’ possibileusareilcostruttoforeach • try{ • $sql=‘SELECT * FROM STUDENTI’; • $result=$pdoquery($sql); • } • catch(PDOException) { …} • foreach($result as $row) { • echo(‘Nome:’.$row[‘name’]); • }

More Related