Foros del Web » Programando para Internet » PHP »

Problema con Buscador de BD

Estas en el tema de Problema con Buscador de BD en el foro de PHP en Foros del Web. Buenas tengo el siguiente buscador: Código PHP: //busca en una base de datos hecha en mysql con campos distribuidor, marca, producto, comentario, pero recuerda que puedes cambiarlos  $campo  = array( "ta_name" ,  "ta_descripcion" ,  "ta_ubicacion" ,  "ta_servicios" ,  "ta_pclaves" );  //aqui ponemos los campos de la tabla en que queremos buscar  $numelentos  =  count ( ...
  #1 (permalink)  
Antiguo 18/07/2011, 18:30
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Pregunta Problema con Buscador de BD

Buenas tengo el siguiente buscador:

Código PHP:
//busca en una base de datos hecha en mysql con campos distribuidor, marca, producto, comentario, pero recuerda que puedes cambiarlos 
$campo = array("ta_name""ta_descripcion""ta_ubicacion""ta_servicios""ta_pclaves"); 
//aqui ponemos los campos de la tabla en que queremos buscar 
$numelentos count($campo);//toma el numero de campos y lo guarda para usarla despues 
$bandera "si";//bandera para indicar si se encontro la palabra 
for ($i=0$i $numelentos$i++) 
//realizaremos el recorrido de busqueda en cada campo que seleccionamos de nuestra tabla 
{// inicio for 
$campoac$campo[$i];//guardamos el campo actual 

$a$_POST['palabra'];//Guardamos la palabra que se buscara 

if ($a==false)// si no se ingreso una palabra nos avisa 
 

  echo 
"<p>Debe especificar la busqueda</p> \n"
  echo 
"</html></body> \n"
  exit; 
 } 

$link mysql_connect(" "" "" "); 
//si se ingreso la palabra nos conectamos 
mysql_select_db(" "$link); 
//que busque en el campo actual la palabra enviada y lo ordene por un campo especifica 
$sql "SELECT * FROM t_taller WHERE $campoac LIKE '%{$_POST['palabra']}%' ORDER BY ta_name"
$result mysql_query($sql$link); 

if (
$row mysql_fetch_array($result))// si se encontro la palabra 
 

   
mysql_field_seek($result,0); 
  while (
$field mysql_fetch_field($result)){ 
   echo 
"<td><b></b></td> \n"
 } 
Sucede lo siguiente:

Supongamos que tengo un registro; este posee la siguiente frase

EL AIRE ESTA FRESCO si pongo para buscar EL AIRE me arroja la busqueda, todo bien hasta ahí...

Pero si coloco AIRE FRESCO o sea saltandome una palabra, no lo reconoce... o sea no arroja datos...

Que debo colocar para que esto sea factible?

Slds,
  #2 (permalink)  
Antiguo 18/07/2011, 18:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con Buscador de BD

Para eso tienes que usar una búsqueda Full Text en tu BDD por palabra, en el foro de Bases de Datos te puden dar más información.

Saludos.
  #3 (permalink)  
Antiguo 18/07/2011, 18:56
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Problema con Buscador de BD

Hola que tal.

Interactúa con la funcionalidad de la sentencia LIKE así como sus parámetro y utiliza la más te funcione ejemplos;

Código PHP:
Ver original
  1. <?php
  2. $sql = "SELECT * FROM t_taller WHERE $campoac LIKE '%{$_POST['palabra']}%' ORDER BY ta_name";  
  3.  
  4. $sql = "SELECT * FROM t_taller WHERE $campoac LIKE '{$_POST['palabra']}%' ORDER BY ta_name";  
  5.  
  6. $sql = "SELECT * FROM t_taller WHERE $campoac LIKE '%{$_POST['palabra']}' ORDER BY ta_name";  
  7.  
  8. $sql = "SELECT * FROM t_taller WHERE $campoac LIKE '{$_POST['palabra']}' ORDER BY ta_name";  
  9.  
  10. ?>

También te recomiendo que leas un poco más el manual se SQL.

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #4 (permalink)  
Antiguo 18/07/2011, 20:20
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Problema con Buscador de BD

Me sugieres es que pase la seleccion varias veces por las tablas??

Lo que he estado leyendo sobre LIKE es que hay funciones en la misma que hacen que la busqueda sea un tanto especifica...


Serviría si utilizo esto así?




$sql = "SELECT * FROM t_taller WHERE $campoac LIKE '% [{$_POST['palabra']}]%' ORDER BY ta_name";

Utilizando [] para tomas las sentencias que empiecn por cualquiera de las palabras que coloque...

O hay otras por ejm:

$sql = "SELECT * FROM t_taller WHERE $campoac LIKE '%{$_POST['palabra']}_' ORDER BY ta_name";

No se si así me funcione por lo menos para que tome la primera palabra...

Etiquetas: bd, html, mysql, registro, sql, tabla, 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 09:24.