Foros del Web » Programando para Internet » PHP »

Como procesar todos los checkbox?

Estas en el tema de Como procesar todos los checkbox? en el foro de PHP en Foros del Web. Quiero saber si en php hay alguna forma de revisar que checkbox estan activos recorriendo uno por uno. Cual seria la forma o la manera ...
  #1 (permalink)  
Antiguo 03/05/2005, 10:32
 
Fecha de Ingreso: febrero-2004
Mensajes: 2
Antigüedad: 20 años, 2 meses
Puntos: 0
Mensaje Como procesar todos los checkbox?

Quiero saber si en php hay alguna forma de revisar que checkbox estan activos recorriendo uno por uno. Cual seria la forma o la manera mas facil de hacer un recorrido por todos los checkbox del formulario para trabajar unicamente con los seleccionados.
  #2 (permalink)  
Antiguo 03/05/2005, 10:42
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
De acuerdo

OK los chck box son para elegir una diversidad de opciones como por ejemplo cuales son mis hoobies y poder elegir entre una lista predefinida por nosotros.

Los checkbox le pones con un nombre igual para todos para que se conviertan en array:
<input type="checkbox" name="hobbies[]" value="Programacion">
<input type="checkbox" name="hobbies[]" value="Video Juegos">


Aqui tienes 2 check box con el mismo nombre, si los 2 checkbox se eligen entonces se enviaran sus valores en un array a la pagina php que los procesara.

pagina php que procesa.
Código PHP:
<?php
#aqui lo imprimes manualmente
echo $hobbies[0];
echo 
$hobbies[1];

#aqui los imprimes dinamicamente
$i=0;
while(
$i<=count($hobbies)){
 echo 
$hobbies[$i];
$i++;
}
?>
Esto es solo un ejemplo para orientarte, esto se puede ampliar mas pero aqui te dejo esta ayuda para que entiendas el proceso. cualquier otra pregunta dejanosla saber.

Saludos,
  #3 (permalink)  
Antiguo 20/05/2005, 10:54
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
Ok yo tengo algo parecido, pero resulta que los checkbox los genero desde una base de datos, pueden ser 20 como pueden ser 30 o más a medida que pase el tiempo de vida de la aplicación.

Lo que estoy por hacer es como identificar los check box que ha seleccionado el usuario e insertar esas selecciones en una base de datos, ejemplo si se selecciono 10 items se tienen que ingresar 10 filas en la tabla de mi base de datos con el value de cada check box.

ahora estoy generando los checkbox así

es una función propia, pero lo importante es que me extrae el contenido de las filas de la tabla tema y me los coloca independiente como checkbox

Código PHP:
Marque las casillas que desee conveniente;</p>
<?
$lookup_tema 
db_fill_array("SELECT * FROM tema order by tema ASC");

    if(
is_array($lookup_tema))
    {
      
reset($lookup_tema);
      while(list(
$key$value) = each($lookup_tema))
      {
        if(
$key == $row[tema])
          
$option="<input name='tema[]' type='checkbox' value='$key'>$value";
        else
          
$option="<input name='tema[]' type='checkbox' value='$key'>$value";
        echo 
"<br>";
        echo 
$option;
      }
    }
?>
<p>&nbsp;
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #4 (permalink)  
Antiguo 21/05/2005, 08:35
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Bueno ya los creas dinamicamente metiendo todos los adtos en un array ahora en la pagina que los ingresara a la base de datos obtienes los valores dinamicamente y listo mira este ejemplo:
Código PHP:
<?php
#aqui los ingresas dinamicamente 
$i=0
while(
$i<=count($tema)){ 
 
# aqui haces la insercion a la base de datos
 # Insert into tabla (tema) values ('".$tema[$i]."')
$i++; 

?>
  #5 (permalink)  
Antiguo 21/05/2005, 16:00
Avatar de Heros  
Fecha de Ingreso: abril-2005
Mensajes: 69
Antigüedad: 19 años
Puntos: 1
Hola amigo, el ejemplo que enviaste esta muy interesante solo que no entiendo la parte de "meter los datos dinamicamente en un array" , gracias de antemano por absolver mi duda...
:)
  #6 (permalink)  
Antiguo 22/05/2005, 04:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Quiere decir que lo que haces es manejar un arreglo con los checkbox, por ello daz un name del tipo "name[]". Entonces los datos serán enviados "como un paquete". Entonces al recojer, tendrás que hacer un ciclo por cada dato recivido (mira sus comentarios).

Propongo utilizar foreach():
Código PHP:
<form method="post" action="<?=$_SERVER['PHP_SELF'?>">
  <input name="valor[0]" type="checkbox" value="op1">
  <input name="valor[1]" type="checkbox" value="op2">
  <input name="valor[2]" type="checkbox" value="op3">
  <input type="submit" name="Submit" value="Promediar">
</form>
<?php
if(isset($_POST['Submit'])) {
    foreach(
$_POST['valor'] as $indice=>$valor) {
        
$campos[]= $indice;
                
$values[]= "'$valor'";
    }

        
$camposimplode(", "$campos);
        
$valuesimplode(", "$values);
        echo 
"INSERT INTO ($campos) VALUES ($values)"
}
?>
... acabo de responder con algo similar , solo lo adapté. Es un ejemplo funcional.. vé cómo actúa y adáptalo.. obviamente donde yo imprimo tu insertas en la BD. El funcionamiento es similar a lo dicho por dwaks solo cambian los métodos, ocupa el que entiendas mejor.... de hecho es lo mismo que haces al generar tus checkboxes... ocupas un while() al igual que dwaks.
www.php.net/array
www.php.net/foreach

Solo por curiosidad... en tu código original tienes un if => else para imprimir el checkbox.. pero los resultados son el mismo ... ¿o no veo la diferencia? .. sé que devería diferenciar en un "checked".

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 24/05/2005 a las 00:21
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 17:56.