Actualmente tengo un DB la cual NO puedo modificar y tengo que trabjar contra ésta tal y cómo esta.
Mediante PHP introduzco por teclado una cadena y realizo la búsqueda en la DB mostrando por pantalla los resultados. (Búsqueda versión antigua).
Aqui empieza la modificación que quiero hacer:
Suponiendo que la cadena introducida por teclado contiene carácteres raros (espacios, simbolos etc) no es capaz de encontrarlo en la DB puesto que no existe cómo tal en la DB.
1) He decidido aplicar una expresión regular para normalizar los datos introducidos por teclado. (De tal manera que sólo guardará una cadena con números y letras mayúsculas).
2) Vuelco el contenido de la columna de la tabla de la DB por la que voy a realizar la búsqueda a memoria en un array. Mientras vuelco el contenido también lo normalizo. (Sólo habrá números y letras mayúsculas).
3) Realizo la búsqueda del parámetro introducido por teclado contra el array que contiene los valores obtenidos de la columna de la tabla de la DB. Devuelvo un arrayNuevo con las posiciones de memoria del array que contiene el valor de la columna de la tabla.
4) En el arrayNuevo tengo el número de fila de la tabla de la DB dónde tengo la información.
Hasta aquí todo es correcto.
La búsqueda antigua la realizaba mediante un arrayB que contenía cadenas del estilo:
Código:
Haciendo algo similar a:R.codigo like '%VALOR_TECLADO%'; E.marcaID = 'COKE'; E.articuloID = 'A00'
Código:
Y después realizo:$sql_consulta2 = implode(" and ", $arrayB );
Código:
Se utiliza el like pero actualmente el like no es necesario puesto que en el arrayNuevo tengo las posiciones y accedo a la DB dónde puedo obtener las cadenas exactas por las que buscar. Tengo en el vector las cadenas necesarias y sé el número coincidencias o que habría que buscar.$sql_consulta = SELECT ... WHERE ".$sql_consulta2." ORDER BY ...
En lugar de pasarle:
R.codigo like '%VALOR_TECLADO%';
Tengo un array en el cual tengo almacenadas todas las cadenas exactas que habría que pintar.
¿Alguna idea de cómo solucionar la búsqueda y/o plantearla?