Foros del Web » Programando para Internet » PHP »

problema con arreglo de checkbox

Estas en el tema de problema con arreglo de checkbox en el foro de PHP en Foros del Web. Como están amigos ya he buscado por el foro y no encuentro la solución a mi problema. tengo el siguiente codigo: while($data = $conexion->Extraer2()) { ...
  #1 (permalink)  
Antiguo 30/06/2010, 12:47
 
Fecha de Ingreso: febrero-2007
Mensajes: 17
Antigüedad: 17 años, 2 meses
Puntos: 0
Exclamación problema con arreglo de checkbox

Como están amigos ya he buscado por el foro y no encuentro la solución a mi problema.

tengo el siguiente codigo:

while($data = $conexion->Extraer2())
{
$n = $i + 1;
?><input type="checkbox" name="chek[]" value="<?php echo $data[codautgana]?>"/><?php echo $data['codgan'].' '.$data['descate'].' '.$data['detgan'];?><br />
<?php
}

es un arreglo de checkbox, todo trabaja bien pero mi problema es que cuando estoy haciendo validaciones las cuales hago con php, y regreso al formulario pierdo el valor del checkbox, es decir si tengo un campo del formulario vacio y no puede estar vacio entonces muestor el mensaje que el campo no puede estar vacio y regreso al formulario para llenarlo. ahi es donde pierdo el valor del checkbox.

no se si me explique bien
  #2 (permalink)  
Antiguo 30/06/2010, 12:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con arreglo de checkbox

es muy simple, debes agregar el atributo checked a aquel elemento que desees marcar... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/06/2010, 13:00
 
Fecha de Ingreso: febrero-2007
Mensajes: 17
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: problema con arreglo de checkbox

gracias por tu respuesta pateketrueke ya lo intente asi pero entonces siempre me quedan marcadas todas, yo solo necesito que queden marcadas las que se marquen al enviar el formulario y si da el error estas queden marcadas
  #4 (permalink)  
Antiguo 30/06/2010, 13:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema con arreglo de checkbox

pues precisamente ahí esta el truco... ;)

debes saber crear la condición adecuada...
Código PHP:
if ($hay_error && $este_valor == $valor_check_box_actual) echo ' checked="checked"'
un poco de lógica no viene nada mal...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/06/2010, 13:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 17
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: problema con arreglo de checkbox

si yo entiendo esa parte ya lo habia echo asi pero con checkbox sencillos pero nunca habia usado uno en forma de vector

lo quise hacer de esta forma
while($data = $conexion->Extraer2())
{
$n = $i + 1;
?><input type="checkbox" name="chek[]" value="<?php echo $data[codautgana]?>"if ($_POST[check] < 0 echo ' checked="checked"'/><?php echo $data['codgan'].' '.$data['descate'].' '.$data['detgan'];?><br />
<?php
}

pero no me sirvio, pense en cambiar $_POST[check] por $check[$i] por ser este un arreglo pero nada tampoco, esa es mi duda
  #6 (permalink)  
Antiguo 30/06/2010, 14:07
 
Fecha de Ingreso: febrero-2007
Mensajes: 17
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: problema con arreglo de checkbox

ya solucione lo hice asi:
<?php
if(isset($guardar))
{
$k=0;
foreach($_POST['chek'] as $chek){
$valor[$k] = $chek;
if ($chek >0)
$k++;

}
}
$i = 0;
while($data = $conexion->Extraer2())
{
$n = $i + 1;

?><input type="checkbox" name="chek[]" value="<?php echo $data[codautgana]?>" <?php if($valor[$i] > 0) echo 'checked="checked"';?>/><?php echo $data['codgan'].' '.$data['descate'].' '.$data['detgan'];?><br />
<?php
$i++;
}
?>

Gracias por su ayuda

Etiquetas: checkbox, arreglos
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 22:42.