|
Mostrar los datos de una
consulta
Mostrar los datos de una consulta
Ahora que ya sabemos conectar con el servidor de BD, veremos como
mostrar los datos por pantalla.
Consulta de la BD
<html>
<body>
<?php
$link = mysql_connect("localhost",
"nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM
agenda", $link);
echo "<table border = '1'> \n";
echo
"<tr>
\n";
echo "<td><b>Nombre</b></td>
\n";
echo "<td><b>E-Mail</b></td>
\n";
echo "</tr>
\n";
while ($row = mysql_fetch_row($result)){
echo
"<tr>
\n";
echo "<td>$row[0]</td>
\n";
echo "<td>$row[1]</td>
\n";
echo "</tr>
\n";
}
echo "</table> \n";
?>
</body>
</html>
En este script hemos introducido dos novedades, la más obvia es la
sentencia de control while(), que tiene un funcionamiento similar al de
otros lenguajes, ejecuta una cosa mientras la condición sea verdadera. En
esta ocasión while() evalúa la función mysql_fetch_row(), que devuelve
un array con el contenido del registro actual (que se almacena en $row) y
avanza una posición en la lista de registros devueltos en la consulta
SQL.
La función mysql_fetch_row() tiene un pequeño problema, es que el
array que devuelve sólo admite referencias numéricas a los campos
obtenidos de la consulta. El primer campo referenciado es el 0, el segundo
el 1 y así sucesivamente. En el siguiente script solucionaremos este
pequeño inconveniente.
Consulta modificada de BD
<html>
<body>
<?php
$link = mysql_connect("localhost",
"nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM
agenda", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border =
'1'> \n";
echo
"<tr>
\n";
echo "<td><b>Nombre</b></td>
\n";
echo "<td><b>E-Mail</b></td>
\n";
echo "</tr>
\n";
do {
echo
"<tr>
\n";
echo "<td>".$row["nombre"]."</td>
\n";
echo "<td>".$row["email"]."</td>\n";
echo "</tr>
\n";
} while ($row =
mysql_fetch_array($result));
echo "</table>
\n";
} else {
echo "¡ La base de datos
está vacia !";
}
?>
</body>
</html>
Esencialmente, este script hace lo mismo que el anterior. Almacenamos
en $row el registro actual con la función mysql_fetch_array() que hace
exactamente lo mismo que mysql_fetch_row(), con la excepción que podemos
referenciar a los campos por su nombre ($row["email"]), en vez
de por un número.
Con la sentencia if/else, asignamos a $row el primer registro de la
consulta, y en caso de no haber ninguno (else) mostramos un mensaje
("No se ha encontrado..."). Mientras que con la sentencia
do/while, nos aseguramos que se nos muestren todos los registros devueltos
por la consulta en caso de haber más de uno.
Hay que destacar la utilización del punto (.), como operador para
concatenar cadenas.
|