Foros del Web » Programando para Internet » PHP »

Insertar y listar checkbox

Estas en el tema de Insertar y listar checkbox en el foro de PHP en Foros del Web. Buenos días amigos del foro, soy nuevo aqui y queria sacarme unas cuantas dudas de encima, espero que puedan ayudarme, estaba verificando manuales y todo ...
  #1 (permalink)  
Antiguo 19/07/2011, 10:12
(Desactivado)
 
Fecha de Ingreso: julio-2011
Mensajes: 6
Antigüedad: 8 años, 4 meses
Puntos: 0
Pregunta Insertar y listar checkbox

Buenos días amigos del foro, soy nuevo aqui y queria sacarme unas cuantas dudas de encima, espero que puedan ayudarme, estaba verificando manuales y todo tipo de informacion sobre php y hubo algo que me causo curiosidad porque no encontraba ningun ejemplo ni en los manuales ni en internet : Vi que se podían insertar checkbox en una bd, solo los seleccionados delimitados por comas (Ej. 2,4,7) ojo solo los seleccionados, pero luego para listarlos no existia ninguna solucion, es decir para listar los seleccionados con el checkverificado , espero alguien me ayude a quitarme esta duda. Gracias.
  #2 (permalink)  
Antiguo 19/07/2011, 10:35
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 11 años, 9 meses
Puntos: 253
Respuesta: Insertar y listar checkbox

Pues depende mucho de cómo tengas montado el código, pero te explico lo más normal. El formato de un checkbox normal es el siguiente:

<input type="checkbox" name="name" value="value"/> Nombre1

Pero hay que tener cuidado, porque el trato es diferente a la hora de recibir el $_POST, que funciona de la siguiente forma:
- Si no marcas el checkbox no se envía nada.
- Si marcas el checkbox se envía en el array de $_POST un campo con el nombre del name y el valor del value.

En el ejemplo que te puse antes, haciendo var_dump($_POST) en la página siguiente se mostrará:
- Si no lo marcas: array(0) { }
- Si lo marcas: array(1) { ["name"]=> string(6) "value" }

Cual es el problema de esto? Pues muy sencillo, desde la página de tratamiento del formulario no tienes ninguna forma (a través del $_POST) de acceder a los checkbox que NO se han marcado.

Sin embargo, si tienes los checkbox ya ahí, lo único que tienes que hacer es comprobar si existe $_POST['name'] para poner selected="selected". Si no existe, no lo agregues y listo.

Espero que te sirva, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 19/07/2011, 10:49
(Desactivado)
 
Fecha de Ingreso: julio-2011
Mensajes: 6
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Insertar y listar checkbox

gracias muy interesante tu punto de vista, te muestro como inserto

mi formulario tiene esto :

<input id="element_20_1" name="entregables[]" class="element checkbox" type="checkbox" value="1" />

<input id="element_20_2" name="entregables[]" class="element checkbox" type="checkbox" value="2" />

<input id="element_20_3" name="entregables[]" class="element checkbox" type="checkbox" value="3" />

la forma que lo inserto es delimitado por comas, hasta alli entiendo perfectamente el funcionamiento , el nombre lo guardo como un array de "x" elementos cuando lo proceso lo hago con la siguiente linea: (delimitado por comas como lo mencione
$entregables= implode(",",$_POST['entregables']);

y bueno luego simplemente lo inserto así
$qry = "INSERT INTO ingenieria (entregables) VALUES
('$entregables')";

Así de simple, pero se me hace un mundo comprender el funcionamiento al reves, lo que quiero es mostrarlos en otra formulario los 3 checkbox, pero solo marcados los que fueron seleccionados, debo usar la misma funcion delimitada por comas.

Saludos y muchas gracias por tu respuesta anterior
  #4 (permalink)  
Antiguo 19/07/2011, 10:58
(Desactivado)
 
Fecha de Ingreso: julio-2011
Mensajes: 6
Antigüedad: 8 años, 4 meses
Puntos: 0
Pregunta Respuesta: Insertar y listar checkbox

Yo tenía una ídea así:

Primero cargo mi tabla con todos mis checkbox y luego hago otro query para consultar especificamente la columna donde tengo mi datos por ejemplo 1,2 tengo esto de antemano , con esto listo todos mis checkbox ahora bien la comprobacion como la podria hacer?, una forma como tu mencionaas comprobar si existe cierto? si es asi ponerle selected, pero osea hago otro query mas abajo luego del while?

<?php
$conexion=mysql_connect("localhost","root","mysql" )or
die("Problemas en la conexion");
mysql_select_db("gerenciador",$conexion) or
die("Problemas en la seleccion de la bd");
$registros=mysql_query("select id,nombre_e from chk_entregables",$conexion) or
die("Problemas en el select:".mysql_error());
while($reg=mysql_fetch_array($registros))
{
echo "<input type='checkbox' name='entregables[]' value='$reg[id]'> $reg[nombre_e]<br>";
}
?>
  #5 (permalink)  
Antiguo 19/07/2011, 11:06
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 11 años, 9 meses
Puntos: 253
Respuesta: Insertar y listar checkbox

Pues la idea es hacer lo contrario a lo que has hecho.

Cuando hagas las consulta a la base de datos del campo entregables te vendrá una cadena de números (ya que value son números) separados por comas, pongamos que los tienes en $row['entregables']. Haces lo contrario al inplode, explode:
$entregables = explode(",", $row['entregables']);

Ahora tienes en $entregables un array en que cada elemento es un entero con un value. Vuelves a montar los inputs, pero añadiendo una comprobación para ver si los checkeas o no:
Código PHP:
<input id="element_20_1" name="entregables[]" class="element checkbox" type="checkbox" value="1" <?php echo (in_array('1'$entregables)) ? 'checked="checked"' ''?>/>
<input id="element_20_2" name="entregables[]" class="element checkbox" type="checkbox" value="2" <?php echo (in_array('2'$entregables)) ? 'checked="checked"' ''?>/>
<input id="element_20_3" name="entregables[]" class="element checkbox" type="checkbox" value="3" <?php echo (in_array('3'$entregables)) ? 'checked="checked"' ''?>/>
Con la comprobación <?php echo (in_array('1', $entregables)) ? 'checked="checked"' : ''; ?> miras si existe el value en el array que acabamos de montar. Si existe, pones checked, si no, no pones nada.

Espero que con esto te sirva. Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Última edición por vgonga1986; 19/07/2011 a las 11:07 Razón: Me faltaba un paréntesis por ahí
  #6 (permalink)  
Antiguo 19/07/2011, 11:18
(Desactivado)
 
Fecha de Ingreso: julio-2011
Mensajes: 6
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Insertar y listar checkbox

Gracias enormemente por tu paciencia y ganas de ayudar. Lo puse así , pero como que me salen 3 columnas de checkbox :

Notice: Undefined variable: row in E:\Software colaborativo\opengoo_1.3.1\opengoo\form\form\olive r.php on line 3
"; "; ";
"; "; ";
"; "; ";
"; "; ";
"; "; ";


No entiendo porque me sale error si cerre bien la ultima y todo , espero no abusar de ud.

<?php
//resultados
$entregables = explode(",", $row['entregables']);
$conexion=mysql_connect("localhost","root","mysql" )or
die("Problemas en la conexion");
mysql_select_db("gerenciador",$conexion) or
die("Problemas en la seleccion de la bd");
$registros=mysql_query("select id_documento,entregables from ingenieria",$conexion) or
die("Problemas en el select:".mysql_error());
while($reg=mysql_fetch_array($registros))
{
?>
<input id="element_20_1" name="entregables[]" class="element checkbox" type="checkbox" value="1" <?php echo (in_array('1', $entregables)) ? 'checked="checked"' : ''; ?>/>";
<input id="element_20_2" name="entregables[]" class="element checkbox" type="checkbox" value="2" <?php echo (in_array('2', $entregables)) ? 'checked="checked"' : ''; ?>/>";
<input id="element_20_3" name="entregables[]" class="element checkbox" type="checkbox" value="3" <?php echo (in_array('3', $entregables)) ? 'checked="checked"' : ''; ?>/>";
<?php
echo "<br>";
}

?>
  #7 (permalink)  
Antiguo 19/07/2011, 13:19
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 11 años, 9 meses
Puntos: 253
Respuesta: Insertar y listar checkbox

Vamos a ver, hay que pensar un poco, creo que me estoy esforzando bastante en responderte y explicartelo para que lo entiendas, pero no te lo voy a dar hecho.

Cuando yo te dije que usaras esta línea $entregables = explode(",", $row['entregables']); te dije que eso era suponiendo que tenías en esa variable los resultados de la base de datos. Obviamente si no creas esa variable no va a salir de la nada, por eso te da el error.

El otro error que te da es porque sobran los "; del final de cada línea del while, serán de algún echo que tenías antes y has borrado, porque en el código que yo te puse y del que has hecho copy-paste no estaban.

En serio, tengo paciencia y no me importa poner post grandes explicando todo paso por paso, pero si noto que el otro no tiene ningún interés en aprender a hacerlo y entenderlo y lo único que quiere es el código hecho, te aseguro que no gasto ni una palabra más.

Un saludo, espero que pienses un poco y veas las cosas, porque con lo que te he explicado hay más que de sobra para hacerlo bien.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: checkbox, php+mssql
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 07:19.