Lo que debes hacer es generar una sentencia SQL "dinámicamente" a partir de las palabras que pueda contener tu cadena de busqueda (frase)...
En general tendría que quedarte algo así:
SELECT * FROM tabla WHERE campo LIKE '$palabra1' AND campo LIKE '$palabra2' AND campo LIKE '$palabraN'
(con o sin "wildcars" (comodines) %...%)
Eso ya depende de si quiers que localice exactamente "nose de algo" .. o tambien: "nose
demostracion algo"
Código PHP:
/*
IN:
$nombre .. Cadena de busqueda ..
$operador ... AND | OR
OUT
String .. SQL completo con bloques de "LIKE" ...
*/
function busqueda_xnombre_generaSQL($nombre,$operador){
// Obtenemos las palabras de la cadena de busqueda $nombre
// Se entiende como "palabra" a algo que le preceda un espacio.
$nombre_palabras=explode(" ",$nombre);
// Iniciamos la sentencia SQL .. (ojo con los espacios del final)
$sql="SELECT * FROM clientes ";
// Si la cadena de busqueda está vacia ..
if (empty($nombre)){
$sql .=" ORDER BY nombre_cliente";
return $sql;
} else {
// Sino ... Empezamos a formar los grupos "LIKE" a base de las palabras que contiene la cadena de busqueda (explode() nos dió un array ...)
$sql .=" WHERE ";
// Contamos las palabras y formamos un bucle .. Podría ser un for() en lugar de foreach() y el "if" ..
$total_palabras=count($nombre_palabras);
$contador=0;
foreach ($nombre_palabras as $palabra){
// Se vá concatendo cada bloque "LIKE" generado .. Ojo con los espacios.
$sql_busqueda .=" nombre_cliente LIKE '%".$palabra."%' ";
// Se mira si estamos en el último elemento del array (en la última palabra de busqueda .. y si no es así .. concatena el Operador Lógico (puede ser AND u OR ..)
if ($total_palabras-1 > $contador){
$sql_busqueda .= $operador;
}
// Se incrementa el contador (el for() lo haría igual ..)
$contador++;
}
// Del SQL obtenido: SELECT * FROM tabla WHERE (boques LIKE) ... Le concatenamos el resto de opciones .. Ejemplo: ordenar por cierto campo ...
$sql .=$sql_busqueda." ORDER BY nombre_cliente";
// Y .. se devuelve el SQL generado (cadena)
return $sql;
}
}
La función es sólo para que te hagas una idea .. usa sus nombre de tus campos.
Su uso:
Código PHP:
mysql_query("busqueda_xnombre_generaSQL($frase_busqueda,'AND')");
Un saludo,