Foros del Web » Programando para Internet » PHP »

Chekbox me devuelve siempre ON?

Estas en el tema de Chekbox me devuelve siempre ON? en el foro de PHP en Foros del Web. Hola amigos: Estoy con una rutina que no me acaba de funcionar, he leido varios mensajes sobre este tema, y aunque he aplicado alguna de ...
  #1 (permalink)  
Antiguo 27/08/2006, 14:23
 
Fecha de Ingreso: mayo-2006
Mensajes: 59
Antigüedad: 17 años, 11 meses
Puntos: 0
Chekbox me devuelve siempre ON?

Hola amigos:
Estoy con una rutina que no me acaba de funcionar, he leido varios mensajes sobre este tema, y aunque he aplicado alguna de las sugerencias continua igual.

El formulario(simplificado es)
Código PHP:
<form method="POST" Name ="frmTextos" action="<?php echo $_SERVER['PHP_SELF']; ?>">
       <?php echo $TEXTENOTESSORTIDA;
        For (
$nI 1$nI <= $nFotos$nI ++){;
        echo 
'<td><table width="100%" border="0">';
                 echo 
'<tr><td>'$aFotos[$nI].'</td>';
             echo 
'<tr><td>¿Borrar foto ? <input type="checkbox" name="lBorrar[]" value"'$nI .'">';
                 echo 
'<tr><td><input type="text" name="texto'$nI .'" size="100" value="'$aTextos[$nI].'"></td></tr>';
              echo 
'</table>';

        }
    
?>
    echo "<input type=\"hidden\" name=\"nFotos\" value=\"" . $nFotos . "\"/>";
</form>
Como podeis ver se trata de un chekbox dinamico.
He probado tanto por nombres variables como por array y aplicando "value" y sin.

Código PHP:
For ($nI2 1$nI2 <= $_POST['nFotos']; $nI2 ++){

    
// muestro el valor - que siempre me aprece "on"

    
echo '<h2>''lBorrar['$nI2.']</h2>';
    if ( 
$_POST['lBorrar['$nI2.']'] ="on" ){

        
// siempre me pasa por aqui.

        
echo '<h2>'$nI2.' este lo borrarmos</h2>';
        }else{
        echo 
'<h2>'$nI2 .' este NO lo borrarmos</h2>';
    }

Tambien he probado con foreach.

El problema fundamental está en que no domino correctamente el funcionamiento de checkbox.


Saludos y muychas gracias de antemano.
  #2 (permalink)  
Antiguo 27/08/2006, 16:34
Avatar de Belero  
Fecha de Ingreso: agosto-2006
Mensajes: 98
Antigüedad: 17 años, 8 meses
Puntos: 0
Puedes mirar este tema reciente que habla del tema
  #3 (permalink)  
Antiguo 29/08/2006, 15:27
 
Fecha de Ingreso: agosto-2006
Mensajes: 13
Antigüedad: 17 años, 8 meses
Puntos: 1
Buenas...Nose si ya lo habrás solucionado, pero haría algo parecido a mi caso:

Código PHP:
<form method="POST" Name ="frmTextos" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
       <?php echo $TEXTENOTESSORTIDA
        For (
$nI 1$nI <= $nFotos$nI ++){; 
        
$opcion[$nI]=$nI;  //array donde tendrás la posición de cada checkbox
        //en el array IBorrar tendrás únicamente la posición de los checkboxs marcados
        
echo '<td><table width="100%" border="0">'
                 echo 
'<tr><td>'$aFotos[$nI].'</td>'
             echo 
'<tr><td>¿Borrar foto ? <input type="checkbox" name="lBorrar[]" value"'$opcion[$nI] .'">'
                 echo 
'<tr><td><input type="text" name="texto'$nI .'" size="100" value="'$aTextos[$nI].'"></td></tr>'
              echo 
'</table>'

        } 
    
?> 
    echo "<input type=\"hidden\" name=\"nFotos\" value=\"" . $nFotos . "\"/>"; 
</form>

Código PHP:
$borrar $_POST['IBorrar'];
$nI2 0;
if (!empty(
$borrar)){
   foreach(
$opcion as $borrar){
      if(
in_array($borrar$_POST['IBorrar']))
         echo 
'<h2>'$nI2.' este lo borrarmos</h2>';
      else
         echo 
'<h2>'$nI2 .' este NO lo borrarmos</h2>';
   
$nI2++;
   }
}else{  
//no hay ningún checkbox marcado
   
For ($nI2 1$nI2 <= $_POST['nFotos']; $nI2 ++) 
      echo 
'<h2>'$nI2 .' este NO lo borrarmos</h2>';

PD: En el caso del array $opcion yo he utilizado una variable $_SESSION para almacenar su valor para su posterior utilización.

Saludos.
  #4 (permalink)  
Antiguo 29/08/2006, 15:45
Avatar de phprim  
Fecha de Ingreso: julio-2006
Ubicación: En mi trabajo
Mensajes: 90
Antigüedad: 17 años, 9 meses
Puntos: 0
ayudita

Cita:
Iniciado por marlos Ver Mensaje
Buenas...Nose si ya lo habrás solucionado, pero haría algo parecido a mi caso:

Código PHP:
<form method="POST" Name ="frmTextos" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
       <?php echo $TEXTENOTESSORTIDA
        For (
$nI 1$nI <= $nFotos$nI ++){; 
        
$opcion[$nI]=$nI;  //array donde tendrás la posición de cada checkbox
        //en el array IBorrar tendrás únicamente la posición de los checkboxs marcados
        
echo '<td><table width="100%" border="0">'
                 echo 
'<tr><td>'$aFotos[$nI].'</td>'
             echo 
'<tr><td>¿Borrar foto ? <input type="checkbox" name="lBorrar[]" value"'$opcion[$nI] .'">'
                 echo 
'<tr><td><input type="text" name="texto'$nI .'" size="100" value="'$aTextos[$nI].'"></td></tr>'
              echo 
'</table>'

        } 
    
?> 
    echo "<input type=\"hidden\" name=\"nFotos\" value=\"" . $nFotos . "\"/>"; 
</form>

Código PHP:
$borrar $_POST['IBorrar'];
$nI2 0;
if (!empty(
$borrar)){
   foreach(
$opcion as $borrar){
      if(
in_array($borrar$_POST['IBorrar']))
         echo 
'<h2>'$nI2.' este lo borrarmos</h2>';
      else
         echo 
'<h2>'$nI2 .' este NO lo borrarmos</h2>';
   
$nI2++;
   }
}else{  
//no hay ningún checkbox marcado
   
For ($nI2 1$nI2 <= $_POST['nFotos']; $nI2 ++) 
      echo 
'<h2>'$nI2 .' este NO lo borrarmos</h2>';

PD: En el caso del array $opcion yo he utilizado una variable $_SESSION para almacenar su valor para su posterior utilización.

Saludos.
pd2:seria weno que pongas en la etiqueta <chekbox la etriqueta value="un valor"> sino ponees value siempre que envies el check te saldra on
  #5 (permalink)  
Antiguo 14/10/2006, 04:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 59
Antigüedad: 17 años, 11 meses
Puntos: 0
Hola Marlos:

Gracias por preocuparte del tema.
Como puedes observar aun no lo he resuelto, lo que pasa es que como no conseguia rematarlo me he ido por otros derroteros, ha sido ahora que he vuelto a las andadas y he visto que la cosa tenia continuidad con tu respuesta.

Bien, he probado tu solucion, la he depurado y sigue sin funcionar, pues si ejecutas el script que hay a continuación veras, que nunca sabes cual es el check seleccionado.
Si marcas la opcion 1 y 2 marcaria la 0 y la 1 y si es la 3 solo marcará la 0, en fin si lo ejecutas los veras mas claro.


Saludos y muchas gracias.

Código PHP:
<html>
</body>
<?php
    $nFotos
0;
    
$aTextos[0] = "Textes";
        for (
$n 1$n <= 3;$n++){
                
$aTextos[] = "TEXTO".$n;
                
$nFotos $nFotos 1;
            }
//
// Muestro los valores del checkbox - Y NO FUNCIONA
//

if (array_key_exists('_Form_Guardar'$_POST)) {

    
$borrar $_POST['lBorrar']; 

        echo 
'<h2>'$borrar[0] .' Valores de lborrar</h2>'
        echo 
'<h2>'$borrar[1] .' Valores de lborrar</h2>'
        echo 
'<h2>'$borrar[2] .' Valores de lborrar</h2>'

    
$nI2 0
    if (!empty(
$borrar)){ 
       foreach(
$opcion as $borrar){ 
          if(
in_array($borrar$_POST['IBorrar'])) 
             echo 
'<h2>'$nI2.' este lo borrarmos</h2>'
          else 
             echo 
'<h2>'$nI2 .' este NO lo borrarmos</h2>'
       
$nI2++; 
       } 
    }else{  
//no hay ningún checkbox marcado 
       
For ($nI2 1$nI2 <= $_POST['nFotos']; $nI2 ++)  
          echo 
'<h2>'$nI2 .' este NO lo borrarmos</h2>'
    }  
}
?>

<form method="POST" Name ="frmTextos" action="<?php echo $_SERVER['PHP_SELF']; ?>">  
    <?php echo $TEXTENOTESSORTIDA;  
        For (
$nI 1$nI <= $nFotos$nI ++){;  
            
$opcion[$nI]=$nI;  //array donde tendrás la posición de cada checkbox 
            //en el array IBorrar tendrás únicamente la posición de los checkboxs marcados 
            
echo '<td><table width="100%" border="0">';  
                echo 
'<tr><td>'$aFotos[$nI].'</td>';  
            echo 
'<tr><td>¿Borrar foto ? <input type="checkbox" name="lBorrar[]" value"'$nI .'">';  
                echo 
'<tr><td><input type="text" name="texto'$nI .'" size="100" value="'$aTextos[$nI].'"></td></tr>';  
                  echo 
'</table>';  
        }  
    echo 
"<input type=\"hidden\" name=\"nFotos\" value=\"" $nFotos "\"/>";  
    
?>
    <tr><td><INPUT TYPE=SUBMIT VALUE="Gravar comentaris" name="Order1">
    <input type="hidden" name="_Form_Guardar" value="1"/>
  
</form> </body>
</html>
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 18:28.