Diferència entre revisions de la pàgina «PHP MySQL select»
m (→Exercicis) |
|||
Línia 122: | Línia 122: | ||
#*Importar la base de dades [[Fitxer:Videoclub.sql]] al vostre servidor MySQL. Si no sabeu com fer-ho, consulteu-ho a [[SQL_creacio]] | #*Importar la base de dades [[Fitxer:Videoclub.sql]] al vostre servidor MySQL. Si no sabeu com fer-ho, consulteu-ho a [[SQL_creacio]] | ||
#*Copiar i enganxar el codi esmentat abans a /var/www. Si no us deixa haureu de donar permisos a la carpeta per poder escriure amb '''> sudo chmo 777 /var/www''' | #*Copiar i enganxar el codi esmentat abans a /var/www. Si no us deixa haureu de donar permisos a la carpeta per poder escriure amb '''> sudo chmo 777 /var/www''' | ||
− | #Crea un nou arxiu anomenat ex2.php i configura'l perquè mostri les assignatures de 2n de SMX. Cal, doncs, tenir instal·lada la base de dades [[Fitxer: | + | #Crea un nou arxiu anomenat ex2.php i configura'l perquè mostri les assignatures de 2n de SMX. Cal, doncs, tenir instal·lada la base de dades [[Fitxer:Ufs.sql]]. |
− | #... | + | #ex3.php: mostra les assignatures de la ESO. |
+ | #ex4.php: mostra el nom dels tots els alumnes. | ||
+ | #ex5.php: |
Revisió del 14:48, 20 abr 2010
Utilitzarem les funcions PHP per accedir al SGBD MySQL. Consulteu-les aquí.
A grans trets, el proceś general per atacar un SGBD és aquest:
- Connexió a la BBDD
- Crear i enviar query
- Obtenir resultats i mostrar-los per pantalla
En aquest darrer pas (obtenir i mostrar resultats) cal fixar-se especialment en l' estructura de control que necessitarem:
- Bucle de registres: (while) iterarà per cadascuna de les files de la taula. Haurà de ser un bucle tipus while ja que no sabem quan arribarem a la darrera fila.
Procés detallat per extreure dades de MySQL
Per obtenir dades d'una taula MySQL i visualitzar-la utilitzant PHP seguirem les següents passes:
- Connexió
- Connectar a MySQL amb l'ordre mysql_connect()
- Triar la BBDD de treball amb mysql_select_db()
- Crear i enviar consulta (query):
- Crear la consulta i desar-la en una variable, típicament $query = "SELECT ... FROM ... WHERE ..."
- Enviar la consulta al sistema (SGBD) per obtenir el resultat amb mysql_query()
- Si no hi ha resultat (0 files o bé hi ha algun error a la sintaxi) posem un missatge d'error i acabem l'execució de la pàgina web amb die($missatge)
- Obtenir resultats i mostrar-los:
- Obrim taula HTML amb <table> i la capçalera amb <thead>
- Bucle while pels registres de la taula: com que poden haver-ne varis, farem un bucle (loop). Típicament s'utiltiza un while perquè no sabem quan arribarem a la darrera fila
- (Dins del while) Extreure les dades d'un registre (fila de la BBDD) i emmagatzemar-les en un array amb alguna d'aquestes funcions:
- mysql_fetch_row(): extreu els camps de la fila en un array numèric clàssic.
- Per exemple: echo $registre[0]
- mysql_fetch_assoc(): extreu els camps de la fila en un array associatiu.
- Per exemple: echo $registre["titol_original"]
- mysql_fetch_object(): extreu els camps en un objecte.
- Per exemple: echo $registre->titol_original;
- Obrim la fila de la taula HTML amb <tr>
- Mostrem dades dins de cel·les d'una taula HTML. Haurem de concatenar diverses cadenes de caràcters:
- Obrir la cel·la de la taula utiltizant <td>
- Imprimir resultat amb les dades de l'array. Per exemple, $registre["titol_original"]
- Tancar la cel·la de la taula utiltizant </td>
- Tanquem la fila de la taula HTML amb </tr>
- Tanquem la taula amb </table>
Codi font de l'exemple
Utilitzarem l'exemple de la base de dades del videoclub Fitxer:Videoclub.sql.
Per crear i importar la base de dades d'exemple pots consultar SQL creacio.
<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) mysql_connect('localhost','enric','enric'); # (1.2) Triem la base de dades amb la que treballarem mysql_select_db('enric_video'); # (2.1) creem el string de la consulta (query) $consulta = "SELECT * FROM films;"; # (2.2) enviem la query al SGBD per obtenir el resultat $resultat = mysql_query($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: ' . mysql_error() . "\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="5" align="center" bgcolor="cyan">Llistat de films disponibles</td></thead> <?php # (3.2) Bucle while while( $registre = mysql_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 echo "\t\n"; # (3.4) cadascuna de les columnes ha d'anar precedida d'un
# després concatenar el contingut del camp del registre
# i tancar amb un echo "\t\t".$registre["titol_original"]."\n"; echo "\t\t".$registre['titol_traduit']."\n"; echo "\t\t".$registre["director"]."\n"; echo "\t\t".$registre['productora']."\n";
# (3.5) tanquem la fila
echo "\t\n"; } ?> <!-- (3.6) tanquem la taula -->
</body> </html>
Exercicis
- Posa en marxa aquest exemple en la teva màquina. Hauràs de:
- Instal·lar apache2 i php5
- Rearrencar apache amb > sudo apache2ctl restart
- Importar la base de dades Fitxer:Videoclub.sql al vostre servidor MySQL. Si no sabeu com fer-ho, consulteu-ho a SQL_creacio
- Copiar i enganxar el codi esmentat abans a /var/www. Si no us deixa haureu de donar permisos a la carpeta per poder escriure amb > sudo chmo 777 /var/www
- Crea un nou arxiu anomenat ex2.php i configura'l perquè mostri les assignatures de 2n de SMX. Cal, doncs, tenir instal·lada la base de dades Fitxer:Ufs.sql.
- ex3.php: mostra les assignatures de la ESO.
- ex4.php: mostra el nom dels tots els alumnes.
- ex5.php: