Foros del Web » Programando para Internet » PHP »

Problema con Busqueda avanzada

Estas en el tema de Problema con Busqueda avanzada en el foro de PHP en Foros del Web. Tengo este c´ñodigo. Y si bien siempre me funcionó esta vez no, pero solo cuando uso el espacio en la busqueda. Si busco sin espacio ...
  #1 (permalink)  
Antiguo 08/04/2014, 16:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Sonrisa Problema con Busqueda avanzada

Tengo este c´ñodigo. Y si bien siempre me funcionó esta vez no, pero solo cuando uso el espacio en la busqueda.

Si busco sin espacio me da la lista pero cuando uso deos palabras me da el error.

mysql_fetch_array() expects parameter 1 to be resource, boolean given in

Los campos ton todos TEXT en la base de datos.

No se porque el error.

Código PHP:
Ver original
  1. <?php
  2. include ('config.php');
  3. if (isset($_POST['buscar'])){
  4. $busqueda= $_POST['buscar'];
  5. }else{
  6.     $busqueda=0;
  7. }
  8. // BUSCAR si la cadena existe
  9. if ($busqueda<>''){
  10.    //CUENTA EL NUMERO DE PALABRAS
  11.    $trozos=explode(" ",$busqueda);
  12.    $numero=count($trozos);
  13.   if ($numero==1) {
  14.    //SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
  15.    $ListaDeProductos=mysql_query("SELECT * FROM articulos WHERE Concepto LIKE '%$busqueda%' OR Ref_Pro LIKE '%$busqueda%' OR Categoria3 LIKE '%$busqueda%' LIMIT 100");
  16.   } else if ($numero > 1) {
  17.   //SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
  18.   //busqueda de frases con mas de una palabra y un algoritmo especializado  
  19.   $ListaDeProductos=mysql_query("SELECT *, MATCH (Concepto,Ref_Pro) AGAINST ('".$busqueda."' IN BOOLEAN MODE) AS coincidencias FROM articulos WHERE MATCH (Concepto,Ref_Pro) AGAINST ('" . $busqueda . "' IN BOOLEAN MODE) ORDER BY coincidencias DESC");
  20. }
  21. }
  22. ?>
  #2 (permalink)  
Antiguo 08/04/2014, 17:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Busqueda avanzada

Agrega la siguiente modificación para saber la causa del error:

$ListaDeProductos=mysql_query("SELECT *, MATCH (Concepto,Ref_Pro) AGAINST ('".$busqueda."' IN BOOLEAN MODE) AS coincidencias FROM articulos WHERE MATCH (Concepto,Ref_Pro) AGAINST ('" . $busqueda . "' IN BOOLEAN MODE) ORDER BY coincidencias DESC") or die('Error en consulta: ' . mysql_error());

De entrada, no parece haber algo raro en la consulta, excepto que no estás escapando $busqueda, lo que te puede generar errores y/o inyección SQL. Para eso está mysql_real_escape_string().

Por otra parte, si tu versión de MySQL es menor a 5.6, entonces las tablas deben usar el motor MyISAM y no InnoDB y, por supuesto, debe existir un índice tipo FULLTEXT.

Referencias:

http://dev.mysql.com/doc/refman/5.6/...xt-search.html
http://dev.mysql.com/doc/refman/5.0/...trictions.html
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/04/2014, 06:55
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Problema con Busqueda avanzada

El error es: Error en consulta: The used table type doesn't support FULLTEXT indexes
  #4 (permalink)  
Antiguo 09/04/2014, 13:26
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Problema con Busqueda avanzada

tal como dice el amigo triby... el problema es que el tipo de tabla no soporta fulltext... fijate lode la version y MyISAM y eltema del index
  #5 (permalink)  
Antiguo 10/04/2014, 09:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Problema con Busqueda avanzada

Es que tengo que usar si o si esa tabla porque el cliente sube de una tabla diferente todo... por eso...
Como puedo hacer un buscador para esa que me sea mas exacto con muchas palabras.
  #6 (permalink)  
Antiguo 10/04/2014, 09:43
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Problema con Busqueda avanzada

podes cambiar los atributos de la tabla.. y agregar los indices.. necesarios.

no recuerdo si te permite cambiar el motor de almacenamiento.. (de innodb a myisam) fijate y si no te deja. podes exportar solo los datos, recrearla e importar los datos.
  #7 (permalink)  
Antiguo 10/04/2014, 10:01
 
Fecha de Ingreso: agosto-2010
Ubicación: peru
Mensajes: 115
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problema con Busqueda avanzada

talvez no creaste los index fulltex enlas tablas

Concepto,Ref_Pro

Etiquetas: busqueda, mysql, select, sql
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 16:44.