Despliega los mensajes
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 mensajes 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 mensaje 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"; $result = mysql_query($query);
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'] );