Tema: Buscador
Ver Mensaje Individual
  #14 (permalink)  
Antiguo 18/05/2011, 08:32
Avatar de stramin
stramin
 
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Buscador

has andado cerca, el problema de como lo haces es que incluyes los AND aunque el usuario no haya ingresado lo primero y por tanto empieza con AND, fijate en este, lee los comentarios que he puesto:

Código PHP:
$wheres=""//inicias una variable vacía
if ($marcamodelo$wheres "(marca LIKE '%".$marcamodelo."%' OR modelo LIKE '%".$marcamodelo."%')"// no necesitas UCASE cuando usas like
// en la variable $wheres guardas tu consulta
    
if ($tipobusca){ // en vez de ver si es falsa revisa que sea verdadera
  
if($wheres$wheres.=" AND"// solo si ya hay datos agregas AND
  
$wheres.= " tipo LIKE '$tipobusca'"//en vez de asignar diferentes variables usas una con todas
}
 
if (
$eslorade){ // puedes saber si una variable tiene algo dejandola sola en el if
  
if($wheres$wheres.=" AND"//debes repetirlo en todas
  
$wheres.= " tipo LIKE '$eslorade'"//si es texto no olvides las comillas
}// de esta forma no necesitas poner }else{ y te ahorras lineas
 
if ($esloraa){
  
f($wheres$wheres.=" AND"// no olvides el espacio antes de AND
  
$wheres.= " eslora <= $esloraa"// y el espacio antes de cada condicion
}

if (
$preciode){ // una variable es falsa si es: 0, NULL, "", false y "0"
  
f($wheres$wheres.=" AND"// el .= sirve para agregar texto
  
$wheres.= " precio >= $preciode";
}

if (
$precioa){
  
f($wheres$wheres.=" AND";
  
$wheres.= " precio <= $precioa";
}

if (
$anode){
  
f($wheres$wheres.=" AND";
  
$wheres.= " ano >= $anode";
}

if (
$anoa){
  
f($wheres$wheres.=" AND";
  
$wheres.= " ano <= $anoa";
}

// ahora aqui solo pones $where
$sql2 "SELECT * FROM mibarcobd WHERE $where ORDER BY $orden asc LIMIT $comienzo, $cant_reg"
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D