Foros del Web » Programando para Internet » PHP »

Hacer consulta segun checkbox

Estas en el tema de Hacer consulta segun checkbox en el foro de PHP en Foros del Web. Buenos dias amigos del foro espero me puedan orientar con la siguiente consulta. Tengo un formulario con checkbox y necesito que segun los marcados realize ...
  #1 (permalink)  
Antiguo 20/03/2012, 10:31
 
Fecha de Ingreso: julio-2011
Mensajes: 161
Antigüedad: 12 años, 9 meses
Puntos: 3
Pregunta Hacer consulta segun checkbox

Buenos dias amigos del foro espero me puedan orientar con la siguiente consulta.
Tengo un formulario con checkbox y necesito que segun los marcados realize diferentes consultas, tengo bien definidas mis consultas pero necesito unirlar con un OR en el caso que fuera mas de una.Gracias.
<form name="formulario" action="prueba2.php" method="post">
<?php
echo "<input type='checkbox' name='requerimientos[]' value='1'>Culminados<br>";
echo "<input type='checkbox' name='requerimientos[]' value='2'>Detenido<br>";
echo "<input type='checkbox' name='requerimientos[]' value='3'>Retrasado<br>";
echo "<input type='checkbox' name='requerimientos[]' value='4'>Detenido<br>";
?>
<input type="submit" name="enviar" value="Enviar" />
</form>
-------------

Luego lo proceso aqui
<?php
error_reporting(0);
$requerimientos= implode(",",$_POST['requerimientos']);
$partes=explode(",", $requerimientos);
$longitud= strlen($requerimientos);
for($i=0;$i<$longitud;$i++){
$dominio=$partes[$i];
$consulta="select id,codigo,fecha_fin,fecha_inicio,sup_asignado,asig nado,completado from tareas where";
if($dominio=="1"){ //Culminados
//echo "Es uno";
$consulta1="completado!='0000-00-00 00:00:00'";

}else{
if($dominio=="2"){
//echo "Es dos";
$consulta2="CURDATE()<fecha_fin AND completado LIKE '0000-00-00 00:00:00'";

}
if($dominio=="3"){
//echo "Es tres";
$consulta3="CURDATE()>fecha_fin AND completado LIKE '0000-00-00 00:00:00' AND fecha_fin!='0000-00-00'";
}
if($dominio=="4"){
//echo "Es cuatro";
$consulta4="CURDATE()<fecha_fin AND completado LIKE '0000-00-00 00:00:00' AND fecha_fin!='0000-00-00'";
}
}

}
$cadena=$consulta."".$consulta1." OR ".$consulta2." OR ".$consulta3." ".$consulta4;
echo $cadena;
?>
  #2 (permalink)  
Antiguo 20/03/2012, 16:17
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Hacer consulta segun checkbox

Tu código PHP sin ofender esta pésimo, obtienes de $_POST['requerimientos'] un array que después lo unes en un string que después de nuevo vuelves a convertir de nuevo en un array igual al que arroja $_POST['requerimientos'] solo para meter todo en un for, horrible!, pero bueno, el código deberia ser algo así...

Código PHP:
Ver original
  1. <?php
  2.  
  3. //$requerimientos = $_POST['requerimientos'];
  4. $requerimientos = array(1,2,3,4);
  5.  
  6. $sql = 'select id,codigo,fecha_fin,fecha_inicio,sup_asignado,asig nado,completado from tareas where ';
  7. $addSql = false;
  8. foreach($requerimientos as $item) {
  9.     if ($addSql) {
  10.         $sql .= ' OR ';
  11.     }
  12.  
  13.     switch($item) {
  14.         case 1:
  15.             $sql .= 'completado!=\'0000-00-00 00:00:00\' 1 ';
  16.             $addSql = true;
  17.             break;
  18.         case 2:
  19.             $sql .= 'CURDATE()<fecha_fin AND completado LIKE \'0000-00-00 00:00:00\' 2 ';
  20.             $addSql = true;
  21.             break;
  22.         case 3:
  23.             $sql .= 'CURDATE()>fecha_fin AND completado LIKE \'0000-00-00 00:00:00\' AND fecha_fin!=\'0000-00-00\' 3 ';
  24.             $addSql = true;
  25.             break;
  26.         case 4:
  27.             $sql .= 'CURDATE()<fecha_fin AND completado LIKE \'0000-00-00 00:00:00\' AND fecha_fin!=\'0000-00-00\' 4 ';
  28.             $addSql = true;
  29.             break;
  30.     }
  31. }
  32.  
  33. echo $sql;

Nota: el 1, 2, etc al final de los SQL era para "debuguear" el código, tienes que borrarlo para que funcione correctamente >.<
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: checkbox, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:00.