Recurro al foro porque estoy desesperado con un libro de visitas que me bajé y no consigo que funcione la paginación. Cuando lo ejecuto se muestran los últimos resultados, pero al pulsar sobre el link de "ver mas" da errores. Soy novato en esto y me estoy volviendo loco. ¿Podríais ayudarme?
Los errores son:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource
y
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource
Las líneas a las que hacen referencia los errores son respectivamente:
While (($damefila=mysql_fetch_object($resultid)) && ($num_filas<5))
y
mysql_free_result($resultid);
No tengo mucha idea de PHP, pero he jugado mucho con este código y en la línea :
$ssql .= " where id_librovisitas_php<=" . $vermas;
Si sustituyo la variable $vermas por un número veo los siguientes mensajes. No sé si estará el problema en esa párte del código o en el link.
A continuación os muestro el código original al completo por si podéis ver algún error:
<?
//conecto con la base de datos
$conn = mysql_connect("localhost","usuario","contraseña");
mysql_select_db("librovisitas",$conn);
if (!$HTTP_POST_VARS)
{
//si no recibo nada por el formulario de firma del libro, muestro las firmas del libro
//construyo la sentencia SQL
$ssql = "SELECT * FROM librovisitas_php";
//se mostrarán las últimas fimas, aunque habrá un enlace en la parte de abajo que se podrá pulsar para ver más firmas
if (isset($_GET["vermas"]))
$ssql .= " where id_librovisitas_php<=" . $vermas;
//ordeno la sentencia y limito el numero de resultados
$ssql .= " ORDER BY id_librovisitas_php desc limit 6";
//tomo el juego de resultados
$resultid = mysql_query($ssql,$conn);
?>
Aquí puedes leer los mensajes de los visitantes y también puedes dejar el tuyo utilizando el formulario de abajo.
<br>
<br>
<span class=fuente8><b>Muchas gracias por tu participación</b></span>
<br>
<br>
<?
//muestro los datos en un bucle
$num_filas = 0;
while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<5))
{
?>
<table align="center" width="100%" cellspacing="2" cellpadding="0" border="0">
<tr>
<td valign="top" class=fuente8><b>
<? //si el visitante no introdujo nombre muestro como nombre "Anónimo"
if ($damefila->nombre == "-"){
echo "Anónimo";
}elseif ($damefila->email != "-") {
echo '<a href="mailto:' . $damefila->email . '">' . $damefila->nombre . '</a>';
}else{
echo $damefila->nombre;
}
?></b>:<br>
</td></tr>
<tr><td bgcolor=cccccc colspan="2"><img src="images/pixeltrans.gif" width=1 height=1 border="0"></td></tr>
<td class=fuente8 valign="top">
<?echo strip_tags($damefila->comentario)?>
<td valign="top" align="right" nowrap class=fuente8>
Valoracion: <?echo $damefila->valoracion?>
</td>
</tr>
</table>
<br>
<?
$num_filas++;
} //termina el bucle while
//si quedan más valoraciones en el conjunto de resultados, muestro el enlace de "Ver más"
if ($damefila)
echo "<div align=center><b><a href=\"index.php?vermas=$damefila->id_librovisitas_php\">Ver más mensajes</a></b></div><br>";
//libero el conjunto de resultados
mysql_free_result($resultid);
//incluyo el formulario para firmar
include ("formul_mensaje.html");
}
else
{
//estoy recibiendo datos del fomulario de firmas
//Formateamos un poco el formulario, por si acaso los datos son incorrectos
//eliminamos las etiquetas HTML y PHP de las cadenas de texto
$nombre = strip_tags($_POST["nombre"]);
$email = strip_tags($_POST["email"]);
$comentario = strip_tags($_POST["comentario"]);
//Cortamos las cadenas demasiado largas
$nombre=substr($nombre,0,150);
$email=substr($email,0,80);
//Comprobamos que el visitante se ha molestado en rellenar algo
if (strlen($nombre)==0 and strlen($email)==0 and strlen($comentario)==0)
{
?>
<div align="center"><b>Gracias por el envío</b>.<br><br>Te agradeceríamos, no obstante y si no resulta mucho esfuerzo, que rellenases alguno de los campos para dejar constancia de tu visita.</div>
<?
}else{
//si alguno de los campos falta prefiero colocar un guión o "sin comentarios"
if (!$nombre)$nombre="-";
if (!$email) $email="-";
if (!$comentario) $comentario="Sin comentarios";
//Generamos la ssql e insertamos el registro
$ssql = "INSERT INTO librovisitas_php (nombre,email,valoracion,comentario) VALUES ('" . $nombre . "','" . $email . "'," . $_POST["valoracion"] . ",'" . $comentario . "')";
//echo $ssql . "<p>";
mysql_query($ssql);
?>
<div align="center"><b>Muchas gracias por tu participación</b></div>
<?
}
?>
<br>
<br>
<div align="center"><b><a href=".">Volver al libro de visitas</a></b></div>
<?
}
mysql_close($conn);
?>
Os agradecería muchísimo que me ayudáseis.
Gracias de antemano.
Un saludo
![de acuerdo](http://static.forosdelweb.com/fdwtheme/images/smilies/dedosarriba.png)