Foros del Web » Programando para Internet » PHP »

Que mensaje de error es este...?

Estas en el tema de Que mensaje de error es este...? en el foro de PHP en Foros del Web. Hola a todos. Estoy implementando un libro de visitas en php y mysql. Me funciona bien y me pide y me muestra los resultados, en ...
  #1 (permalink)  
Antiguo 20/04/2005, 14:50
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 15 años
Puntos: 1
Que mensaje de error es este...?

Hola a todos.
Estoy implementando un libro de visitas en php y mysql.

Me funciona bien y me pide y me muestra los resultados, en el final de la pagina de los resultados tengo un link a la siguente pagina para ke me muestre mas resultados si los hubienra... Pero ahi se me cae y en lugar de los mensajes escritos ke falta por mostrar ..me muestra este mensaje de error

--->

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /customers/flotdesign.dk/flotdesign.dk/httpd.www/php/libroVisitas/index.php on line 44

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /customers/flotdesign.dk/flotdesign.dk/httpd.www/php/libroVisitas/index.php on line 79

--------<

Alguien sabe cual es el error..


Salu2 y gracias

.



hasta ke le pido ke me muestre la siguente pagina del libro
  #2 (permalink)  
Antiguo 20/04/2005, 14:59
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Si nos muestras algo de código, obviamente incluídas las líneas 44 y 79
__________________
Dios dira que esto no es justo, pero lo sera...
  #3 (permalink)  
Antiguo 20/04/2005, 16:57
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 15 años
Puntos: 1
.

Pues claro .. aki esta la linea 44

--------->
<?
//muestro los datos en un bucle
$num_filas = 0;
while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<10))//linea 44
{
?>

-----------<

Y aki la inea 79

----------->

<?
$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);//linea 79

//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)
{
?>


Saludos y gracias

.
  #4 (permalink)  
Antiguo 20/04/2005, 18:25
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
En realidad lo q quiero ver especialmente es el query (mysql_fetch_object), porq tu error es SQL, quizás estas implementando mal el mysql_fetch_object.
Por q tu error se refiere a MySQL y no a PHP.
Aparte quiero ver porq necesitas usar mysql_fetch_objet y no mysql_fetch_array.
Postea todo lo q puedas PERO POR FAVOR UTILIZA LAS ETIQUETAS [ PHP ] [ /PHP ] (sin espacios entre los [] y PHP)
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #5 (permalink)  
Antiguo 21/04/2005, 00:44
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 15 años
Puntos: 1
Pues claro aqui va todo lo ke tengo.... es un libro de visita que me baje de desarrolloweb... asi ke no te puedo responder el porke de los comandos..

Este es el formulario ke aparece al principio-->

Código PHP:

<form name=librovisitas action="index.php" method="post">
<
table width="100%" cellspacing="0" cellpadding="0" border="0">
<
tr>
    <
td class=titcol>&nbsp;<b>Firma el Libro de Visitas</b></td>
</
tr>
<
tr>
    <
td class=fuente8>&nbsp;D&eacute;janos tu mensaje en el libro de visitas y danos tu opini&oacute;n del sitio
    
<br>
    <
br>
    </
td>
</
tr>
<
tr>
    <
td>
    <
table width="100%" cellspacing="0" cellpadding="0" border="0">
    <
tr>
        <
td class=fuente8 align="center">
        
Nombre
        
<br>
        <
input type="Text" name="nombre" size="20" maxlength="150">
        <
br>
        <
br>
        
Email
        
<br>
        <
input type="Text" name="email" size="20" maxlength="100">
        <
br>
        <
br>
        
Valoración
        
<br>
        <
select name="valoracion">
        <
option value=1>Repelente
        
<option value=2>Mal
        
<option value=3 selected>Regular
        
<option value=4>Bien
        
<option value=5>Fant&aacute;stica
        
</select>
        </
td>
        <
td ALIGN=CENTER class=fuente8 valign="middle">
            
Comentarios:
            <
br>
            <
textarea name="comentario" cols="30" rows="7"></textarea>
        </
td>
    </
tr>
    <
tr>
        <
td colspan=2 align=center class=fuente8>
        <
br>
        <
input type="submit" value="  Enviar la firma al libro de visitas  ">
        </
td>
    </
tr>
    </
table>
    </
td>
</
tr>
</
table>
</
form
y este es el php ke hace las operaciones.

Código PHP:

<html>
<head>
    <title>Libro de visitas</title>
    <link rel="STYLESHEET" type="text/css" href="estilo.css">
</head>
<body>
<br>
<table align="center" width="550" cellspacing="2" cellpadding="8" border="0" bgcolor="#ffffff">
<tr>
    <td>
<h1>Libro de visitas PHP Flotdesign&nbsp; (index.php) </h1>
<?
//conecto con la base de datos
$conn mysql_connect("localhost","mibase","mipass"); 
mysql_select_db("mibase",$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
    
$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<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
    
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)==and strlen($email)==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>
Te mando el comando con el ke hice la tabla

Código PHP:

CREATE TABLE librovisitas_php 
(
   
id_librovisitas_php int(11unsigned NOT NULL auto_increment,
   
nombre varchar(150NOT NULL,
   
email varchar(100NOT NULL,
   
valoracion tinyint(4),
   
comentario text,
   
PRIMARY KEY (id_librovisitas_php)
); 
Salu2 y gracias

.
  #6 (permalink)  
Antiguo 21/04/2005, 07:10
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 15 años
Puntos: 1
.

Alguien que pueda hachar un mano...


Salu2 y gracias


.
  #7 (permalink)  
Antiguo 21/04/2005, 10:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Debes ver el error si existe de SQL:
Código PHP:
$resultid mysql_query($ssql,$conn) or die (mysql_error()); 
Si no usas mysql_error() .. nunca veras un error concreto de Mysql .. sólo los de PHP.


También es recomendable "verificar" el numero de registros que arrojó tu consulta SQL para hacer el "fetch" o no ...
Código PHP:
if (mysql_num_rows($resultid)){
   
// tu actual código con tu xxx_fech_xxx() y tu bucle while() ...
} else {
  echo 
"NO hay resultados";

Otro detalle ..

Código PHP:
 while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<10)) 
eso no es del todo "óptimo" .. deberías usar más SQL .. En Mysql tienes LIMIT para entregar un resultado "limitado" a N resultados .. De hecho ya lo usas "LIMIT 11" .. No sé en consecuencia para que usas "$num_filas<10" .. Podrías explicarlo?

Un saludo,
  #8 (permalink)  
Antiguo 21/04/2005, 10:56
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Código PHP:
<html>
<head>
    <title>Libro de visitas</title>
    <link rel="STYLESHEET" type="text/css" href="estilo.css">
</head>
<body>
<br>
<table align="center" width="550" cellspacing="2" cellpadding="8" border="0" bgcolor="#ffffff">
<tr>
    <td>
<h1>Libro de visitas PHP Flotdesign&nbsp; (source.php) </h1>
<?
//conecto con la base de datos
$db_slp['dbhost'] = 'localhost';
$db_slp['dbuser'] = 'vn000008_root';
$db_slp['dbpassword'] = 'extreme';
$db_slp['dbname'] = 'pruebas';
$db_conexionmysql_connect($db_slp['dbhost'],$db_slp['dbuser'],$db_slp['dbpassword']) or die("No se pudo conectar a la base de datos");
mysql_select_db($db_slp['dbname']) or die("no se puede acceder a la base de datos");

if (!
$_POST){
    
//si no recibo nada por el formulario de firma del libro, muestro las firmas del libro
    //construyo la sentencia SQL
    
$ssql "SELECT * FROM librovisitas";
    
//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 .= " LIMIT 11 ORDER BY id_librovisitas_php  DESC";
    
    //tomo el juego de resultados
    
$resultid mysql_db_query($db_slp['dbname'],"SELECT * FROM librovisitas") or die(mysql_error());
    
?>
    
    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) or die(mysql_error()) && ($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=\"source.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)==and strlen($email)==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>
Todo funciona bien ahora en my machine, jejeje... No me preguntes donde estaba el error, porq el tonto puso los mysql_error() después de haber modificado todo lo relacionado con mysql. Te recomiendo siempre usar mysql_error() y además, deberías buscar al más "moderno" q este libro de visitas, es pobre.
Puedes ir a http://www.hotscripts.com si no tienes ganas de programar... Pero deberías de tenerlas
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #9 (permalink)  
Antiguo 21/04/2005, 13:34
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 15 años
Puntos: 1
.

Gracias muchachos por su ayuda....


Salu2


.
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 00:17.