Foros del Web » Programando para Internet » PHP »

Checkbox valor desmarcado

Estas en el tema de Checkbox valor desmarcado en el foro de PHP en Foros del Web. Hola a todos es estado buscando una manera de poder darle valor a un checkbox desmarcado o por lo menos en php encontrar la manera ...
  #1 (permalink)  
Antiguo 11/12/2014, 23:03
 
Fecha de Ingreso: abril-2014
Mensajes: 51
Antigüedad: 10 años
Puntos: 1
Pregunta Checkbox valor desmarcado

Hola a todos es estado buscando una manera de poder darle valor a un checkbox desmarcado o por lo menos en php encontrar la manera de ingresar ese checkbox que no existe :(

la idea es la siguiente

Código HTML:
<form action="Untitled-1.php" method="POST">

<input type="checkbox" name="ch[]" value="no" checked="checked" >
<input type="text" name="n[]" size="12" value="edy">
<input type="text" name="id[]" size="12" value="001">

<br>

<input type="checkbox" name="ch[]" value="si">
<input type="text" name="n[]" size="12" value="Mely">
<input type="text" name="id[]" size="12" value="002">

<br>

<input type="checkbox" name="ch[]" value="si">
<input type="text" name="n[]" size="12" value="Kevin">
<input type="text" name="id[]" size="12" value="">

<br>

<input type="checkbox" name="ch[]" value="si">
<input type="text" name="n[]" size="12" value="Bryan">
<input type="text" name="id[]" size="12" value="004">


<input type="submit" />
</form> 
pero el problema es que cuando no marco uno me dice error o si logro que no tire el error desordena la cadena

Código PHP:
if(!empty($_POST['ch'])) {
    foreach(
$_POST['ch'] as $indice => $valorm){

    if(isset(
$_POST['ch'])){ 
        
$nombre $_POST['n'][$indice]; 
        
$id $_POST['id'][$indice]; 
    }
    
    if (
$valorm=="si"){
        if(empty(
$id)){
            echo
"Guardamos: $nombre , estado: $valorm con id: $id<br />";
        }else{
            echo
"Actualizamos: $nombre , estado: $valorm con id: $id<br />";
        }
    }}
}

foreach(
$_POST['n'] as $indice => $valorm2){
    
$id $_POST['id'][$indice]; 
    
ini_set('display_errors','off');
    if(empty(
$valorm2)) {
        echo
"Guardamos sin check: $valorm2 con id: $id <br />";
        
}} 
El resultado con todos los checkbox activos es el siguiente :

Código Resultado:
Ver original
  1. Actualizamos: Mely , estado: si con id: 002
  2. Guardamos: Kevin , estado: si con id:
  3. Actualizamos: Bryan , estado: si con id: 004
un buen resultado pero si por ejemplo desmarco kevin pasa lo siguiente

Código Resultado:
Ver original
  1. Actualizamos: Mely , estado: si con id: 002
  2. Guardamos: Kevin , estado: si con id:
aparece Kevin con Si (checkbox) de Bryan siempre que un checkbox no esta toma su lular el siguiente.

Les agradecere su ayuda ya que no encuentro nada que me de una buena solucion.

Nota.
Incluso si coloco disable a un checkbox no es tomado en cuenta tampoco
  #2 (permalink)  
Antiguo 12/12/2014, 12:00
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Checkbox valor desmarcado

Hay varias alternativas:

Usar un select (SI/NO) que siempre te dará valor.

Al momento de crear tu formulario, numerar los campos
<input type="checkbox" name="ch[0]" value="no" checked="checked" >

Otra es recorrer los campos con un for usando otro campo que no sea el checkbox

Código PHP:
Ver original
  1. foreach($_POST['id'] as $indice =>$valor){
  2.    if(isset($_POST['ch'][$indice])//verificas si existe o no el checkbox para el conjunto de campos actual.
  3. }
  #3 (permalink)  
Antiguo 12/12/2014, 13:01
 
Fecha de Ingreso: abril-2014
Mensajes: 51
Antigüedad: 10 años
Puntos: 1
Respuesta: Checkbox valor desmarcado

Muchas gracias por tu respuesta! realmente si tienes razón no es recomendable trabajar directamente con el checkbox así que la solución fue usar un input hidden y agregar un condición al checkbox si se selecciona agregar "si" al input hidden si se des selecciona agregar "no" al input asi en el foreach uso el input para acceder al valor

Les dejo el codigo html
Código HTML:
Ver original
  1. <form action="Untitled-4.php" method="POST" name="formx">
  2.  
  3.    
  4. <input type="checkbox" name="active" value="1" checked="checked" onclick=" if (document.formx.active.checked==true)
  5. { document.getElementById('active_1').value = 'si'; } else { document.getElementById('active_1').value = 'no';}">
  6. <input type="text" id="active_1" name="activeM" value="si" >
  7.  
  8. <input type="text" name="n" size="12" value="Kevin">
  9. <input type="text" name="id" size="12" value="003">
  10.  
  11.  
  12. <input type="submit" />
  13. </form>

y asi puedo agregar mas datos dinámicos. claro esta el nombre de las casillas aumenta con codigo php

Etiquetas: checkbox, 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 23:25.