Diferència entre revisions de la pàgina «PHP MySQL select»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 7: Línia 7:
  
  
En aquest darrer pas (obtenir i mostrar resultats) cal fixar-se especialment en l' '''estructura de control''' que necessitarem, que serà de 2 bucles aniuats:
+
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.
 
*'''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.
*'''Bucle de camps''': (''for'') iterarà per cadascun dels camps del registre (columnes de la taula). Aquest sí que podem fer un clàssic bucle '''''for''''' ja que sí podem saber quants camps té el nostre registre (està emmagatzemat en un array).
 
  
  

Revisió del 16:40, 18 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:

  1. Connexió a la BBDD
  2. Crear i enviar query
  3. 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:

  1. Connexió
    1. Connectar a MySQL amb l'ordre mysql_connect()
    2. Triar la BBDD de treball amb mysql_select_db()
  2. Crear i enviar consulta (query):
    1. Crear la consulta i desar-la en una variable, típicament $query = "SELECT ... FROM ... WHERE ..."
    2. Enviar la consulta al sistema (SGBD) per obtenir el resultat amb mysql_query()
    3. 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)
  3. Obtenir resultats i mostrar-los:
    1. Obrim taula HTML amb <table> i la capçalera amb <thead>
    2. 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;
    3. Obrim la fila de la taula HTML amb <tr>
    4. 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>
    5. Tanquem la fila de la taula HTML amb </tr>
    6. 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>