Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/08/2006, 17:12
marlos
 
Fecha de Ingreso: agosto-2006
Mensajes: 13
Antigüedad: 18 años, 4 meses
Puntos: 1
Al final he tenido que controlar el array de chekbox a través de PHP, ya que en AJAX solo había conseguido obtener el primer elemento de array.
Expongo el código que he usado:

Código PHP:
<?php 
session_name
('opciones');    //defino la session como “opciones” 
session_start();             //inicio la session que me servirá para guardar  
                             //el array $opciones 

$numSesiones $_POST['numSesiones'];  //obtengo las sesiones deseadas 
$oper $_POST['oper'];                //obtengo el caso para el switch 

if (isset($_POST['oper'])) $oper $_POST['oper']; 
     
switch(
$oper


case 
"alta":        //en el caso de alta dibujo el formulario 

for ($i=0$i<=$numSesiones-1;$i++){     
    
$opciones[$i]=$i;        //pongo el valor de la posición en cada checkbox 
    
echo"<table><tr>     
     <td><input type=\"checkbox\" name=\"opcion[]\" value=\""
.$opciones[$i]."\" /></td> 
     </tr></table>"
;             

$_SESSION['opciones']=$opciones;  //asigno la variable SESSION con el array 
                                  //$opciones obtenido 

break; 



case 
"guardar":    //caso guardar donde recupero tanto los checkboxs que están 
                   //marcados como los que no lo están 

$i=0;            //inicializo a 0 
//compruebo que la sesion exista y que no estén vacíos los arrays de sesion y opcion 
if (isset($_SESSION['opciones']) && (!empty($_SESSION['opciones'])) && (!empty($opcion))){ 
    foreach (
$_SESSION['opciones'] as $opcion){ 
        if (
in_array($opcion,$_POST['opcion'])) 
            
$_POST['opcion2'][$i]="SI"
        else 
            
$_POST['opcion2'][$i]="NO"
        
$i++; 
    } 
}else{  
//significa que no hay marcado ningún checkbox con lo que relleno el  
        //array de todos los checkbox conforme no están marcados. 
     
for ($j=0$j<=$numSesiones-1;$j++) 
        
$_POST['opcion2'][$j]="NO"

break; 

}  
//fin del switch 
session_destroy();  //finalizo la sesion

//para ver los datos del formulario enviados a través de POST 
echo"Datos enviados: <pre>"
print_r($_POST); 
echo
"</pre>";         
?>
PD: He tenido que asignar los valores a otro array: $_POST['opcion2'] debido a que con $_POST['opcion'] no lo hacía bien.

PD2: En el caso de no haber ningún checkbox marcado he realizado un for para llenar el contenido del array a “no”.

PD3: Para mostrar el formulario el <table> lo he puesto dentro del for, ya que sino no me dejaba la linea de separacion.

Saludos.