Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/12/2004, 12:17
BarBar0
 
Fecha de Ingreso: diciembre-2004
Mensajes: 4
Antigüedad: 19 años, 4 meses
Puntos: 0
Ayuda con este código por favor

Buenas,

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&iacute; puedes leer los mensajes de los visitantes y tambi&eacute;n puedes dejar el tuyo utilizando el formulario de abajo.
<br>
<br>
<span class=fuente8><b>Muchas gracias por tu participaci&oacute;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&aacute;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&iacute;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&oacute;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

Última edición por BarBar0; 30/12/2004 a las 12:19