Foros del Web » Programando para Internet » PHP »

Error en buscador

Estas en el tema de Error en buscador en el foro de PHP en Foros del Web. Hola a todos. Intento poner en marcha un pequeño buscador por palabras. Utilizo estos archivos: form.php <?php echo "<form action=\"buscador.php\" method=\"GET\"><br> <br> <input type=\"text\" size=\"20\" ...
  #1 (permalink)  
Antiguo 13/12/2004, 04:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
Error en buscador

Hola a todos.

Intento poner en marcha un pequeño buscador por palabras.

Utilizo estos archivos:

form.php

<?php
echo
"<form action=\"buscador.php\" method=\"GET\"><br>
<br>
<input type=\"text\" size=\"20\" name=\"q\"><br>
<br>
<INPUT TYPE=\"submit\" VALUE=\"Enviar\">
</form>";
?>
________________________________________________

buscador.php

<?php
$conn = mysql_connect(localhost, usuario, contraseña);
mysql_select_db($basedatos, $conn);
$consulta = $_GET["$q"];
$consulta = split(' ',$consulta);
$sql = "SELECT * FROM tabla WHERE ";
for($a = 0; $a < count($consulta); $a++){
if($consulta[$a] != ''){
if($a != 0)$sql .= 'AND ';
$sql .= "titulo LIKE '%".$consulta[$a]."%'";
}
}
$resulta = mysql_query($sql,$conn);
while($row = mysql_fetch_array($resulta))
{
echo '<br>'.$row["nombre"].'-'.$row["domicilio"];
}
?>

__________________________________________________

Me da el error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\archivos de programa\apache group\apache\htdocs\forma\consultas\buscacurso4.ph p on line 14

La línea 14 es: while($row = mysql_fetch_array($resulta))

__________________________________________________ __
He hecho varias pruebas antes de preguntar.

-La variable $q es recibida por resultado.php (haciendo echo $q; la escribe).

- Si fuerzo la variable $q definiéndola en buscador.php (haciendo por ejemplo $q =jose;) me da resultados pero sigue indicando el error.

No sé dónde me equivoco.

¿Podéis ayudarme?

Muchas gracias.
  #2 (permalink)  
Antiguo 13/12/2004, 04:32
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 20 años, 1 mes
Puntos: 0
Prueba de hacer un echo de $sql a ver que sentencia acaba escribiendo.
  #3 (permalink)  
Antiguo 13/12/2004, 04:33
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

No es

$consulta = $_GET["$q"];

Es

$consulta = $_GET["q"];

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 13/12/2004, 05:03
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
Cambiando $consulta = $_GET["$q"]; por $consulta = $_GET["q"];
y haciendo un echo de $sql escribe:

SELECT * FROM tabla WHERE titulo LIKE '%palabra1%'AND titulo LIKE '%palabra2%'AND titulo LIKE '%palabra3%'

O sea, la instrucción que llega está bien. Esto me hace pensar que lo que está mal debe ser la última parte del código

$resulta = mysql_query($sql,$conn);
while($row = mysql_fetch_array($resulta))
{
echo '<br>'.$row["nombre"].'-'.$row["domicilio"];
}

que es donde está la línea 14 que da el error.

Creo que debe ser algo bastante simple, pero no lo veo.

Gracias.
  #5 (permalink)  
Antiguo 13/12/2004, 05:11
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 20 años, 1 mes
Puntos: 0
Ostras ahora que pienso, lei un articulo donde comentaba que si el campo se definia como FULLTEXT te permitia hacer un tipo de busqueda diferente,tipo google.Busca por el google campos FULLTEXT. Esto es por si tb quieres verlo.
  #6 (permalink)  
Antiguo 13/12/2004, 05:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Haz un mysql_error() (www.php.net/mysql_error) para ver el mensaje de error que te manda MySQL.

Saludos.

PD: Pon espacio antes del AND.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 13/12/2004, 05:54
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
mysql_error() da estos errores:

1049: Unknown database 'nonexistentdb'
1046: No Database Selected

El caso es que enotras consultas, no da error.¿Qué puede ser?

Gracias.
  #8 (permalink)  
Antiguo 13/12/2004, 05:59
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Cita:
Iniciado por javifo
mysql_error() da estos errores:

1049: Unknown database 'nonexistentdb'
1046: No Database Selected

El caso es que enotras consultas, no da error.¿Qué puede ser?

Gracias.
¿Donde asignas valor a $basedatos? En el codigo que tu has puesto en ningun lado.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 13/12/2004, 06:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
En el código que he puesto no se vé de donde sale porque lo he copiado MAL del include con que hago incluyendo este archivo( es el que funciona en todas las consultas)erdona mi error-
<?php
$bd_host = "localhost";
$bd_usuario = "usuario";
$bd_password = "contraseña";
$bd_base = "principal";

$conn = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $conn);
if (!$conn){
$Err_conn="No se pudo conectar con el servidor";
return 0;
}
?>

No me acabo de aclarar, pero creo que en este archivo se define a qué base de datos ha de ir a buscar.
  #10 (permalink)  
Antiguo 13/12/2004, 06:25
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 20 años, 6 meses
Puntos: 0
En realidad no hay error al seleccionar la bd ni la tabla.
He revisado todo y !!!!lo siento!!!! había configurado mal el script mysql_error()

O sea, que, si estoy en lo cierto, el error viene de la forma en que se hace la consulta.

A ver si acabamos solucionándolo, porque el script en sí parece bueno y creo que vale la pena.

Última edición por javifo; 13/12/2004 a las 06:27
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 12:56.