Despliega los mensajes [Feb. 13, 2012, 12:46 p.m.]
En la tarea anterior logramos almacenar mensajes en nuestra base de datos. En esta tarea vamos a ver cómo desplegar esos mensajes para que se muestren en nuestra página.
<?php
// Datos para la conexion
$host = 'mysql_host';
$database = 'mysql_database';
$username = 'mysql_user';
$password = 'mysql_pd';
// Conectarse a MySQL
$link = mysql_connect($host, $username, $password);
if (!$link) {
die('Error al conectarse a mysql: ' . mysql_error());
}
// Seleccionar nuestra base de datos
$db_selected = mysql_select_db($database, $link);
if (!$db_selected) {
die ('Error al abrir la base de datos: ' . mysql_error());
}
// Buscar todos los comentarios ordenados por fecha de manera descendiente
$query = "SELECT * from guestbook ORDER BY fecha_publicacion DESC";
$result = mysql_query($query);
if (!$result) {
die('Query invalido: ' . mysql_error());
}
// Desplegar cada comentario como HTML
while ($fila = mysql_fetch_assoc($result)) {
echo sprintf('
<div class="mensaje">
<p><span class="autor">%s:</span> %s</p>
<p class="fecha">%s</p>
</div>',
htmlspecialchars($fila['nombre']),
htmlspecialchars($fila['mensaje']),
$fila['fecha_publicacion']
);
}
?>
$query = "SELECT * from guestbook ORDER BY fecha_publicacion DESC";
while ($fila = mysql_fetch_assoc($result)) {
Para entender esta sintaxis (que es muy común en PHP) debemos tener algunos conceptos claros:
-
En este momento, la variable $result tiene almacenados todos los registros de la tabla guestbook. Sin embargo, los tiene almacenados en un formato binario, que no puede ser manipulado por PHP.
-
Mediante la función mysql_fetch_assoc() podemos agarrar esos registros y convertirlos a lo que se conoce como un arreglo asociativo en PHP. Eso nos va a permitir manipular los registros con PHP y desplegarlos como queramos. Sin embargo, mysql_fetch_array() solo busca 1 registro a la vez.
- Para buscar todos los registros y convertirlos en arreglos asociativos, debemos envolver mysql_fetch_array() en un ciclo while.
En resumen, con esta línea le estamos diciendo a PHP lo siguiente:
"Quiero que agarres los registros que están almacenados en la variable $result y los conviertas en arreglos asociativos, pero quiero que lo hagas uno a uno.
Cada vez que conviertas un registro en arreglo, quiero que lo guardes en la variable $fila y que ejecutes el código que está dentro de los corchetes."
El código entre corchetes es el siguiente:
echo sprintf('
<div class="mensaje">
<p><span class="autor">%s:</span> %s</p>
<p class="fecha">%s</p>
</div>',
htmlspecialchars($fila['nombre']),
htmlspecialchars($fila['mensaje']),
$fila['fecha_publicacion']
);