Estoy creando un formulario de búsqueda avanzada con varios select donde algunos option tienen la opción "todas" con valor vacio (value="") y tambien algunos campos de texto vacios.
Si lo hago con dos opciones me sale perfectamente pero al meter 3, 4 o 5 ya me da error.
El formulario es este:
Código PHP:
  
<form action="busqueda-avanzada-kites.php" method="post" name="busqueda avanzada kites">
Marca:<select id="marca" name="marca">
<option value=""  >Todas las marcas</option>
<?php
$marcas=array("F-one", "North", "Nobile", "Naish", "Best", "Slingshots", "Airush", "Wipika", "Liquidforce", "Takoon", "Advance", "Dakine", "Ozone", "Star", "RRD", "Cabrinha", "Gastar", "Ocean Rodeo", "Flysurfer", "Crazyfly", "Griffin", "Zeeko", "Flexifoil", "Bull", "Kiteloose", "Waiman", "Otra");
//$alfabetico=sort($marcas);
sort($marcas);  
foreach ($marcas as $ma => $value)
{    
    echo '<option value="'.$marcas[$ma].'" ';
    if($marcas[$ma] == $_POST['marca'])
    {
        echo 'selected="selected"';         
    }    
    echo '>'.$marcas[$ma].'</option>';    
}
?>
</select><br />
Modelo: <input name="modelo" type="text" value="<?php if(isset($_POST["modelo"])) {echo $_POST["modelo"];} ?>" /><br />
Medidas:<select id="medidas" name="medidas">
<option value=""  >Todas</option>
<?php
$medidas=array("4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16");
foreach($medidas as $me => $value)
{
    echo '<option value="'.$medidas[$me].'"';
    if($medidas[$me]== $_POST['medidas'])
    {
        echo 'selected="selected"';    
    }
    echo '>'.$medidas[$me].'</option>';
}
?>
</select><br />
<input type="hidden" name="id_kite" value="<?php echo $id_kite ?>" />
<input type="submit" name="buscar-kite" value="Buscar" /><br />
</form>   Código PHP:
   ?<php
if($_POST["marca"] !="" and $_POST["modelo"] != "")
{
    $busqueda = "Select * from kites where marca='".$_POST["marca"]."' and modelo='".$_POST["modelo"]."'";
}
elseif($_POST["marca"] !="" or $_POST["modelo"] != "")
{
    $busqueda = "Select * from kites where marca='".$_POST["marca"]."' or modelo='".$_POST["modelo"]."'";
}
elseif($_POST["marca"] =="" and $_POST["modelo"] == "")
{    
    $busqueda = "Select * from kites";    
}
?> 
   - si todos estan completos me hace la busqueda y me muestra el resultado con todos los campos
- si uno u otro está marcado o completo pero el otro no me muestra el resultado con el campo que se ha marcado.
- si todos están vacios me lo muestra todo.
Hasta aquí todo bien, pero si meto uno nuevo como medidas ya no completa los criterios anteriores:
He usado varias maneras pero por ahora no lo consigo, por ejemplo asi:
Código PHP:
   if($_POST["marca"] !="" and $_POST["modelo"] != "" and $_POST["medidas"] != "")
{
    $busqueda = "Select * from kites where marca='".$_POST["marca"]."' and modelo='".$_POST["modelo"]."' and medidas='".$_POST["medidas"]."'";
}
elseif($_POST["marca"] !="" or $_POST["modelo"] != "" or $_POST["medidas"] != "")
{
    $busqueda = "Select * from kites where marca='".$_POST["marca"]."' or modelo='".$_POST["modelo"]."' or medidas='".$_POST["medidas"]."'";
}
else
{    
    $busqueda = "Select * from kites";    
} 
    
 
 

