Foros del Web » Programando para Internet » PHP »

Quitar el la los las de busqueda Mysql

Estas en el tema de Quitar el la los las de busqueda Mysql en el foro de PHP en Foros del Web. Hola a todos, creo que es una tonteria, pero no consigo que me funcione. Si hago una búsqueda desde el buscador mi formulario php a ...
  #1 (permalink)  
Antiguo 23/10/2009, 05:40
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 6 meses
Puntos: 0
Quitar el la los las de busqueda Mysql

Hola a todos, creo que es una tonteria, pero no consigo que me funcione.

Si hago una búsqueda desde el buscador mi formulario php a la base de datos mysql de esta forma:

El sigilo

Me muestra el artículo de "El sigilo y además todos los que contienen "el".

No sé si me explico, necesitaría que no me consultase; el, las, los las, que si busco "el sigilo" busque solo con "sigilo".

El código es el siguiente:


<?
$sql_server = "localhost";
$sql_user = "XXX";
$sql_pass = "XXX";
$sql_db = "XXX";

$cont = mysql_connect($sql_server, $sql_user, $sql_pass);
if($_GET['start'] == "")$inicio = 0;else $inicio = $_GET['start'];

$palabra_busqueda = $_GET['termino'];

if( strlen($palabra_busqueda) < 4) {
$msg = "Por favor introduzca al menos tres carácteres para su búsqueda";
}else{

$array_busqueda = explode(" ",$palabra_busqueda);

$SQL_links = "SELECT link_name, link_desc, link_url FROM `inl_links` WHERE 2";

foreach($array_busqueda as $val){
$SQL_links .=" and `link_name` like '%$val%' or link_desc like '%$val%' ";
}

$SQL_links .="order by link_name";

$linksporcategoria = mysql_db_query($sql_db,$SQL_links);

$linksporcategoria_total = mysql_db_query($sql_db,$SQL_links_total);

}
?>


Muchas gracias de antemano
  #2 (permalink)  
Antiguo 23/10/2009, 06:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Quitar el la los las de busqueda Mysql

En lugar de usar LIKE, lo mejor sería que uses búsquedas FULLTEXT.
Revisa esto: http://dev.mysql.com/doc/refman/5.0/...xt-search.html

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 23/10/2009, 08:16
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Quitar el la los las de busqueda Mysql

Buenas tardes David, he probado a cambiar:

$SQL_links .=" and `link_name` like '%$val%' or link_desc like '%$val%' ";

por:

$SQL_links .=" and `link_name` fulltext '%$val%' or link_desc fulltext '%$val%' ";

pero entonces al buscar no muestra ningún resultado.

No sé si será culpa de la línea de código:

$SQL_links = "SELECT link_name, link_desc, link_url FROM `inl_links` WHERE 2";

Creo que el WHERE no debería ser 2, lo he probado con 0 y 1 y me da distintos resultados. También he probado a poner Str_replace y que "el" "las" "los" "las" .. me los sustituya por "" pero entonces muestra todos los registros de la base de datos.
  #4 (permalink)  
Antiguo 23/10/2009, 08:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Quitar el la los las de busqueda Mysql

¿Revisaste el link que te indico David? El fulltext tienes que hacerlo al crear la base de datos o puedes modificarla, no se hace en la consulta.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 23/10/2009, 08:47
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Quitar el la los las de busqueda Mysql

Código php:
Ver original
  1. foreach($array_busqueda as $val){
  2. if(strlen($val)>3)
  3. $SQL_links .=" and `link_name` like '%$val%' or link_desc like '%$val%' ";
  4. }
Podrias directamente poner un LIKE cambiando los espacios por "%".. cambiar " xxx "(espacio+3 letras+espacio) por "%".. etc
Despues podrias hacer algo mas elaborado.. pero creo que eso es lo que querias

saludos
  #6 (permalink)  
Antiguo 23/10/2009, 08:58
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Quitar el la los las de busqueda Mysql

Buenas tardes abimaelrc he revisado el enlace, y entiendo que lo que debo de tocar esta directamente en la base de datos.

He entrado a través de Phpmyadmin, y he podido comprobar que es MYIsam, pero no encuentro por ningún lado lo de FULLTEXT, perdonar por mi ignorancia.
  #7 (permalink)  
Antiguo 23/10/2009, 09:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Quitar el la los las de busqueda Mysql

No se cual phpMyAdmin tengas, pero, por lo general cuando tu vas a crear una tabla, ellos tienen casi a lo ultimo un campo en forma de checkbox que la figura aparece con una T y este dice Texto Completo o FullText. Lo seleccionas y listo ahora indexa esa columna.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 23/10/2009, 09:09
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Quitar el la los las de busqueda Mysql

Es el iconito en las propiedades de las tablas, ahi le agrega la propiedad FULLTEXT a tu tabla :)
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #9 (permalink)  
Antiguo 23/10/2009, 09:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Quitar el la los las de busqueda Mysql

Sólo como comentario adicional, aparte de indexar el campo para búsquedas FULLTEXT, hay que usar MATCH ... AGAINST en la consulta para realizar ese tipo de búsquedas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 23/10/2009, 14:44
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Quitar el la los las de busqueda Mysql

Muchisimas gracias, es impresionante el esfuerzo que realizais para ayudar a los programadores que no tenemos tanto conocimiento.

Finalmente lo he podido resolver gracias a Fernand0. Tan sólo he puesto la línea:

if(strlen($val)>3)

tal y como comenta Fernand0 y ya me muestra todos los resultados correctamente. Me imagino que la sentencia dice que si hay carácteres inferiores a 3 que no los cuente, de esta forma tan sencilla arreglas el problema de todas las preposiciones.

De nuevo MUCHAS GRACIAS A TODOS !!! llevaba un par de días sin encontrar la solución.
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 22:12.