Foros del Web » Programando para Internet » PHP »

problemas con $damefila=mysql_fetch_object($result) de un libro de visitas en php

Estas en el tema de problemas con $damefila=mysql_fetch_object($result) de un libro de visitas en php en el foro de PHP en Foros del Web. hola tengo un problema con el codigo del libro de vistas php que tengo. el problema que me da es el siguiente: Cita: Warning: mysql_fetch_object(): ...
  #1 (permalink)  
Antiguo 02/12/2005, 18:01
 
Fecha de Ingreso: diciembre-2005
Mensajes: 2
Antigüedad: 18 años, 4 meses
Puntos: 0
Exclamación problemas con $damefila=mysql_fetch_object($result) de un libro de visitas en php

hola tengo un problema con el codigo del libro de vistas php que tengo. el problema que me da es el siguiente:

Cita:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/webcindario/ricardoprueba2/Libro de visitas/index.php on line 56

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/webcindario/ricardoprueba2/Libro de visitas/index.php on line 91
y este es mi codigo:

Código:
//conecto con la base de datos !!linea 24
$conn = mysql_connect("mysql.webcindario.com","ricardoprueba2","****"); 
mysql_select_db("nombre_bbdd",$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 11";
	
	//tomo el juego de resultados
	$result = 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;///!!!esta es la linea 56 donde da el primer error:!!!
	while (($damefila=mysql_fetch_object($result)) && ($num_filas<10))
	{
		?>
		<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 !!!esta es la linea 94 donde da el segundo error
	mysql_free_result($result);
	
	//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,$conn);
?>
		<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);
?>	</td>
</tr>
</table>
<br>

</body>
</html>
bueno espero su ayuda pronto. Gracias.
  #2 (permalink)  
Antiguo 02/12/2005, 20:14
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 22 años, 5 meses
Puntos: 2
EL error es de mysql... por eso no hay un resultado valido en mysql_fetch_object...

Hace un echo de tu consulta y fijate si tiene algun error...
__________________
JmN
  #3 (permalink)  
Antiguo 03/12/2005, 14:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa mysql_error() .. así veras el error SQL concreto que tienes:
Código PHP:
$result mysql_query($ssql,$conn) or die (mysql_error()); 
Pero .. dado que compones una sentencia SQL en función de otras variables y lógica .. lo mejor es que -ademas- de que uses mysql_Error() .. también hagas un echo a tu $ssql y observes si la sentencia SQL ahí generada es la que esperas en esos casos.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:00.