Foros del Web » Programando para Internet » PHP »

Modelos de busqueda

Estas en el tema de Modelos de busqueda en el foro de PHP en Foros del Web. Amigos, tengo el siguiente query para hacer busquedas en dos campos de una base de datos mediante un solo campo de texto. Mi problema es ...
  #1 (permalink)  
Antiguo 08/09/2008, 13:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Modelos de busqueda

Amigos, tengo el siguiente query para hacer busquedas en dos campos de una base de datos mediante un solo campo de texto. Mi problema es que al hacer una busqueda con este codigo tengo que colocar las palabras o frases completas para que el resultado sea positivo, si dentro del campo tengo una frase, para la busqueda tengo que colocarla completa y necesito que no sea asi, que pueda buscar por palabras solamente.

El query es el siguiente
Código PHP:
$sql "select * from tblibros where titulo='$_GET[buscar]' OR autor='$_GET[buscar]' ORDER BY id ASC"
Si alguien podra ayudarme para resolver este query, muchas gracias
  #2 (permalink)  
Antiguo 08/09/2008, 13:18
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: Modelos de busqueda

Usando LIKE:

Cita:
$sql = "select * from tblibros where titulo LIKE '%".$_GET['buscar']."%' OR autor LIKE '%".$_GET['buscar']."%' ORDER BY id ASC";
Saludos Suerte
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 08/09/2008, 13:22
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Respuesta: Modelos de busqueda

Te recominedo que uses MATCH en lugar de LIKE ya que es mucho mas rápida y te da los resultados tal como los necesitas.

Código:
$sel="SELECT * FROM  tblibros  WHERE MATCH (titulo, autor) AGAINST ('$_GET[buscar]' IN BOOLEAN MODE)";
Saludos!!!
__________________
"Eres grande por que caminas entre gigantes"
  #4 (permalink)  
Antiguo 08/09/2008, 13:33
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Modelos de busqueda

Amigo Thewebsaint, en el caso de query que me indicas el error que me esta presentado es que apenas ingreso a la pagina lo hace mostrandome todos los registros de una vez y cuando la busqueda si hace el filtrado de los registros.

Amigo ferbux, intente formar el query con tu sugerencia y me da el siguiente error
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'against '' in boolean mode)' at line 1".

que creen que pueda ser? y gracias por las varias ayudas que me estan dando
  #5 (permalink)  
Antiguo 08/09/2008, 13:35
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Modelos de busqueda

perdon ferbux el error que me da es este:
"The used table type doesn't support FULLTEXT indexes"
  #6 (permalink)  
Antiguo 08/09/2008, 13:51
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Modelos de busqueda

Que tal zubintro, para utilizar MATCH AGAINST, debes de utilizar indices FULLTEXT en los campos de tu tabla que vayas a incluir en la busqueda, mira este link

Buscador en PHP



Saludos.
  #7 (permalink)  
Antiguo 08/09/2008, 13:58
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Modelos de busqueda

Gracias por tu respuesta Carlojas, justamente encontre por internet que tendria que cambiar el tipo de tabla con la que estoy trabajando la cosa es que en phpmyadmin no se en que parte podria cambiar el tipo de tabla, esoty utilizando wampserver. Sabrias indicarme en que parte del Phpmyadmin o que instruccion sql tendria que correr para cambiar el tipo de tabla?
  #8 (permalink)  
Antiguo 08/09/2008, 14:02
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Respuesta: Modelos de busqueda

Código:
$buscar=$_GET['buscar'];


$sel="SELECT * FROM  tblibros  WHERE MATCH (titulo, autor) AGAINST ('$buscar' IN BOOLEAN MODE)";
$resul=mysql_query($sel) or die('Consulta fallida: ' . mysql_error());
$row=mysql_fetch_array($resul);
 
 print_r($row);
Pruebalo asi.
__________________
"Eres grande por que caminas entre gigantes"
  #9 (permalink)  
Antiguo 08/09/2008, 14:04
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Modelos de busqueda

La instrucción SQL es:

Código:
ALTER TABLE tabla ADD FULLTEXT(campo1, campo2);

Saludos.
  #10 (permalink)  
Antiguo 08/09/2008, 14:40
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Modelos de busqueda

Ya logre solucionar amigos, cambie el tipo de tabla (estaba por defecto en InnoDB) y la cambie con la sentencia sql "ALTER TABLE tblibros ENGINE = MYISAM" ahora utilice el metodo de busqueda sugerido por ferbux y funciona perfectamente!. Ahora tengo una duda, hay un campo donde el titulo del libro es "Curso introductorio de PHP". Al ingresar como parametro de busqueda PHP unicamente, no me recupera el valor. La cosa es que probe con palabras aisladas pero de mayor cantidad de caracteres y si efectua la busqueda. Alguien podria decirme a que se debe? Gracias por la ayuda a todos
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 15:55.