Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Checkbox

Estas en el tema de Checkbox en el foro de PHP en Foros del Web. Wenas gente,, Tengo un pequeño detalle al enviar y recibir los checkbox[] Yo sé que cuando se envian los checkbox solo se mandan los que ...
  #1 (permalink)  
Antiguo 03/12/2014, 14:44
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Checkbox

Wenas gente,,


Tengo un pequeño detalle al enviar y recibir los checkbox[]

Yo sé que cuando se envian los checkbox solo se mandan los que esten seleccionados.

Pero si yo tengo este ejemplo:

Código HTML:
Ver original
  1. Titulo:
  2. <input type="text" name="titulo[]" />
  3.  
  4. Mostrar titulo:
  5. <input type="checkbox" name="mostrar_titulo[]" value="1"/>
  6. ------------------------------------
  7.  
  8. Titulo:
  9. <input type="text" name="titulo[]" />
  10.  
  11. Mostrar titulo:
  12. <input type="checkbox" name="mostrar_titulo[]" value="1"/>
  13. -------------------------------------
  14.  
  15. Titulo:
  16. <input type="text" name="titulo[]" value="dsnajdnjsnsaj" />
  17.  
  18. Mostrar titulo:
  19. <input type="checkbox" selected name="mostrar_titulo[]" value="1"/>

En el PHP como saber que yo seleccione el 3er checkbox? ya que cuando envio el POST este queda en el índice número 1 ya que es el único que se envia.

Última edición por Maganius; 03/12/2014 a las 14:49
  #2 (permalink)  
Antiguo 03/12/2014, 14:58
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Checkbox

Prueba a poner diferentes values a los checkboxes.
  #3 (permalink)  
Antiguo 03/12/2014, 15:09
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Checkbox

Hola PHPeros

Yo pensé lo mismo pero algo que no aclaré fue que los campos se pueden eliminar.

Entonces si yo declaro que al inicio los checkbox tienen value 1,2,3, en el caso que el usuario elimine uno tendría que re-ordenar todos los values no?
  #4 (permalink)  
Antiguo 03/12/2014, 15:18
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Checkbox

por cada input que tienes se genera un nuevo indice

si tienes
checkbox[]
checkbox[]
checkbox[]

se guardaran los valores como
0-> valor 1
1-> valor 2
2-> valor 3

exactamente en el mismo orden en que se envian los valores que es el mismo en que los tienes en el html,
  #5 (permalink)  
Antiguo 04/12/2014, 11:59
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Checkbox

Hola ArturoGallegos

Se guardarían en esos valores si los 3 checkbox estuviera seleccionados de lo contrario solamente se envian los seleccionados.

Como vinculas el primer titulo con el primer checkbox y asi sucesivamente?
  #6 (permalink)  
Antiguo 04/12/2014, 14:05
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Checkbox

Una pregunta: ¿Para qué necesitas saber qué checkbox fue marcado si lo importante es el valor o valores recibidos?

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 04/12/2014 a las 14:10 Razón: Corrección gramatical
  #7 (permalink)  
Antiguo 04/12/2014, 20:13
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Checkbox

Hola Alexis88

Si yo armo de esta forma para recoger los inputs

Código PHP:
Ver original
  1. for($i=0;$i<count($_POST["titulo"]);$i++){
  2.     "INSERT INTO work (titulo,mostrar_titulo") VALUES ("$_POST[titulo][$i]","$_POST[mostrar_titulo][$i]");
  3. }

y selcciono solamente el segundo checkbox este va a estar formado asi:

0 -> valor 2

por lo que en vez de habilitar a mostrar el título 2, mostrará el título 1.

Última edición por Maganius; 04/12/2014 a las 20:19
  #8 (permalink)  
Antiguo 04/12/2014, 21:23
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Checkbox

Y no te es factible enumerarlos?

Me refiero a usar usar titulo[0]
Cita:
Titulo:
<input type="text" name="titulo[0]" />

Mostrar titulo:
<input type="checkbox" name="mostrar_titulo[0]" value="1"/>
------------------------------------

Titulo:
<input type="text" name="titulo[1]" />

Mostrar titulo:
<input type="checkbox" name="mostrar_titulo[1]" value="1"/>
-------------------------------------

Titulo:
<input type="text" name="titulo[2]" value="dsnajdnjsnsaj" />

Mostrar titulo:
<input type="checkbox" name="mostrar_titulo[2]" value="1"/>
de esa forma al recuperarlos podrás comprobar el indice, para que no se te mezclen
  #9 (permalink)  
Antiguo 04/12/2014, 21:56
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Checkbox

Perfecto ArturoGallegos

Se me habia olvidado que se le pueden asignar los índice.

para el que tenga duda de como armar el código, yo lo armé así.

Código HTML:
Ver original
  1. <form action="testsend.php" method="post">
  2. <input type="text" name="txt[0]" />
  3. <input type="checkbox" name="check[0]" value="1" />
  4.  
  5. <input type="text" name="txt[1]" />
  6. <input type="checkbox" name="check[1]" value="1" />
  7.  
  8. <input type="text" name="txt[2]" />
  9. <input type="checkbox" name="check[2]" value="1" />
  10. <input type="submit" />
  11. </form>

Código PHP:
Ver original
  1. foreach($_POST["txt"] as $key => $txt){
  2.         echo $txt."<br>";
  3.         echo $_POST["check"][$key]."<br>";
  4. }

Etiquetas: checkbox, select
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 05:49.