Archivo de la categoría: Programación

SQL y PHP tan lindos >.<

Mucho tiempo sin escribir nada por acá. Las razones…ninguna, soy una vaga. Además que no puedo seguir una línea estricta de temas. Por lo que ahora escribiré más tonterías que cosas informativas, pero antes quería sacar a relucir un problemita tonto que me había comido el coco por un día en mi trabajo y me puso de malas.

Verán, trabajo como “analista programador” (no soy experta, y creo que tampoco entusiasta friki en el tema, hay gente más rápida en estos truquitos que yo y con blogs geniales) en una empresa que realiza su propio software para sus tareas cotidianas (Seguros).

Tenía que realizar un pequeño filtro de búsqueda en PHP (que estuviera listo en menos de una semana laboral, estrés!!!) de datos personales: Nombres, apellidos, localidad. Hice todo de acuerdo al plan o eso creía, hasta que le muestro la fase beta beta beta 1 a la jefa. Pues nada, la búsqueda se comía parámetros, es decir que cuando buscaba “Maria” no traía todas las Maria!!!. (con acento y sin acento). Resulta que la base de datos no está estandarizada con todos los datos con acento o todos los datos sin acento. GRAN PROBLEMA.

Maldije un poquito mi ceguera, y me puse a indagar. Al final el query de SQL tenía que tener un patrón de búsqueda para acentos, de ésta forma buscaría en su totalidad los datos.

Solución:

Select * from Tabla where nombre = ‘Mar[ií]a’

Luego venía la parte más “fácil” sustituir TODAS las vocales de la palabra introducida por teclado a corchetes con y sin acento…obviamente el PHP está lleno de lindas funciones que buscan en cadenas, sustituyen cadenas, hacen malabares con cadenas, etc. Así que hice una función sencilla que sustituyera en toda la palabra lo que yo quería:

function busca_caracter($nombre)
{

//$nombre = “María Carolina”;

$nombre2 = ereg_replace(“á”,”a”,$nombre);
$nombre2 = ereg_replace(“a”,”[aá]”,$nombre2);
$nombre2 = ereg_replace(“é”,”e”,$nombre2);
$nombre2 = ereg_replace(“e”,”[eé]”,$nombre2);
$nombre2 = ereg_replace(“í”,”i”,$nombre2);
$nombre2 = ereg_replace(“i”,”[ií]”,$nombre2);
$nombre2 = ereg_replace(“ó”,”o”,$nombre2);
$nombre2 = ereg_replace(“o”,”[oó]”,$nombre2);
$nombre2 = ereg_replace(“ú”,”u”,$nombre2);
$nombre2 = ereg_replace(“u”,”[uú]”,$nombre2);

return $nombre2;
}

Lo que retornaria sería esto:

M[aá]r[ií][aá] C[aá]r[oó]l[ií]n[aá] y es lo que se coloca en el query SQL

SELECT * FROM tabla WHERE nombre LIKE ‘%M[aá]r[ií][aá] C[aá]r[oó]l[ií]n[aá]%’

Ya la búsqueda está genial, pero lo que no sé es que tan eficiente sea en tiempo de ejecución. No me dió tiempo de hacerle pruebas en profundidad. Si alguien sabe sí es ideal esa función antes del 5 de Enero de 2009 que me avise.

Anuncios
20 dólares compran mucho maní

Bazofia que aloja textos bazofia sobre bazofias de la vida diaria

A veces

la vida también es así...

TheCoevas official blog

Strumentisti di Parole/Musicians of words