Foros del Web » Programando para Internet » PHP »

PHP OO Darle valor checkbox n00 seleccionado

Estas en el tema de Darle valor checkbox n00 seleccionado en el foro de PHP en Foros del Web. Buen día compañeros en esta oportunidad requiero de su ayuda , estoy trabajando con checkbox y necesito ingresar a mi BD los checkbox que han ...
  #1 (permalink)  
Antiguo 29/11/2014, 13:51
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Darle valor checkbox n00 seleccionado

Buen día compañeros en esta oportunidad requiero de su ayuda , estoy trabajando con checkbox y necesito ingresar a mi BD los checkbox que han sido marcados y los que no han sido marcados asignarles un valor , lo cual trabajo con un Array.

Mi codigo:
Código PHP:
Ver original
  1. <form action="#" method="post" >
  2. <input type="checkbox" name="check_list[]" value="C/C++"><label>C/C++</label><br/>
  3. <input type="checkbox" name="check_list[]" value="Java"><label>Java</label><br/>
  4. <input type="checkbox" name="check_list[]" value="PHP"><label>PHP</label><br/>
  5. <input type="hidden" value="1" name="filtro">
  6. <input type="submit" name="submit" value="Submit"/>
  7. </form>
  8. <?php
  9. if(isset($_POST['submit'])){
  10.  
  11. $opciones=$_POST['check_list'];
  12. $i=0;
  13. $n=count($opciones);
  14. while($i<$n){
  15.  
  16. echo $opciones[$i];
  17. $i++;
  18. }
  19.  
  20. }
  21. ?>
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #2 (permalink)  
Antiguo 29/11/2014, 14:19
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: Darle valor checkbox n00 seleccionado

El valor del atributo name es un string no una variable, por lo que no puedes montar un array de esa manera. Una forma de hacerlo sería esta:

Código PHP:
Ver original
  1. <form action="#" method="post" >
  2. <input type="checkbox" name="check_list_0" value="C/C++"><label>C/C++</label><br/>
  3. <input type="checkbox" name="check_list_1" value="Java"><label>Java</label><br/>
  4. <input type="checkbox" name="check_list_2" value="PHP"><label>PHP</label><br/>
  5. <input type="hidden" value="1" name="filtro">
  6. <input type="submit" name="submit" value="Submit"/>
  7. </form>
  8. <?php
  9. if(isset($_POST['submit'])){
  10.     $opciones = array();
  11.     for($A=0;$A<=2;$A++){
  12.         $opciones[] = $_POST['check_list_'.$A];
  13.     }
  14.     foreach($opciones as $opcion){
  15.         echo "- ".$opcion."<br />";
  16.     }
  17. }
  18. ?>
__________________
Diseño Web - Arisman Web
  #3 (permalink)  
Antiguo 29/11/2014, 14:49
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Darle valor checkbox n00 seleccionado

Saludos manuparquegiralda , tal como esta mi codigo imprime los checkbox que he marcado , pero los checkbox que no he marcado quiero asignarles un valor , ejemplo:
Si el checkbox esta Marcado diga 1 -> SI y si no esta marcado 2-> NO .

Gracias
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #4 (permalink)  
Antiguo 29/11/2014, 15:34
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: Darle valor checkbox n00 seleccionado

Cita:
Iniciado por nexus44 Ver Mensaje
Saludos manuparquegiralda , tal como esta mi codigo imprime los checkbox que he marcado , pero los checkbox que no he marcado quiero asignarles un valor , ejemplo:
Si el checkbox esta Marcado diga 1 -> SI y si no esta marcado 2-> NO .

Gracias

Siempre se aprende algo nuevo, no sabía que se podían crear arrays de esa forma en el formulario.

Pues imagino que el fallo está en que el value="C/C++" del checkbox siempre está definido y cuando lo recibes en PHP siempre estás recibiendo el value del campo esté o no esté seleccionado. Prueva a quitar el value del checkbox (<input type="checkbox" name="check_list[]"><label>Java</label>) en este caso CREO que debería de darte 0 si no está check o 1 si sí lo está.

Yo los checkbox y los formularios normalmente los trato con javascript antes de enviarlos y es aquí donde compruebo si están checkeados o no. Tendría que hacer pruebas para ver como ser reciben en PHP.
__________________
Diseño Web - Arisman Web
  #5 (permalink)  
Antiguo 29/11/2014, 15:50
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Darle valor checkbox n00 seleccionado

Pues intento manejarlo de la forma que me dices , para obtener todos los valores y me diga quienes fueron marcados obtengan el valor de 1 y los que no fueron marcados obtengan el valor de 0 , hasta el momento solo obtengo los que son marcados he intentado , manejarlo con un if pero nada.
Código PHP:
Ver original
  1. <form action="#" method="post" >
  2. <?php
  3. $a=0;
  4. while($a<3){
  5. ?>
  6. <input type="checkbox" name="check_list[]" value="<?php echo $a; ?>" ><label><?php echo $a; ?></label><br/>
  7. <?php
  8. $a++;
  9. }
  10. ?>
  11. <input type="hidden" value="1" name="filtro">
  12. <input type="submit" name="submit" value="Submit"/>
  13. </form>
  14. <?php
  15. if(isset($_POST['submit'])){
  16.  
  17. $opciones=$_POST['check_list'];
  18.  
  19. $i=0;
  20. $n=count($opciones);
  21. while($i<$n){
  22. echo $opciones[$i];
  23. $i++;
  24. }
  25.  
  26. }
  27. ?>
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #6 (permalink)  
Antiguo 29/11/2014, 16:20
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 12 años
Puntos: 1
Respuesta: Darle valor checkbox n00 seleccionado

En forma general he logrado seleccionar los primeros 2 checkbox y me arroja = 1 y el 3ero en 0 todo bien hasta hay me aparece en orden , pero cuando selecciono desde el segundo el orden cambia .
Código PHP:
Ver original
  1. <form action="#" method="post" >
  2. <?php
  3. $a=0;
  4. while($a<3){
  5. ?>
  6. <input type="checkbox" name="check_list[]" value="1" ><label><?php echo $a; ?></label>
  7. <input type="text" name="codigo[<?php echo $a; ?>]" value="<?php echo $a; ?>" />
  8. <br/>
  9. <br />
  10. <?php
  11. $a++;
  12. }
  13. ?>
  14. <input type="submit" name="submit" value="Submit"/>
  15. </form>
  16. <?php
  17. if(isset($_POST['submit'])){
  18.  
  19. $opciones=$_POST['check_list'];
  20. $codigo=$_POST['codigo'];
  21. $i=0;
  22. $n=count($codigo);
  23. while($i<$n)
  24. {      
  25. if (!isset($opciones[$i])){
  26. $opciones[$i]=0;
  27. }
  28. else{
  29. $opciones[$i]=1;
  30. }
  31.  echo $codigo[$i].'->'.$opciones[$i].'<br>';
  32.  $i++;
  33. }
  34. }
  35. ?>
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #7 (permalink)  
Antiguo 29/11/2014, 17:52
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: Darle valor checkbox n00 seleccionado

Vale mira, esto lo he probado y funciona. Pruebalo, tan solo tienes que saber que el 0 es C el 1 es Java y el 2 PHP. Cuando marcas alguno me imprime "on", cuando no está marcado no imprime nada

Código HTML:
Ver original
  1. <form action="#" method="post" >
  2. <input type="checkbox" name="check_list_0"><label>C/C++</label><br/>
  3. <input type="checkbox" name="check_list_1"><label>Java</label><br/>
  4. <input type="checkbox" name="check_list_2"><label>PHP</label><br/>
  5. <input type="hidden" value="1" name="filtro">
  6. <input type="submit" name="submit" value="Submit"/>
  7. </form>
  8. <?php
  9. if(isset($_POST['submit'])){
  10.    $opciones = array();
  11.    for($A=0;$A<=2;$A++){
  12.        $opciones[] = $_POST['check_list_'.$A];
  13.    }
  14.    $B = 0;
  15.    foreach($opciones as $opcion){
  16.        echo $B." - ".$opcion."<br />";
  17.         $B++;
  18.     }
  19. }
  20. ?>

Pruebalo y me cuentas
__________________
Diseño Web - Arisman Web

Etiquetas: checkbox, darle, seleccionado, valor
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 11:02.