Foros del Web » Programando para Internet » PHP »

Tranportar array checkbox

Estas en el tema de Tranportar array checkbox en el foro de PHP en Foros del Web. Hola, quiero trasladar un array con los valores de los checkboxes seleccionados en un formulario a otro mediante una variable de sesion. El código que ...
  #1 (permalink)  
Antiguo 12/07/2006, 05:38
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 9 meses
Puntos: 0
Tranportar array checkbox

Hola, quiero trasladar un array con los valores de los checkboxes seleccionados en un formulario a otro mediante una variable de sesion.

El código que tengo, pero que no me funciona es el siguiente:

Código PHP:
    print("<table width='325'  border=1 cellspacing=5 cellpadding=10>");
      for (
$i=0$i $_SESSION['cuenta'] ; $i++)
      {
          print(
"<tr>");
        print(
"<td align='right'>");
        
          print (
$_SESSION['array_tam'][$i]." kB");
          print(
"</td>");
  
          print(
"<td>");
          print (
$_SESSION['array_arch'][$i]);
      
          echo 
"<td><input type='checkbox' name='del_me[]' value=$nombre_archivo[$i]>";
      
          print(
"</td>");
          print(
"</tr>");
     
      }
  
      
$_SESSION['array_borr']=array();
      
$_SESSION['array_borr']='del_me[]'
Gracias
  #2 (permalink)  
Antiguo 12/07/2006, 09:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para que usas una variable de sesión con un "total" del los checkbox que tienes? .. Deberías simplemente "contarlos" (los que tengas en dicho array) con la función count() aplicada a tu array. Por otro lado ten presente que en tu array de ckeckbox sólo tendrás los valores de los checkbox que selecciones (no todos ..sólo los seleccionados).

En esta FAQ se detalla el proceso .. en ese caso para propagarlo por el URL (o en formularios) .. pero es la misma técnica uses sesiones o cookies incluso ..

http://www.forosdelweb.com/showthrea...710#post518710

Otro detalle, usa comillas dobles donde las requieras . no uses simples por "comodidad" ni las omitas cuando son requeridas (y para evitar otro tipo de porblemas .. ejemplo cuando tu "value=...." tenga espacios por ejemplo ...)

Código PHP:
echo "<td><input type=\"checkbox\" name=\"del_me[]\" value=\"".$nombre_archivo[$i]."">"; 
Supongo que en general las sesiones te funcionaran .. y tienen sus valores? .. Puedes checkearlo usando:

Código PHP:
echo "<pre>";
print_r($_SESSION);
echo 
"</pre>"
así ves todo lo que tenga dicha varaible y en que estructura ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 12/07/2006, 10:00
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 9 meses
Puntos: 0
Lo que quiero es tener los valores del array (que contienen nombres de archivos) en otro formulario distinto, para poder desde ahí borrarlos. Lo hago así porque tengo separadas las partes de presentación, lógica de negocio y datos.
  #4 (permalink)  
Antiguo 12/07/2006, 10:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Lo hago así porque tengo separadas las partes de presentación, lógica de negocio y datos.
Ok .. pero dá igual esa separación si la propagación de datos en sí es por el URL (como se explica en la FAQ mencionada) o si es por una sesión. (No es que te esté obligando a que lo propagues en el URL .. las sesiones para tu caso son igualmente válidas).

Por lo demás no me has confirmado si las sesiones en general funcionan en tu aplicación o si has probado la sugerencia del "print_r()" para ver que contiene tu sesión ... Tampoco concretas si conocías el "detalle" sobre como trabaja los checkbox y por qué es conveniente contarlos (con count() a tu array) y no tener una variable extra para que tu indiques cuantos seleccionastes ... (En definitiva .. seguimos igual...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 12/07/2006, 11:01
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 9 meses
Puntos: 0
Hola, las sesiones en general si me funcionan, he puesto lo que me dijieste
Código PHP:
echo "<pre>";
print_r($_SESSION);
echo 
"</pre>"
y me salen valores para todo excepto para [array_borr] que es la que en estos momentos me interesa.

Por otro lado, desconozco los detalles sobre la conveniencia de hacer count() sobre los array de checkboxes y tampoco los he visto en el enlace a la FAQ que me has pasado.

Saludos
  #6 (permalink)  
Antiguo 12/07/2006, 12:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por pepe500
Hola, las sesiones en general si me funcionan, he puesto lo que me dijieste
Código PHP:
echo "<pre>";
print_r($_SESSION);
echo 
"</pre>"
y me salen valores para todo excepto para [array_borr] que es la que en estos momentos me interesa.

Por otro lado, desconozco los detalles sobre la conveniencia de hacer count() sobre los array de checkboxes y tampoco los he visto en el enlace a la FAQ que me has pasado.

Saludos
Cita:
Por otro lado, desconozco los detalles sobre la conveniencia de hacer count() sobre los array de checkboxes y tampoco los he visto en el enlace a la FAQ que me has pasado.
Ok, .. en el link de la FAQ que mencioné no usa count() (usa foreach() por qué el ejemplo se basa en un sólo array que propagar ...). En tu caso podrías usar foreach() .. pero si propagases más de un array necesitarías un "for()" como lo haces para usarlo como unico indice para recorrer en "paralelo" los N array propagadas.

De todas formas .. la teoría que te comenté al respecto es igualmente válida .. sólo tendras en tu array de checkbox los indices que selecciones ...

Cita:
salen valores para todo excepto para [array_borr] que es la que en estos momentos me interesa.
Esto es normal .. Si te fijas ... donde se ejecuta PHP? .. para cuando tu estás en tu formulario seleccionando tus checkbox, esa porción de código que haces en el mismo script:

$_SESSION['array_borr']=array();
$_SESSION['array_borr']='del_me[]';

no está actuando para nada .. sólo dando un valor a esa variabel de sesión tal cual lo ves "textual" ..

Esos checkbox que generas bajo ese bucle tienes que enviarlo a otro script de proceso ya sea el mismo u otro para que puedas tomarlo en:

Código PHP:
$_POST['del_me'][$x
(o el método que lo envies). En general .. todo esto debería está bajo un formulario HTML y su botón "enviar" (submit) hacia el script que lo procese (sea ese mismo u otro).

Esto sería lo que describe la FAQ en cuestión. Si sólo tienes ese dato que propagar (un sólo array) usa un foreach() para recorrerlo (no un for() con un "count()" para contar sus elementos .. es más directo el foreach())

Una vez que te llegue esos datos a tu scritp (aunque sea el mismo .. pero en una "recarga") .. ahí si quieres vuelvas todo $_POST['del_me'] sobre tu sesión:

Código PHP:
$_SESSION['array_borr']=$_POST['del_me']; 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 13/07/2006, 05:17
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 9 meses
Puntos: 0
Buenas, ya utilizo:

Código PHP:
$_SESSION['array_borr']=array();
$_SESSION['array_borr']=$_POST['del_me']; 
Pero al hacer:

Código PHP:
echo "<pre>";
print_r($_SESSION);
echo
"</pre>"
solo me aparece en el campo de array_borr lo siguiente:

Código PHP:
[array_borr] => Array
        (
            [
0] => 
            [
1] => 
            [
2] => 
        ) 
(Esto sucede si he seleccionado 3 checkboxes, aparen tantos valores como checkboxes seleccione)

Saludos
  #8 (permalink)  
Antiguo 13/07/2006, 07:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
¿Y los checkbox están tomando su valor esperado? (al parecer no, pero si funciona el hecho de la generación del array y funciona como se espera: tantos indices en ese array como checkbox seleciones) .. Revisa tu código HTML generado y mira si los "value" de esos checkbox toman el valor esperado.

Y .. esto no es necesario:
$_SESSION['array_borr']=array();

si luego ya haces:
$_SESSION['array_borr']=$_POST['del_me'];


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 13/07/2006, 09:17
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 9 meses
Puntos: 0
Ok, como tu decias, he mirado el código HTML y el valor asignado a value era erroneo. Lo he corregido y lo he dejado así:

Código PHP:
echo "<td><input type='checkbox' name='del_me[]' value=$_SESSION[array_arch][$i]>"
Pero ahora el valor de array_borr es:

Código PHP:
[array_borr] => Array
        (
            [
0] => Array[0]
            [
1] => Array[1]
        ) 
No se si se puede acceder de alguna manera a esos valores o es que hay alguna parte del código que está mal.

Gracias
  #10 (permalink)  
Antiguo 13/07/2006, 09:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues ahora te toca revisar por qué:
$_SESSION[array_arch][$i]

obtienes un array .. !! (no sé como o de donde llega ese dato ..)

Te recomiendo que RESPETES las comillas dobles donde corresponda!!!! (siempre en este mensaje he corregido esos problemas y tu los omites .. no pongo la comillas o los \" por qué sí .. es por TU bien ..)

Código PHP:
echo "<td><input type=\"checkbox\" name=\"del_me[]\" value=\"".$_SESSION['array_arch'][$i]."\">"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 13/07/2006, 09:55
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 9 meses
Puntos: 0
Eso era, al ponerlo como tu dices ahora ya ha funcionado.

Muchas gracias.
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 16:54.