Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/08/2019, 09:53
tuadmin
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 7 meses
Puntos: 120
Respuesta: Buscar valores con espacios SQL

Cita:
Iniciado por katanaweb Ver Mensaje
Estimados,

Hace mucho que no uso PHP y estoy un poco perdido tengo un buscador, que busca "nombre y apellido" en una tabla mySQL, antes tenía dos columnas "nombre" y otra "apellido" y funcionaba, ahora es una sola columna con los dos datos.

Ej. "LOIACONO VICENTE JAIME"

La búsqueda la hago así:

$sql = "SELECT * FROM clientes WHERE nombre LIKE '%".$name."%'";

Pero como ven, por ejemplo el caso anterior tiene un doble espacio, y por ejemplo si no se escibe tan cual no funciona.

Alguna sugerencia?
solo usa mas LIKE's, el string de nombre filtralo y conviertelo a LIKE de SQL, y unelos con AND u OR dependiendo del resultado

Código PHP:
<?php
$nombre 
'pedro   perrales'//extremos las partes del nombre
$array_nombres explode(" ",$nombre);
//Filtramos el resultado para ignorar espacios en blanco
$array_nombres array_filter($array_nombres,function($val){
    return 
strlen($val)>1;//No existe ningun nombre que sea de un solo caracter
});
//Creamos un array con el formato del LIKE MSYQL
$array_sql_like array_map(function($name){
    return 
"nombre LIKE '%".$name."%'";
    
},
$array_nombres);
//Unimos todos los LIKES con AND para indicar que todo el nombre debe estar en el registro
$sql_like implode(" AND ",$array_sql_like);
//SELECT * FROM clientes WHERE nombre LIKE '%pedro%' AND nombre LIKE '%perrales%'

//Unimos todos los LIKES con OR para indicar que cualquier nombre debe estar en el registro
//$sql_like = implode(" OR ",$array_sql_like);
//SELECT * FROM clientes WHERE nombre LIKE '%pedro%' OR nombre LIKE '%perrales%'

$sql "SELECT * FROM clientes WHERE ".$sql_like."";

print(
$sql);
ya de ti depende como hacerlo, el FULLTEXT que te sugirieron, solo trabaja con tablas MYISAM el LIKE es para todo tipo de motor
las diferencias entre un LIKE y FULLTEXT son
LIKE=string exacto
FULLTEXT=string casi similar

en todo caso muchos dejaron de usar ese tipo de búsqueda FULLTEXT y a los que les es necesario estan USANDO sphinx o similares
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9