Foros del Web » Programando para Internet » PHP »

problema con buscador interno(php y mysql)

Estas en el tema de problema con buscador interno(php y mysql) en el foro de PHP en Foros del Web. holassss Estoy intentando hacer un buscador interno de mi web. e leido varios tutoriales y me e puesto a hacerlo pero me da el siguiente ...
  #1 (permalink)  
Antiguo 20/08/2010, 17:50
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
problema con buscador interno(php y mysql)

holassss

Estoy intentando hacer un buscador interno de mi web. e leido varios tutoriales y me e puesto a hacerlo pero me da el siguiente error:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in G:\wamp\www\carajaula\buscar.php on line 22

os pongo el codigo para que me digais que fallos encontrais por que yo no los encuentro :(
Código:
<form action="buscar.php" method="post">
<ul>
<li>	BUSCAR: <input type="text" name="busqueda" id="buscador" size="60" /></li>
<li><input type="submit" name="buscando" value="" id="botonbuscador"></li>
</ul>
</form>

Código PHP:
<?php

$busqueda
=$_POST['busqueda'];
//cadena de conexion
$conexionmysql_connect("localhost""root""");
    
    
mysql_select_db("carajaula"$conexion);
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
    
//CUENTA EL NUMERO DE PALABRAS
    
$trozos=explode(" ",$busqueda);
    
$numero=count($trozos);
    if (
$numero==1) {
        
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
        
$cadbusca="SELECT titulo, genero FROM peliculas WHERE VISIBLE =1 AND titulo LIKE '%$busqueda%' OR genero LIKE '%$busqueda%' LIMIT 10";
    } elseif (
$numero>1) {
        
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
        //busqueda de frases con mas de una palabra y un algoritmo especializado
        
$cadbusca="SELECT titulo, genero , MATCH ( titulo, genero ) AGAINST ( '$busqueda' ) AS Score FROM peliculas WHERE MATCH ( titulo, genero ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 10";
    }
    
$RES mysql_query($cadbusca,$conexion);
    while (
$filamysql_fetch_assoc($RES)){
        
        
$fila['titulo']; 
        
$fila['ano']; 
        
        
$fila['genero']; 
        
$fila['calidad']; 
        
        
        echo 
"<div id='registropeli'>";
        echo 
"<ul><li><b>Titulo:</b></li>" .$fila['titulo']; 
        echo 
"<li><b>ao:</b></li>" .        $fila['ano']; 
        
        echo 
"<li><b>genero:</b></li>" .$fila['genero']; 
        echo 
"<li><b>calidad:</b></li>" .$fila['calidad'];
        
        
        echo 
"</div>";
        
    }
    
}
?>
  #2 (permalink)  
Antiguo 20/08/2010, 17:57
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: problema con buscador interno(php y mysql)

pROBÁ CAMBIANDO ESTO mysql_fetch_assoc POR ESTO mysql_fetch_array

igualmente creo que ese error es porque no encontró nungun resultado, pero no estoy seguro
__________________
la la la
  #3 (permalink)  
Antiguo 20/08/2010, 17:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con buscador interno(php y mysql)

aprende a depurar tu consulta siempre!!

Código PHP:
mysql_query(/* tu consulta */) or die(mysql_error()) 
porque eso de adivinar la razón de los errores no se da mucho por estos foros...

y si te indica un mensaje que no entiendes, primero usa el traductor, y si aún estas confundido puedes volver con nosotros...

truman_truman, eso de cambiar cosas así como que de la nada es magia o como?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 20/08/2010, 18:26
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema con buscador interno(php y mysql)

paketrueke gracias ya e metido para depurar la consulta el or die... y me decia que la columna visible=1 no existe ya la e cambiado por titulo es decir visible por titulo y me muestra resultados pero me da errores con algunos campos de la tabla que directamente no me los encuentra en fin voy a investigar un poco mas y si no consigo solucionarlo os doy el toke..

gracias :)
  #5 (permalink)  
Antiguo 20/08/2010, 18:30
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema con buscador interno(php y mysql)

ya esta solucionado faltaba poner en el select el resto de los campos.....xDDDDD
  #6 (permalink)  
Antiguo 21/08/2010, 12:48
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema con buscador interno(php y mysql)

pues me e equivocado creia que funcionaba el buscador pero solo funciona para buscar por genero de peliculas.. si pongo un titulo me sale la pantalla en blanco....estoy seguro que es de la sentencia mysql que no está bien programada.......haber si alguno me podeis ayudar
  #7 (permalink)  
Antiguo 21/08/2010, 12:55
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema con buscador interno(php y mysql)

e cambiado la primera sentencia mysql la ke usa like y ahora la tengo asi:

Código PHP:
$cadbusca="SELECT titulo, genero,ano,calidad,comentario FROM peliculas WHERE  titulo LIKE '%$busqueda%' OR genero LIKE '%$busqueda%' LIMIT 10"
y funciona

pero cuando escribo en el buscador mas de una palabra me sale este error:

Can't find FULLTEXT index matching the column list

yo juraria que e activado el fulltext para titulo y genero desde la consola de mysql pero ahora me sale el error que he mencionado........
  #8 (permalink)  
Antiguo 06/09/2010, 15:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: problema con buscador interno(php y mysql)

Hola rufus, pudiste arreglar el problema? yo estoy haciendo una prueba con este codigo porque es mas o menos lo que buscaba, para hacer una busqueda, pero que aparte lo haga segun la categoria, para eso le agrege un select al formulario de busqueda, me funciona bien cuando hago la busqueda de una palabra, pero cuando es una busqueda de una frase, me da un error

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

y la linea del error es esta

while ($fila= mysql_fetch_assoc($RES)){
  #9 (permalink)  
Antiguo 06/09/2010, 15:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con buscador interno(php y mysql)

Cita:
Iniciado por pakillo Ver Mensaje
Hola rufus, pudiste arreglar el problema? yo estoy haciendo una prueba con este codigo porque es mas o menos lo que buscaba, para hacer una busqueda, pero que aparte lo haga segun la categoria, para eso le agrege un select al formulario de busqueda, me funciona bien cuando hago la busqueda de una palabra, pero cuando es una busqueda de una frase, me da un error

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

y la linea del error es esta

while ($fila= mysql_fetch_assoc($RES)){
amigo, es buen habito poner atención...

Cita:
Iniciado por pateketrueke Ver Mensaje
aprende a depurar tu consulta siempre!!

Código PHP:
mysql_query(/* tu consulta */) or die(mysql_error()) 
esto mismo estas olvidando hacer, por eso no sabes donde esta el error...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 06/09/2010, 15:04
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: problema con buscador interno(php y mysql)

pateketrueke, lo tengo puesto en las dos consultas, lei todo el post completo por eso lo agrege antes de hacer las pruebas

el codigo lo tengo asi

Código PHP:
<?php 


$busqueda
=$_POST['busqueda'];
$genero $_POST['categoria']; 
//cadena de conexion 
echo $busqueda;
$conexionmysql_connect("localhost""root""clave"); 
     
    
mysql_select_db("vprueba"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
    
//CUENTA EL NUMERO DE PALABRAS 
    
$trozos=explode(" ",$busqueda); 
    
$numero=count($trozos); 
    if (
$numero==1) { 
        
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE 
        
$cadbusca="SELECT nombre, genero, ano FROM peliculas WHERE genero LIKE '%$genero%' AND nombre LIKE '%$busqueda%' OR genero LIKE '%$busqueda%' LIMIT 10" or die(mysql_error()); 
    } elseif (
$numero>1) { 
        
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST 
        //busqueda de frases con mas de una palabra y un algoritmo especializado 
        
$cadbusca="SELECT nombre, genero MATCH ( nombre, genero ) AGAINST ( '$busqueda' IN BOOLEAN MODE) AS score FROM peliculas WHERE MATCH ( nombre, genero ) AGAINST ( '$busqueda' IN BOOLEAN MODE) ORDER BY score DESC LIMIT 10" or die(mysql_error()); 
    } 
    
$RES mysql_query($cadbusca,$conexion); 
    while (
$filamysql_fetch_assoc($RES)){ 
         
        
$fila['nombre'];  
        
$fila['ano'];  
         
        
$fila['genero'];  
        
$fila['calidad'];  
         
         
        echo 
"<div id='registropeli'>"
        echo 
"<ul><li><b>Titulo:</b></li>" .$fila['nombre'];  
        echo 
"<li><b>ao:</b></li>" .        $fila['ano'];  
         
        echo 
"<li><b>genero:</b></li>" .$fila['genero'];  
        echo 
"<li><b>calidad:</b></li>" .$fila['calidad']; 
         
         
        echo 
"</div>"
         
    } 
     

?>
  #11 (permalink)  
Antiguo 06/09/2010, 15:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con buscador interno(php y mysql)

amigo, estas confundiendo las cosas... el or die() solo va cuando ejecutas la consulta... con mysql_query()

pon mucha atención a la pregunta... ¿lo estas haciendo correctamente?

Código PHP:
// MAL
$cadbusca="SELECT nombre, genero, ano FROM peliculas WHERE genero LIKE '%$genero%' AND nombre LIKE '%$busqueda%' OR genero LIKE '%$busqueda%' LIMIT 10" or die(mysql_error());

// BIEN
$cadbusca="SELECT nombre, genero, ano FROM peliculas WHERE genero LIKE '%$genero%' AND nombre LIKE '%$busqueda%' OR genero LIKE '%$busqueda%' LIMIT 10";

mysql_query($cadbusca) or die(mysql_error()); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 06/09/2010, 15:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: problema con buscador interno(php y mysql)

ok tienes razon, lo siento, ya esta corregido el mensaje que me da es

furia de titanesYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH ( nombre,genero ) AGAINST ( 'furia de titanes' IN BOOLEAN MODE) AS score F' at line 1
la version del servidor es la 5.1.41
  #13 (permalink)  
Antiguo 06/09/2010, 15:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con buscador interno(php y mysql)

pakillo, ahora que ya tienes un mensaje debes saber que no corresponde a un error de PHP...

es problema de la consulta, que... debes saber no es PHP, así que por favor... analiza tu consulta, imprimela antes de ejecutarla, reflexiona lo que dice el mensaje, etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: mysql, buscadores
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 11:01.