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";
}