Foros del Web » Programando para Internet » PHP »

Error raro al realizar consulta

Estas en el tema de Error raro al realizar consulta en el foro de PHP en Foros del Web. Tengo un error raro, y por más que busco no logro encontrar la solucion. Ya que en este ultimo mes este foro me está ayudando ...
  #1 (permalink)  
Antiguo 24/09/2006, 10:45
 
Fecha de Ingreso: septiembre-2006
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Error raro al realizar consulta

Tengo un error raro, y por más que busco no logro encontrar la solucion. Ya que en este ultimo mes este foro me está ayudando bastante, y hasta ahora no he necesitado escribir un post para poder solucionar mis problemas (utilizando el maravilloso buscador que teneis, gracias a todos ), en ésta ocasión me estoy volviendo loca . Aun estoy empezando con todo php, mysql, así que soy novatilla en esto.

Al grano!, he instalado un buscador en mi web que realiza consultas en mi base de datos y muestra los resultados.

Código HTML:
<form name="buscador" method="POST" action="busca.php" onSubmit="return validar()">
        <font face="Americana XBdCn BT">Buscador:</font> 
        <input type="text" name="busca">
        <input type="submit" value="Buscar" name="enviar"  onKeyPress="validar()">
            </form> 
PHP:
Código PHP:
<?php

$frase
$_POST['busca']; 
if(isset(
$_POST['enviar'])) {

// Solo se ejecuta si se ha enviado el formulario
// Conexion, seleccion de base de datos
$enlace mysql_connect('mysql''user''pass')
   or die(
'No pudo conectarse : ' mysql_error());
echo 
'Conexi&oacute;n exitosa';
mysql_select_db('bd') or die('No pudo seleccionarse la BD.');

// Realizar una consulta SQL
$consulta "SELECT * FROM libros WHERE autor LIKE '%$frase%' OR titulo LIKE '%$frase%' OR descripcion LIKE '%$frase%'";
$resultado mysql_query($consulta) or die('La consulta fall&oacute;: ' mysql_error());

// Impresion de resultados en HTML
echo "<table border=1>\n";
}
while (
$linea mysql_fetch_array($resultadoMYSQL_ASSOC)) {
   echo 
"\t<tr>\n";
   foreach (
$linea as $valor_col) {
       echo 
"\t\t<td>$valor_col</td>\n";
   }
   echo 
"\t</tr>\n";
}
echo 
"</table>\n";

// Liberar conjunto de resultados
mysql_free_result($resultado);

// Cerrar la conexion
mysql_close($enlace);
?>
Bien, funciona correctamente y muestra los resultados sin ningun problema, pero solamente si pulso el boton submit, pero si escribo algo en el textarea y pulso ENTER me salen los siguientes errores:

Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/librosro/librosromo.com/busca.php on line 99

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/librosro/librosromo.com/busca.php on line 109

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /hsphere/local/home/librosro/librosromo.com/busca.php on line 112
linea 99: while ($linea = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
linea 109: mysql_free_result($resultado);
linea 122: mysql_close($enlace);

¿Sabeis a qué es debido?

PD: Espero haber publicado el post en el lugar apropiado.

Un saludo
Patricia

Última edición por *patricia*; 24/09/2006 a las 10:56 Razón: mejor entendimiento para el resto de usuarios
  #2 (permalink)  
Antiguo 24/09/2006, 11:07
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 15 años, 9 meses
Puntos: 62
;)

Código PHP:
$consulta "SELECT * FROM libros WHERE autor LIKE '%$frase%' OR titulo LIKE '%$frase%' OR descripcion LIKE '%$frase%'"
es asi:

Código PHP:
$consulta "SELECT * FROM libros WHERE autor LIKE '".$frase."' OR titulo LIKE '".$frase."' OR descripcion LIKE '".$frase."'"
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 24/09/2006, 11:16
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 13 años, 4 meses
Puntos: 0
El problema es que cuando pulsas enter se hace submit del formulario pero no se setea la variable del botón de submit. Por eso, en tal caso, no se entra en la alternativa. En tu caso, te funcionaría mejor mirar si $_POST['busca'] está seteada, en lugar de $_POST['Enviar']. Además, creo que deberías poner todo el código dentro de la alternativa, porque sólo te interesa iterar en $resultado cuando se haya producido la consulta:


Código PHP:
/* Si $_POST['busca'] está seteada, es seguro que el script ha sido 
llamado por POST y si el script ha sido llamado por post mediante el 
formulario indicado, es seguro que $_POST['busca'] contiene un valor 
(aunque sea cadena vacía). */
if(isset($_POST['busca'])) {  
    
$frase$_POST['busca']; 
    
    
// Solo se ejecuta si se ha enviado el formulario
    // Conexion, seleccion de base de datos
    
$enlace mysql_connect('mysql''user''pass')
       or die(
'No pudo conectarse : ' mysql_error());
    echo 
'Conexi&oacute;n exitosa';
    
mysql_select_db('bd') or die('No pudo seleccionarse la BD.');
    
    
// Realizar una consulta SQL
    
$consulta "SELECT * FROM libros WHERE autor LIKE '%$frase%' OR titulo LIKE '%$frase%' OR descripcion LIKE '%$frase%'";
    
$resultado mysql_query($consulta) or die('La consulta fall&oacute;: ' mysql_error());
    
    
// Impresion de resultados en HTML
    
echo "<table border=1>\n";
    while (
$linea mysql_fetch_array($resultadoMYSQL_ASSOC)) {
       echo 
"\t<tr>\n";
       foreach (
$linea as $valor_col) {
           echo 
"\t\t<td>$valor_col</td>\n";
       }
       echo 
"\t</tr>\n";
    }
    echo 
"</table>\n";
    
    
// Liberar conjunto de resultados
    
mysql_free_result($resultado);
    
    
// Cerrar la conexion
    
mysql_close($enlace);


  #4 (permalink)  
Antiguo 24/09/2006, 11:18
 
Fecha de Ingreso: septiembre-2006
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Hola Zital, muchas gracias por contestar tan rapido ;) , aunque no es ésto lo que falla. En realidad la consulta se realiza exitosamente, por lo que supongo que el codigo estará bien.

El problema es que solamente se realiza bien la consulta si hago click en el boton submit del formulario. Si al escribir la palabra a buscar pulso la tecla ENTER (como muchos estamos acostumbrados) ahí es donde aparecen los errores. No entiendo por qué al pinchar con el raton se realiza correctamente y pulsando enter no :S
  #5 (permalink)  
Antiguo 24/09/2006, 11:22
 
Fecha de Ingreso: septiembre-2006
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Gracias GikaJavi, consultaré lo que me dices a ver si consigo arreglarlo ;)
  #6 (permalink)  
Antiguo 24/09/2006, 12:06
 
Fecha de Ingreso: septiembre-2006
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
De acuerdo

efectivamente GikaJavi justo lo que decias, ahora funciona perfectamente de ambas maneras, disculpad estos errores "tontos" de novatilla y gracias por los consejos

Seguiré investigando para mejorar el buscador y mi web, gracias a vuestra pagina es estupenda

Un saludo
Patricia
  #7 (permalink)  
Antiguo 21/04/2008, 08:51
 
Fecha de Ingreso: abril-2008
Mensajes: 2
Antigüedad: 11 años, 7 meses
Puntos: 0
Re: Error raro al realizar consulta

Hola:
tengo casi creado un proyecto en .Net tirando de una base de datos en Sql server 2005. Cuando intento realizar una busqueda y pulso la tecla enter y me manda a la pagina de validacion de usuario. Quisiera saber como puedo solucionarlo porque me es imposible. gracias de antemano.
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 17:34.