jueves, 29 de mayo de 2008

realiza una búsqueda en mysql con varias palabras a la vez


Bueno, como en TecnosisMX no tengo privilegios de posteo, empiezo un nuevo tag en este blog :P

¿Han visto cómo cuando buscan en Google una serie de palabras no siempre las encuentra todas o encuentra unas cuantas en ciertas páginas? Bueno, pues ayer me tocó eralizar una paginilla ke buske en una base de datos basado en el año de publicación o ciertas palabras contenidas en el texto. Como buen programador de C salido del Tec pensé "puta madre, voy a tener ke chutarme una función ke separe las palabras -.-", pero mejor antes de empezar a hacerla (no es tan difícil, ya ke kién sabe cuantas veces la hice durante la carrera) me puse a buscar en Google una forma de hacer un query con varios operadores LIKE, entonces fue cuando di con la función explode(), ke es exactamente lo ke iba a programar, pero ya implementado en PHP (buské hace un rato y en C no existe).

Esta función lo ke hace es recibir 2 parámetros, el caracter ke kieres utilizar como separador y una cadena, y guarda el resultado en un array, para esto obviamente hay ke guardar el resultado en una variable. Así, la declaración kedaría:

$words=explode(" ", $_GET["words"]);

lo "complicado" empíeza cuando vamos a empezar a contruir nuestra sentencia en SQL, ya ke tenemos ke utilizar algunas líneas. A continuación les dejo la opción ke yo utilicé:

$words=explode(" ", $_GET["words"]);
$separator='';
foreach ($words as $word) {
if ($separator!='')
$separator.=' OR texto LIKE ';
$separator.="'%$word%'";
}
$sql="SELECT numero, fecha, seccion, subtipo, municipio, pagina, texto
FROM arteaga
WHERE texto LIKE ".$separator;

De esta forma podemos hacer un query utilizando n número de palabras, cada una de manera individual. Como lo ke necesité hacer fue implementar una búsqueda así, por eso no es tan largo el código, si tuviera ke implementar algo como lo ke hacen en Google como por ejemplo buscar "una cadena sin separaciones" las cosas se harían un poco más prolongadas.

Y bueno, esto es una de las cuantas cosas ke he aprendido a hacer en mi nueva chamba (y conste ke digo aprendi a hacer, porke conocía casi todo lo ke se utilizó, menos el explode y foreach, nada más ke al no utilizarlo pues me daba hueva hacer algo así :P

And if you're not down with that, I got two words for ya: SUCK IT

No hay comentarios.: