Foros del Web » Programando para Internet » PHP »

chekbox con bd

Estas en el tema de chekbox con bd en el foro de PHP en Foros del Web. hola amigos como andan? tengo unos 30 chekbox que se cargan de una BD con el siguiente codigo: Código PHP: <? include( "conectar.inc" ); $sql  ...
  #1 (permalink)  
Antiguo 17/08/2011, 15:38
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
chekbox con bd

hola amigos como andan? tengo unos 30 chekbox que se cargan de una BD con el siguiente codigo:

Código PHP:
<?
include("conectar.inc");

$sql mysql_query("SELECT * FROM idiomas ");
?>

<form action="checkbox2.php" method="post">
<?
while ($row mysql_fetch_array($sql)) {

echo 
"<input type='checkbox' name='subpregunta' value='$row[id]'> $row[nom]<br>";

}
?>
<input name="" type="submit" value="Enviar">
</form>
El usuario solo puede elegir 3 de estos chekbox, ahora mi pregunta es como puedo hacer para insertarlos en 3 campos de una tabla dependiendo de la opcion que eligio y tambien mostrar un error si eligio mas de 3 opciones..

muchas gracias a todos
  #2 (permalink)  
Antiguo 17/08/2011, 15:41
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: chekbox con bd

Utiliza en el nombre del checkbox esto checkbox[] entonces ese formulario te enviara un array con los datos seleccionados... después con un foreach o lo que tu quieras haces el insert, o como lo quieras hacer.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 17/08/2011, 17:43
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: chekbox con bd

muchas gracias por la respuesta, pero podrias ayudarme un poco con el codigo?

gracias de nuevo
  #4 (permalink)  
Antiguo 17/08/2011, 17:49
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: chekbox con bd

jotaincubus se refiere a que cambies la propiedad name del input así:

Un array:
Código PHP:
echo "<input type='checkbox' name='subpregunta[]' value='$row[id]'> $row[nom]<br>"
y para recorrerlos pues con cualquier bucle, por ejemplo foreach:

Código PHP:
<?php
    
foreach($_POST['subpregunta'] as $key => $value){
        
//Aquí lo que quieras hacer
   
}
?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #5 (permalink)  
Antiguo 18/08/2011, 06:24
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: chekbox con bd

gracias nuevamente..pero no lo consigo hacer. Supongamos que yo tengo estos chekbox:

1.ingles
2.español.
3.aleman
4.finlandes

creo los chekbox desde la BD como me djieron anteriormente con [], despues el array recorro con el Foreach, pero como hago para guardar los datos que se selecionaron en distintas variables, tienen que ser hasta 3, para despues insertar esos 3 valores en 3 campos de la BD.

graciaas
  #6 (permalink)  
Antiguo 18/08/2011, 06:38
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: chekbox con bd

Si lo has puesto como te ha dicho IEKK, al hacer submit tendrás un array en $_POST['subpregunta'] que contendrá el value de todos los checkbox marcados. Para verlo no tienes más que hacer:
Código PHP:
Ver original
  1. var_dump($_POST['subpregunta']);

Verás que es un array únicamente con los seleccionados, luego para poder limitar a tres no tienes más que ver que la longitud del array sea menor o igual que 3 y para acceder a sus valores sólo tendrás que recorrer el array con un foreach, en cada iteracción tendrás uno de los marcados.

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?
  #7 (permalink)  
Antiguo 18/08/2011, 06:54
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: chekbox con bd

ya he podido limitar a 3 los check, pero lo que quiero hacer es que a cada uno de los valores del array meterlo en 3 variables diferentes para poder hacer despues el INSERT.. alguien me ayuda?

Código PHP:
$calidad=$_POST['idioma'];

for(
$i=0;$i<3;$i++)
{
echo 
$calidad[$i];


gracias por la paciencia...
  #8 (permalink)  
Antiguo 18/08/2011, 07:01
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: chekbox con bd

Eso no está bien, no estás limitando a tres, sólo estás imprimendo las tres primeras. Te aconsejo encarecidamente que te mires algo sobre tratamiento de arrays, porque se ve que estás muy pez en esto:
Código PHP:
Ver original
  1. if (isset($_POST['idioma'])) {
  2.    $calidad = $_POST['idioma'];
  3.    if (count($calidad) > 3) {
  4.       echo "Sólo se pueden escoger 3 opciones";
  5.    } else {
  6.       foreach($calidad as $key => $value){
  7.          echo "En cada iteración tienes en value el valor de una elección, haz con ella lo que quieras";
  8.       }
  9.    }
  10. } else {
  11.    echo "No se ha elegido ninguna opción";
  12. }

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?
  #9 (permalink)  
Antiguo 18/08/2011, 07:23
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: chekbox con bd

me pondre a estudiar muchas gracias!!!

Etiquetas: bd, chekbox, mysql, sql, tabla, usuarios
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:31.