Foros del Web » Programando para Internet » PHP »

Buscador PhP y MySQL

Estas en el tema de Buscador PhP y MySQL en el foro de PHP en Foros del Web. A ver si me podeis echar una mano porque me estoy volviendo loco. Quiero programar un buscador con conexión a una BD MySQL y siempre ...
  #1 (permalink)  
Antiguo 17/11/2006, 06:57
 
Fecha de Ingreso: noviembre-2006
Mensajes: 4
Antigüedad: 17 años, 5 meses
Puntos: 0
Buscador PhP y MySQL

A ver si me podeis echar una mano porque me estoy volviendo loco. Quiero programar un buscador con conexión a una BD MySQL y siempre me dá el mismo error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...

Alguien sabe por que? he intentado multitud de opciones y siempre dá fallo....

Código PHP:
<?php
//cadena de conexion
mysql_connect("localhost","user","passw");
// 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, subtitulo FROM noticias WHERE VISIBLE =1
      AND titulo LIKE  '%$busqueda%' OR subtitulo LIKE  '%$busqueda%' LIMIT 50"
;
  } 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, subtitulo, id_noticia MATCH ( subtitulo, titulo )
      AGAINST (  '$busqueda' ) AS Score FROM noticias WHERE
      MATCH ( subtitulo, titulo ) AGAINST (  '$busqueda' ) ORDER  BY Score DESC LIMIT 50"
;
  }
  
$result=mysql("robeck_f1",$cadbusca);
  While(
$row=mysql_fetch_object($result))   
  {
    
//Mostramos los titulos de los articulos o lo que deseemos...
    
$titulo=$row->titulo;
    
$subtitulo=$row->subtitulo;
    echo 
$titulo." - ".$subtitulo."<br>";
  }
}
?>
Un saludo y gracias!
  #2 (permalink)  
Antiguo 17/11/2006, 07:00
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola!
ese error es xq tu sentencia sql tiene algo incorrecto.. ya sea un campo, una variable q no le llega...
comprueba q te lleguen todas las variables de busqueda, a base de echos, un vez q lo tengas todo comprobrado imprime tu consulta a ver si te sale correctamente o te falta o te sobre alguna cosa
EDITADO:
Código PHP:
 $result=mysql_query("robeck_f1",$cadbusca); 
saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #3 (permalink)  
Antiguo 17/11/2006, 08:24
 
Fecha de Ingreso: noviembre-2006
Mensajes: 4
Antigüedad: 17 años, 5 meses
Puntos: 0
He cambiado lo que me comentas y me sigue dando error

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/robeck/public_html/admin/buscar.php on line 20

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/robeck/public_html/admin/buscar.php on line 23


He puesto un
Código PHP:
echo $cadbusca
antes del while y me escribre:

SELECT titulo, subtitulo FROM noticias WHERE VISIBLE =1 AND titulo LIKE '%renault%' OR subtitulo LIKE '%renault%' LIMIT 50 (la palabra buscada es renault)
  #4 (permalink)  
Antiguo 17/11/2006, 08:37
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Código PHP:
//cadena de conexion
$link mysql_connect("localhost","user","passw");
mysql_select_db("noticias");
// 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, subtitulo FROM noticias WHERE VISIBLE =1
      AND titulo LIKE  '%$busqueda%' OR subtitulo LIKE  '%$busqueda%' LIMIT 50"
;
  } 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, subtitulo, id_noticia MATCH ( subtitulo, titulo )
      AGAINST (  '$busqueda' ) AS Score FROM noticias WHERE
      MATCH ( subtitulo, titulo ) AGAINST (  '$busqueda' ) ORDER  BY Score DESC LIMIT 50"
;
  }
  
$result=mysql_query($cadbusca,$link);
  While(
$row=mysql_fetch_object($result))   
  {
    
//Mostramos los titulos de los articulos o lo que deseemos...
    
$titulo=$row->titulo;
    
$subtitulo=$row->subtitulo;
    echo 
$titulo." - ".$subtitulo."<br>";
  }

Saludos
__________________
Hospedaje Web al mejor costo!
  #5 (permalink)  
Antiguo 17/11/2006, 09:02
 
Fecha de Ingreso: noviembre-2006
Mensajes: 4
Antigüedad: 17 años, 5 meses
Puntos: 0
Gracias a todos por contestar pero sigue sin funcionar. Error:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/robeck/public_html/admin/buscar.php on line 22

Necesita "algo" diferente ésta función?
  #6 (permalink)  
Antiguo 17/11/2006, 09:02
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Hola!
el error sigue en tu consulta.
prueba asi:
Código PHP:
  $result=mysql_query($cadbusca,$link) or die(mysql_error()); 
asi concretaremos mas el error q te esta devolviendo...
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #7 (permalink)  
Antiguo 17/11/2006, 09:04
 
Fecha de Ingreso: noviembre-2006
Mensajes: 4
Antigüedad: 17 años, 5 meses
Puntos: 0
Sorprendente.........el error que da ahora es : No database selected
  #8 (permalink)  
Antiguo 17/11/2006, 09:07
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
ok! pues ya lo tienes!
siempre es mejor crearte una archivo de conexion y en cada pagina llamarlo con un include o require!
Código PHP:
// Datos conexión a la Base de datos (MySql)
$sql_host="";  // Host, nombre del servidor o IP del servidor Mysql.
$sql_usuario="";  // Usuario de Mysql
$sql_pass="";    // contraseña de Mysql

$sql_db="";  // Base de datos que se usará.

# Connexión
$p_hook mysql_connect($sql_host,$sql_usuario,$sql_pass) or die ("Error de connexión: host/user/pass incorrecto");
$p_base mysql_select_db($sql_db,$p_hook) or die ("Error de connexión: base de datos incorrecta"); 
EDITADO: tambien usar el mysql_error();

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 17/11/2006, 09:11
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Intenta cambiar:

mysql_fetch_object
por mysql_fetch_assoc

de otra forma usa: mysql_fetch_row

Saludos

NOTA: a mi si me funciono la solución que te di, quizá por la versión de mysql.
__________________
Hospedaje Web al mejor costo!
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 05:29.