Taula de continguts

Utilitzant PHP amb MySQL

Per accedir a bases de dades des de PHP tenim bàsicament dos tipus de llibreries:

Recursos:

, , , ,

Recursos

Amb funcions particulars mysqli_ :

Amb PDO:

PDO amb seguretat:


Utilitzant llibreria mysqli_

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:

access_mysql.php
<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 mysqli_

Exercicis de filtratge amb la BD «world».

Exercici 1

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:

Pàgina results.php:

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.

Exercici 2

Segona part:

Exercici 3

Tercera part:

  1. Afegeix la pagina afegir_ciutat.php que disposi d'un formulari que permeti afegir noves ciutats.
    • El país s'ha de poder seleccionar d'un desplegable amb name=codi_pais.
    • El nom es posarà en un input amb name=nom_ciutat.
    • La població es posarà en input amb name=poblacio.
    • La resta de camps no calen.
  2. Si la ciutat s'inserta bé, donar un missatge en un div amb class=«missatge» que digui «Ciutat afegida correctament».
  3. Posar un link amb el text «Tornar a l'inici».
  4. Abans d'insertar la ciutat, comprovar que no existeixi una ja insertada amb el mateix nom i al mateix país (si son de països diferents, sí que poden tenir el mateix nom). En cas de que ja existeixi, donar error amb el missatge «Aquesta ciutat ja existeix en aquest país».