Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/04/2012, 08:25
DoHITB
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Respuesta: Buscador con PHP

Yo veo muy viable la opción de zalito12, sobretodo si es un select de una tabla.
Si, además, quieres "sorprender" en la web, podrías hacer los select (del form) desplegados, con opción multiple, y en la validación hacer un select agrupado.

Partiendo del código de zalito12 (copio y modifico), yo haría algo así:

Código:
$marca = $_POST['marca'];
$medida = $_POST['medida'];
$velocidad = $_POST['velocidad'];
$whereMarca = "";
$whereMedidad = "";
$whereVelocidad = "";
$cadena = "";
$where = "";

for($i=0;$i<count($marca);$i++){
  $whereMarca .= $marca[$i].", "; //el ".=" es como hacer "$where = $where.$variable"
}

for($i=0;$i<count($medida);$i++){
  $whereMedida .= $medida[$i].", ";
}

for($i=0;$i<count($velocidad);$i++){
  $whereVelocidad .= $velocidad[$i].", ";
}

//Esto lo hacemos ya que los strings acabarán en ", " y provocaría fallo en SQL
$whereMarca = substr($whereMarca, 0, -2);
$whereMedida = substr($whereMedida, 0, -2);
$whereVelocidad = substr($whereVelocidad, 0, -2);

if($whereMarca != ""){
  $where .= "marca in (".$whereMarca.");
}

if($whereMedida != ""){
  if($where != ""){
    $where .= " or ";
  }

  $where .= "medida in (".$whereMedida.")";
}

if($whereMedida != ""){
  if($where != ""){
    $where .= " or ";
  }

  $where .= "velocidad in (".$whereVelocidad.")";
}

$cadena = "SELECT * FROM neumaticos where ".$where." ORDER BY marca ASC, medida ASC, velocidad ASC";
Lo último que faltaría sería crear los selects en desplegado y de selección múltiple. Esto se hace mediante los atributos "size" y "multiple", además de tener que añadir corchetes ("[]") al atributo "name". Sería algo así (el seleccionar varios se hace con ctrl+click):

Código:
<select name="miSelect[]" size=10 multiple>