Hola, estoy diseñando un blog en PHP y MySQL. Tengo, entre otros archivos, un index.php donde se muestran los x últimos posts (x es configurable), un articulo.php?articulo_id=id es decir, un archivo donde se muestra cada post individual y sus comentarios pasándole argumentos. Y un admin.php donde se administran los posts, se moderan comentarios y se configuran las opciones del blog.
Para la moderación de comentarios (tengo una tabla llamada blog_comentarios con los campos autor, email, cuerpo, fecha, articulo_id e id donde articulo_id es el id del post al que se refiere el comentario) he construido una tabla en la que presenta los campos de la tabla blog_comentarios, es decir:
----------------------------------------------------------
| Autor | Email | Comentario | Fecha | Sobre el post | Borrar |
...
La cosa parece sencilla no? En la columna "sobre el post" tengo un enlace al post al que se refiere. Para hacer esto he hecho una consulta adicional, además de la que empleo para coger los comentarios de la tabla (SELECT * FROM blog_comentarios) que es SELECT titulo FROM blog_articulo WHERE id=$id. Sencillo, no?
Pues cuando lo ejecuto, todo parece que va bien, pero cuando hago clic en el enlace al post, el script articulo.php no consigue realizar ninguna de las consultas que debería realizar (recuperar el texto del post y los comentarios referentes a ese post), dando el error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource...
Es bastante raro, porque cuando lo ejecuto normalmente funciona. Debe ser problema de las conexiones, pero he utilizado nombres de variables distintos para cada consulta. Aquí tenéis el código de la sección de moderación de comentarios:
$enlace=Conectarse();
$consulta=mysql_query("SELECT * FROM blog_comentarios ORDER BY fecha");
echo "<table border=0 style=\"border: 2px solid silver; padding: 0px;\"><tr><td class=\"tablas\" align=center><b>Autor</b></td><td class=\"tablas\" align=center><b>E-mail</b></td><td class=\"tablas\" align=center><b>Comentario</b></td><td class=\"tablas\" align=center><b>Fecha</b></td><td class=\"tablas\" align=center><b>Sobre el post</b></td></tr>\n";
while($comentarios=mysql_fetch_array($consulta)) {
$enlace2=Conectarse();
$consulta_titulos=mysql_query("SELECT titulo FROM blog_articulos WHERE id=" . $comentarios["articulo_id"]);
$titulo_id=mysql_fetch_array($consulta_titulos);
echo "<tr><td class='tablas'>" . $comentarios["autor"] . "</td><td class='tablas'>" . $comentarios["email"] . "</td><td class='tablas'>" . $comentarios["cuerpo"] . "</td><td class='tablas'>" . formato_fecha($comentarios["fecha"]) . "</td><td class='tablas'><a href='articulo.php?articulo_id=" . $comentarios["articulo_id"] . "'>" . $titulo_id[0] . "</a></td><td><a href='borrar_comentario.php?comentario_id=" . $comentarios["id"] . "'><img src='img/borrar.png' border=0></a></td></tr>\n";
mysql_close($enlace2);
}
echo "</table>\n\n";
mysql_close($enlace);
(Nota: Conectarse() es una función que se conecta al servidor MySQL y selecciona la base de datos que me interesa).
Os agradecería que me echáseis una mano, si se os ocurre algo. Gracias!