Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2012, 09:54
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Error creando formulario de búsqueda avanzada con select option

Buenas.

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>
Y la búsqueda que uso es esta:

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";    
}
?> 
Con dos campos me va bien ya que:

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

¿Como podría hacerlo entonces con más de 2 campos?