Per accedir a bases de dades des de PHP tenim bàsicament dos tipus de llibreries:
mysqli_connect
, etc.oci_connect
, etc.pgsql_connect
, etc.Recursos:
Amb funcions particulars mysqli_ :
Amb PDO:
PDO amb seguretat:
Per crear i importar la base de dades d'exemple pots consultar SQL creacio. Utilitzarem la BBDD d'exemple «World» que hi ha a la pàgina oficial de MySQL. La podeu descarregar d'aquí (n'hi ha d'altres):
https://dev.mysql.com/doc/index-other.html
Examineu a fons i proveu aquest codi:
<html> <head> <title>Exemple de lectura de dades a MySQL</title> <style> body{ } table,td { border: 1px solid black; border-spacing: 0px; } </style> </head> <body> <h1>Exemple de lectura de dades a MySQL</h1> <?php # (1.1) Connectem a MySQL (host,usuari,contrassenya) $conn = mysqli_connect('localhost','enric','enric123'); # (1.2) Triem la base de dades amb la que treballarem mysqli_select_db($conn, 'world'); # (2.1) creem el string de la consulta (query) $consulta = "SELECT * FROM city;"; # (2.2) enviem la query al SGBD per obtenir el resultat $resultat = mysqli_query($conn, $consulta); # (2.3) si no hi ha resultat (0 files o bé hi ha algun error a la sintaxi) # posem un missatge d'error i acabem (die) l'execució de la pàgina web if (!$resultat) { $message = 'Consulta invàlida: ' . mysqli_error($conn) . "\n"; $message .= 'Consulta realitzada: ' . $consulta; die($message); } ?> <!-- (3.1) aquí va la taula HTML que omplirem amb dades de la BBDD --> <table> <!-- la capçalera de la taula l'hem de fer nosaltres --> <thead><td colspan="4" align="center" bgcolor="cyan">Llistat de ciutats</td></thead> <?php # (3.2) Bucle while while( $registre = mysqli_fetch_assoc($resultat) ) { # els \t (tabulador) i els \n (salt de línia) son perquè el codi font quedi llegible # (3.3) obrim fila de la taula HTML amb <tr> echo "\t<tr>\n"; # (3.4) cadascuna de les columnes ha d'anar precedida d'un <td> # després concatenar el contingut del camp del registre # i tancar amb un </td> echo "\t\t<td>".$registre["Name"]."</td>\n"; echo "\t\t<td>".$registre['CountryCode']."</td>\n"; echo "\t\t<td>".$registre["District"]."</td>\n"; echo "\t\t<td>".$registre['Population']."</td>\n"; # (3.5) tanquem la fila echo "\t</tr>\n"; } ?> <!-- (3.6) tanquem la taula --> </table> </body> </html>
Exercicis de filtratge amb la BD «world».
Amplia l'exemple de les ciutats amb la BBDD World de forma que puguem filtrar les ciutats mostrades amb un menú desplegable (SELECT).
Pàgina index.php
:
H1
a la pàgina que digui literalment «Filtre de ciutats per país».name=«codi_pais»
.City
i la taula Country
és el CountryCode
. El formulari SELECT (ja sigui desplegable o radio button) ha de mostrar el nom del país, però ha d'enviar el CountryCode
com a value a través de GET o POST a la pagina 2.
Pàgina results.php
:
City
i que només mostri les ciutats del país seleccionat.Si fas servir Github Classroom amb Actions (autocorrecció), cal seguir les indicacions del professor perquè l'accés a la BD i als autotests sigui correcte.
127.0.0.1
enlloc de localhost
.admin
i password admin123
: si no tens creat l'usuari admin en local, crea'l i dona-li permisos per accedir a la DB world
.world
Segona part:
Tercera part:
afegir_ciutat.php
que disposi d'un formulari que permeti afegir noves ciutats.name=codi_pais
.input
amb name=nom_ciutat
.input
amb name=poblacio
.div
amb class=«missatge»
que digui «Ciutat afegida correctament».