Tema: Buscador
Ver Mensaje Individual
  #19 (permalink)  
Antiguo 19/05/2011, 02:26
Avatar de ken-obi
ken-obi
 
Fecha de Ingreso: julio-2004
Ubicación: Alicante
Mensajes: 314
Antigüedad: 19 años, 9 meses
Puntos: 6
Respuesta: Buscador

Cita:
Iniciado por stramin Ver Mensaje
no sirve, si no pones marca o modelo pero pones algo en todos los demás campos te va a quedar así:

Código MySQL:
Ver original
  1. WHERE tipo LIKE $tipobusca WHERE eslora >= $eslorade WHERE eslora >= $eslorade WHERE eslora <= $esloraa WHERE precio >= $preciode WHERE precio >= $precioa WHERE ano >= $anode WHERE ano >= $anoa

lo que te dará error ya que no puedes poner mas de un WHERE en tu consulta.

además creo que te complicaste infinitamente con la primera parte de la sentencia:

Código MySQL:
Ver original
  1. , MATCH(marca,modelo) AGAINST ('%".$marcamodelo."%' IN BOOLEAN MODE) AS rank
  2. MATCH(marca,modelo) AGAINST('%".$marcamodelo."%' IN BOOLEAN MODE)
  3. FROM mibarcobd WHERE

y luego en PHP, tienes variables no declaradas si no se ha seleccionado marca o modelo:

Código PHP:
Ver original
  1. SELECT *$marcamodeloprint $were $marcamodeloprintdos $tipobuscaprint $esloradeprint $esloraaprint $preciodeprint $precioaprint $anodeprint $anoaprint ORDER BY $orden asc LIMIT $comienzo, $cant_reg

alargas mucho tu código innecesariamente para hacer algo tan simple como comparar una cosa con otra.

...
PUES LLEVABAS TODA LA RAZON DEL MUNDO!!!

AL FINAL TE HICE CASO Y PROBE CON TU TEXTO Y VUALA! FUNCIONO A LA PERFECCION.

MUCHISIMAS GRACIAS

Código PHP:
if ($marcamodelo == "Buscar marca o modelo"){
    
$marcamodelo "";
}

$wheres=""//inicias una variable vacía
$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.= " eslora >= $eslorade"//si es texto no olvides las comillas
}// de esta forma no necesitas poner }else{ y te ahorras lineas
 
if ($esloraa){
  if(
$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"
  
if($wheres$wheres.=" AND"// el .= sirve para agregar texto
  
$wheres.= " precio >= $preciode";
}

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

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

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

// ahora aqui solo pones $where
$sql2 "SELECT * FROM mibarcobd WHERE $wheres ORDER BY $orden asc LIMIT $comienzo, $cant_reg"
__________________
Un mundo sin fin... !!! viva los moros y cristianos de ELDA !!!