PHP - Consultar datos similares a lo escrito en un textbox

 
Vista:

Consultar datos similares a lo escrito en un textbox

Publicado por Esteban (13 intervenciones) el 15/08/2019 23:40:30
Hola quiero hacer una consulta de la ciudad en la que se encuentran unos usuarios de mi web.

Actualmente uso el operador LIKE y tengo el siguiente código para hacer la consulta:

1
2
3
4
$buscar_idioma = $_POST['buscar_idiomah'];
$buscar_ciudad = $_POST['buscar_ciudadh'];
 
$resultados = mysqli_query($conexion,"SELECT * FROM $tabla_db1 WHERE ubicacion like '%$buscar_ciudad%' && idioma like '%$buscar_idioma%'");


suponiendo que quiero buscar la ciudad "Cali"...
Cuando busco "Ca" esta búsqueda me muestra todos las ciudades que inician con "Ca". De igual forma, si mi búsqueda fuera "al", el resultado de la búsqueda también seria Cali.

Pero si mi búsqueda es: "Cali, Valle del cauca", no se muestran resultados.
Hay alguna forma de obtener el resultado "Cali", si mi busqueda es "Cali, Valle del cauca"?


De antemano gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consultar datos similares a lo escrito en un textbox

Publicado por joel (1269 intervenciones) el 16/08/2019 07:57:13
Hola Esteban, la solución pasa por utilizar indices FULLTEXT, a los cuales le puedes pasar la cadena entera.
1
$resultados = mysqli_query($conexion,"SELECT * FROM $tabla_db1 WHERE MATCH (ubicacion) AGAINST ('Cali, valle del cauca') && idioma like '%$buscar_idioma%'");

La única manera que se me ocurre de hacerlo con LIKE, es que dividas la cadena en diferentes palabras, y hagas un like con todas ellas con la opción OR... algo así:
1
$resultados = mysqli_query($conexion,"SELECT * FROM $tabla_db1 WHERE (ubicacion like '%Cali%' || ubicacion like '%Vale%' || ubicacion like '%Cauca%') && idioma like '%$buscar_idioma%'");

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consultar datos similares a lo escrito en un textbox

Publicado por Esteban (13 intervenciones) el 16/08/2019 19:10:30
Gracias por tu respuesta Joel.
Estoy intentando darle solución con el indice FULL TEXT como dices. Ya les aplique dicho indice a los campos en MySQL y aplique la consulta de la forma que propones. Sin embargo creo que el problema ahora esta en el array con que pido que imprima los resultados. Pues me arroja el siguiente error:


Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in...


Este es mi código:

1
2
3
4
5
6
7
8
9
10
$buscar_idioma = $_POST['buscar_idiomah'];
$buscar_ciudad = $_POST['buscar_ciudadh'];
 
 
$resultados = mysqli_query($conexion,"SELECT * FROM $tabla_db1 WHERE MATCH (ubicacion) AGAINST ('$buscar_ciudad')  && idioma like '%$buscar_idioma%' ");
 
 
while ($consulta = mysqli_fetch_array($resultados))
 
{  acá va mi echo para imprimir los resultados, pero no creo que tenga algo que ver...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar