Foros del Web » Programando para Internet » PHP »

ayuda con foreach!

Estas en el tema de ayuda con foreach! en el foro de PHP en Foros del Web. en este codigo estoy usando checkboxes para modificar datos en una tabla, Código HTML: <form name= "form1" method= "post" action= "borra.php" > <? while($row=mysql_fetch_array($result)) { ...
  #1 (permalink)  
Antiguo 08/09/2005, 13:46
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 12 años, 10 meses
Puntos: 0
ayuda con foreach!

en este codigo estoy usando checkboxes para modificar datos en una tabla,

Código HTML:
<form name="form1" method="post" action="borra.php">
<? 
while($row=mysql_fetch_array($result)) 
{  ?>
<td><input type="checkbox" name="activa[]" value="<? echo $row['NotaId']; ?>">
<?  echo $row['NotaId'];?></td> 
<? 
echo "<br>";
}
?>
  <br>
  <input type="submit" name="Submit" value="Submit">
</form> 
y este es el codigo que recibe los valores de los checkboxes,

Código PHP:
$victimas = isset($_POST['activa']) ? $_POST['activa'] : array();
foreach (
$victimas as $id) {
echo 
$id;

mi pregunta es la siguiente, si con este codigo puedo saber cuales han sido los checkboxes que active, como puedo hacerle para saber cuales estan activos y cuales son inactivos, espero que alguien pueda ayudarme
__________________
.. simplemente soy un mexicano apasionado ..
guasanericonsul.com
  #2 (permalink)  
Antiguo 08/09/2005, 15:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
De HTML sólo recibes los checkbox que se seleccionaron (marcaron, tickearon ...).

Para saber "los que no están seleccionados" deberías por otro médio enviar todos esos datos para así comparar los que sabes que fueron seleccionados con el total.

En principio .. podrías volver a realizar tu consulta SQL por los mismos parámetros que te llegó a arrojar todas las opciones del paso anterior .. pero en el script de proceso donde tomas los checkbox que fueron seleccionados. Con más seguridad podrías volcar todos esos valores a una sesión en ese punto y leerla donde terminas el proceso final.

Por ejemplo .. usando sesiones:
Código PHP:
<?
// inicio uso sesiones .. al principio de tu script ..
session_start();

seleccion_todos=array();
while(
$row=mysql_fetch_array($result)) 

     
// genero un array con todos los "ID's" que arroje la consulta.
     
$seleccion_todos[]=$row['NotaId'];
 
?>
<td><input type="checkbox" name="activa[]" value="<? echo $row['NotaId']; ?>">
<?  echo $row['NotaId'];?></td> 
<? 
echo "<br>";
}
// vuelco el array generado a una variable de sesión:
$_SESSION['todos']=$seleccion_todos;
?>
Y .. en el script de proceso final .. tendrás en $_SESSION['todos'] un array con todos los ID's posibles .. en tu $_POST['activa'] tienes el otro array con los ID's activos .. En tu bucle foreach() (pero aplicado a $_SESSION['todos']) podrías hacer algo tipo:

Código PHP:
session_start();
foreach (
$_SESSION['todos'] as $id) { 
   
$estado="inactivo";
   foreach (
$_POST['activa'] as $id_activo){
     if (
$id_activo==$id){
        
$estado="activo";
        break;
     }
   } 

   echo 
$id." --> ".$estado."<br>";


Más o menos sería así .. seguramente podrías ver otras funciones relacionadas con array's para la comparación de ambas para optimizar un poco el tema.

Un saludo,

PD: .. no me acuerdo si el foreach() deja el puntero del array al final .. si fuese así tendrás que usar reset($_POST['activa']); antes del echo $id ....
  #3 (permalink)  
Antiguo 09/09/2005, 11:05
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 12 años, 10 meses
Puntos: 0
Muchas gracias por la ayuda. me sirvio de mucho el codigo
:)
__________________
.. simplemente soy un mexicano apasionado ..
guasanericonsul.com
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 19:20.