Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/08/2008, 07:06
ilie
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: buscador---paso a paso---

Lo que se puede hacer es al obtener los criterio de búsqueda dividirlos en sus respectivas palabras:
Código PHP:
//por ejemplo
if($criterio1 != ""){
$listaCriterio1 explode(' ',$criterio1); 

//y con ello formar la condición de búsqueda:
//si hubiera criterios anteriores hay que comprobarlos por si hay que añadir AND a la claúsura WHERE: 

if($sqlCriterioAnterior != ""  ){$sqlCriterio1 "AND (";}
else{
$sqlCriterio1 "(";}

for(
$i 0$i<count($listaCriterio1); $i++){
if(
$i>0){$sqlCriterio1.="OR ";}
$sqlCriterio1 .= "Criterio1 REGEXT '$listaCriterio1[$i]' ";
}
$sqlCriterio1.=") ";
$criterioAnterior.=$sqlCriterio1;

Donde REGEXP podemos verlo explicado aquí: http://dev.mysql.com/doc/refman/5.0/es/regexp.html

$sqlCriterioAnterior se refiere al criterio
Los paréntesis es porque hacemos queremos que coincidan todos los criterios pero también que en cada uno aparezca al menos una de las expresiones:

(a || b || c ...)&&( d || e || f...).... donde (a || b || c ...) es un criterio de búsqueda.
(esta fórmula se puede sustituir por la que se quiera)

Y por último componer la consulta:

$sqlTotal="Select * FROM ... WHERE $criterioAnterior....;