Foros del Web » Programando para Internet » PHP »

Insertar una o varias opciones de un checkbox a una tabla

Estas en el tema de Insertar una o varias opciones de un checkbox a una tabla en el foro de PHP en Foros del Web. Buenas, me encuentro realizando una especie de miniproyecto para mi universidad. El cual consiste en crear un registro para un sitio web de agricultores, bien, ...
  #1 (permalink)  
Antiguo 18/08/2015, 15:59
 
Fecha de Ingreso: abril-2015
Ubicación: En mi casa
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Pregunta Insertar una o varias opciones de un checkbox a una tabla

Buenas, me encuentro realizando una especie de miniproyecto para mi universidad.

El cual consiste en crear un registro para un sitio web de agricultores, bien, una de las condiciones es que en el registro la persona debe marcar a que área de la agricultura se dedica (Fruticultura, Horticultura o ganadería) y luego especificar a que se dedica dentro de esas ramas (si cosecha solo fresas, solo cultiva arboles o cría vacas y ovejas)

La especificación está en un checkbox ya que tanto se puede dedicar a una area, pero especifica varias opciones (Crío ganado bovino y porcino)

Ahora viene la gran duda. ¿Cómo hago para guardar las opciones que marcó del checkbox a una tabla en una base de datos?.

Espero que me puedan ayudar, saludos.
  #2 (permalink)  
Antiguo 18/08/2015, 22:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Si muestras tu código sería más viable tratar de ayudarte.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 19/08/2015, 13:42
 
Fecha de Ingreso: abril-2015
Ubicación: En mi casa
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Buenas, gracias por responder, bueno este es el código que estoy usando en el registro:

Código HTML:
<script type="text/javascript">
var aCks1 = new Array("Agricultura");    
   var aCks2 = new Array("Floricultura", "Olericultura","Arómaticas,medicinales y perfumíferas","Arboricultura","Fisiología post-cosecha");    
   var aCks3 = new Array("Bovino", "Ovino y caprino", "Porcino", "Aves", "Asnos", "Conejos");    
   function cambia(oSel){ 
    var nChecks; 
    var nSel = oSel[oSel.selectedIndex].value; 
    for (var i = 0; i < 6; i++){  
     eval("document.registro.ck" + String(i + 1) + ".style.display = 'none'"); 
     eval("document.getElementById('sp' + String(i + 1)).innerHTML = ''"); 
    } 
    eval("nChecks = aCks" + String(nSel) + ".length"); 
    for (var i = 0; i < nChecks; i++){ 
     eval("document.registro.ck" + String(i + 1) + ".style.display = ''"); 
     eval("document.registro.ck" + String(i + 1) + ".value = aCks" + String(nSel) + "[i]"); 
     eval("document.getElementById('sp' + String(i + 1)).innerHTML = aCks" + String(nSel) + "[i]"); 
    } 
   } 
</script>
<body>
	<div class="wrap">
<div class="wrapper">
<div class="header">
	<div class="cssmenu">
		<ul>
		   <li class="active"><a href="index.html">Inicio</a></li>
		   <li><a href="acerca.html">Acerca de nosotros</a></li>
		   <li class="has-sub"><a href="service.html">Miembros</a></li>
		   <li class="last"><a href="contacto.html">Contacto</a></li>
		 <div class="clear"></div>
		 </ul>
	</div>
	<div class="search">
		<form>
    		<a class="btn" href="/registro.html">Regístrate</a>
    		<a class="btn" href="/login.html">Iniciar sesión</a>
    	</form>
	</div>
	<div class="clear"></div>
</div>
</div>
</div>
<div class="wrap">
<div class="wrapper">
<div class="main_bg">
	<div class="main">
		<div class="content">
			<h2>Red social agricultora</h2>
			<a href="index.html"><h3>Agrobolas</h3></a>	
		</div>
	</div>
	<div class="clear"></div>
</div>
</div>
</div>
<div class="wrap">
<div class="wrapper">
<div class="main_bg1">
<div class="main" align="center">
	<div class="details">
		<h2 class="style">Registro</h2>
		<p><center><img src="/images/registro.gif"></center></p>
		<p class="para"><h2 class="style">Bienvenido a nuestro sistema de registro</h2></p><br>
		<p class="para">Por favor, completa los siguientes campos a continuación para registrarte</p><br>
		<b><p class="para">(*) Campo Obligatorio</p></b>
	</div>
	<p></p>
	<div class="det_para">
		<form method="post" action="registro.php" name="registro">
			<p class="para">*Nombre: <input type="text" placeholder="Nombre" id="name"><p><br>
			<p class="para">*Apellido: <input type="text" placeholder="Apellido" id="lastname"><p><br>
			<p class="para">*Fecha de nacimiento: <input type="date" max="1997-12-31" id="born"><p><br>
			<p class="para">*Cédula: <input type="text" placeholder="Cédula" id="schedule"><p><br>
			<p class="para">Nro. Télefono: <input type="text" placeholder="Nro telefónico" id="phone"><p><br>
			<p class="para">*Contraseña: <input type="password" placeholder="Contraseña" id="password"><p><br>
			<p class="para">*Correo: <input type="text" placeholder="Correo" id="email"><p><br>
			<p class="para">*Área en la que te dedicas:
				<select name="NumeroDeChecks" onchange="cambia(this)"> 
    <option value="0">Selecciona un área</option> 
    <option value="1">Fruticultura</option> 
    <option value="2">Horticultura</option> 
    <option value="3">Ganadería</option>  
   </select><br> 
			<p class="para" align="center">
   <table> <tr> 
     <td> 
      <input type="checkbox" name="ck1" style="display:none;"> 
     </td> 
     <td id="sp1"> 
     
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type="checkbox" name="ck2" style="display:none;"> 
     </td> 
     <td id="sp2"> 
      
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type="checkbox" name="ck3" style="display:none;"> 
     </td> 
     <td id="sp3"> 
      
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type="checkbox" name="ck4" style="display:none;"> 
     </td> 
     <td id="sp4"> 
      
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type="checkbox" name="ck5" style="display:none;"> 
     </td> 
     <td id="sp5"> 
     
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type="checkbox" name="ck6" style="display:none;"> 
     </td> 
     <td id="sp6"> 
       
     </td> 
    </tr></table></p><br> 
    <p class="para">¿Cuantas hectáreas posee su terreno?: <input type="text" name"hectareas" placeholder="Hectáreas" id="camp"></p><br>
    <input type="submit" class="btn" value="Enviar">
    <input type="reset" class="btn" value="Limpiar">
		</form>
	</div>
</div>
</div>
</div>
</div> 
Solamente agarré la parte cuando empieza el registro y la función javascript que coloqué para que se entienda de donde aparece el select y checkbox, el código en PHP aun no lo he hecho ya que alli es que viene mi duda, se conectar los otros datos pero el dato del select y los marcados del checkbox no los sé guardar.

Espero respuesta, saludos.

Última edición por DarkScripter; 19/08/2015 a las 13:44 Razón: Falta de información
  #4 (permalink)  
Antiguo 19/08/2015, 22:39
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Código Javascript:
Ver original
  1. for (var i = 0; i < 6; i++){  
  2.      eval("document.registro.ck" + String(i + 1) + ".style.display = 'none'");
  3.      eval("document.getElementById('sp' + String(i + 1)).innerHTML = ''");
  4.     }
  5.     eval("nChecks = aCks" + String(nSel) + ".length");
  6.     for (var i = 0; i < nChecks; i++){
  7.      eval("document.registro.ck" + String(i + 1) + ".style.display = ''");
  8.      eval("document.registro.ck" + String(i + 1) + ".value = aCks" + String(nSel) + "[i]");
  9.      eval("document.getElementById('sp' + String(i + 1)).innerHTML = aCks" + String(nSel) + "[i]");
  10.     }
:

Me sangran los ojos. Arregla eso que esta HORRIBLE!!!!!
Código Javascript:
Ver original
  1. var aCks = {
  2.     "1" : ["Agricultura"],
  3.     "2" : ["Floricultura", "Olericultura","Arómaticas,medicinales y perfumíferas","Arboricultura","Fisiología post-cosecha"],
  4.     "3" : ["Bovino", "Ovino y caprino", "Porcino", "Aves", "Asnos", "Conejos"]
  5. }
  6.  
  7. function cambia(oSel) {
  8.     var nSel = oSel[oSel.selectedIndex].value, nro;
  9.     for (nro = 0; nro < 6; nro++) {
  10.         document.registro["ck" + String(nro + 1)].style.display = "none";
  11.         document.getElementById("sp" + String(nro + 1)).innerHTML = "";
  12.     }
  13.  
  14.     for (nro = 0; nro < aCks[nSel].length; nro++){
  15.         document.registro.["ck" + (nro + 1)].style.display = "";
  16.         document.registro.["ck" + (nro + 1)].value = aCks[nSel][nro];
  17.         document.getElementById("sp" + String(nro + 1)).innerHTML = aCks[nSel][nro];
  18.     }
  19. }
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #5 (permalink)  
Antiguo 20/08/2015, 12:19
 
Fecha de Ingreso: abril-2015
Ubicación: En mi casa
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Cita:
Iniciado por NSD Ver Mensaje
Código Javascript:
Ver original
  1. for (var i = 0; i < 6; i++){  
  2.      eval("document.registro.ck" + String(i + 1) + ".style.display = 'none'");
  3.      eval("document.getElementById('sp' + String(i + 1)).innerHTML = ''");
  4.     }
  5.     eval("nChecks = aCks" + String(nSel) + ".length");
  6.     for (var i = 0; i < nChecks; i++){
  7.      eval("document.registro.ck" + String(i + 1) + ".style.display = ''");
  8.      eval("document.registro.ck" + String(i + 1) + ".value = aCks" + String(nSel) + "[i]");
  9.      eval("document.getElementById('sp' + String(i + 1)).innerHTML = aCks" + String(nSel) + "[i]");
  10.     }
:

Me sangran los ojos. Arregla eso que esta HORRIBLE!!!!!
Código Javascript:
Ver original
  1. var aCks = {
  2.     "1" : ["Agricultura"],
  3.     "2" : ["Floricultura", "Olericultura","Arómaticas,medicinales y perfumíferas","Arboricultura","Fisiología post-cosecha"],
  4.     "3" : ["Bovino", "Ovino y caprino", "Porcino", "Aves", "Asnos", "Conejos"]
  5. }
  6.  
  7. function cambia(oSel) {
  8.     var nSel = oSel[oSel.selectedIndex].value, nro;
  9.     for (nro = 0; nro < 6; nro++) {
  10.         document.registro["ck" + String(nro + 1)].style.display = "none";
  11.         document.getElementById("sp" + String(nro + 1)).innerHTML = "";
  12.     }
  13.  
  14.     for (nro = 0; nro < aCks[nSel].length; nro++){
  15.         document.registro.["ck" + (nro + 1)].style.display = "";
  16.         document.registro.["ck" + (nro + 1)].value = aCks[nSel][nro];
  17.         document.getElementById("sp" + String(nro + 1)).innerHTML = aCks[nSel][nro];
  18.     }
  19. }
Gracias por corregir mi error, me disculpo porque es lo que recuerdo :c.

Probé el código que me diste pero no funciona.

Saludos.
  #6 (permalink)  
Antiguo 20/08/2015, 15:20
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Cita:
Probé el código que me diste pero no funciona.
Proba a apretar F12 y mirar la consola.

asi como esta en php llegan en $_POST:
Cita:

array (size=7)
'NumeroDeChecks' => string '1' (length=1)
'ck1' => string 'Agricultura' (length=11)
'ck2' => string 'Olericultura' (length=12)
'ck3' => string 'Arómaticas,medicinales y perfumÃ*feras' (length=39)
'ck4' => string 'Arboricultura' (length=13)
'ck5' => string 'FisiologÃ*a post-cosecha' (length=24)
'ck6' => string 'Conejos' (length=7)
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #7 (permalink)  
Antiguo 20/08/2015, 19:27
 
Fecha de Ingreso: abril-2015
Ubicación: En mi casa
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Cita:
Iniciado por NSD Ver Mensaje
Proba a apretar F12 y mirar la consola.

asi como esta en php llegan en $_POST:
Es decir que el código que me adjuntaste abajo es la estructura de como llegan esas opciones a una variable de PHP?

Saludos.

PD: Los errores son los siguientes: "Syntax error: Unexpected token ({) Línea 15" y en registro .html en la línea 75 dice "cambia is not defined". :C

Última edición por DarkScripter; 20/08/2015 a las 19:55
  #8 (permalink)  
Antiguo 21/08/2015, 10:49
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Si. Ambas afirmaciones son correctas.
Tanto en la linea 15 como en la 16 hay un error de sintaxis.
Esa es la estructura con la que llega en una variable a php el formulario.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #9 (permalink)  
Antiguo 30/08/2015, 15:15
 
Fecha de Ingreso: abril-2015
Ubicación: En mi casa
Mensajes: 15
Antigüedad: 9 años
Puntos: 0
Respuesta: Insertar una o varias opciones de un checkbox a una tabla

Buenas, gracias por la ayuda ya corregí el error, he adelantado algo del código PHP primero mostrando las variables para luego pasarlos a la base de datos.

Código PHP:
Ver original
  1. <?php
  2. $nombre=$_POST['name'];
  3. $apellido=$_POST['lastname'];
  4. $fnac=$_POST['born'];
  5. $cedula=$_POST['schedule'];
  6. $telefono=$_POST['schedule'];
  7. $pass=$_POST['password'];
  8. $correo=$_POST['email'];
  9. $area=$_POST['area'];
  10. $hectarea=$_POST['camp'];
  11.  
  12. echo "Nombre: ".$nombre."<br>";
  13. echo "Apellido: ".$apellido."<br>";
  14. echo "Fecha Nacimiento: ".$fnac."<br>";
  15. echo "Cedula: ".$cedula."<br>";
  16. echo "Teléfono: ".$telefono."<br>";
  17. echo "Contraseña: ".$pass."<br>";
  18. echo "Correo: ".$correo."<br>";
  19. if ($area=="1") {
  20.     echo "Opción: Fruticultura <br>";
  21. }elseif ($area=="2") {
  22.     echo "Opción: Horticultura <br>";
  23. }else{
  24.     echo "Opción: Ganadería <br>";
  25. }
  26. echo "hectarea: ".$hectarea;
  27.  
  28.  $link = "";
  29. if(isset($_POST['registrar'])){
  30. $opciones = $_POST['e_slc'];
  31.        
  32.     if(estaSeleccionado('e_slc','A')){
  33.     echo "<b>A se incluye en la selección</b><br />";
  34.     }
  35.     if(estaSeleccionado('e_slc','B')){
  36.     echo "<b>B se incluye en la selección</b><br />";
  37.     }
  38.  
  39.  
  40. }
  41.    
  42. function estaSeleccionado($nombreCb,$valorCB){
  43.     if(!empty($_POST[$nombreCb])){
  44.         foreach($_POST[$nombreCb] as $elValor){
  45.             if($elValor == $valorCB){
  46.             return true;
  47.             }
  48.         }
  49.     }
  50. return false;
  51. }
  52. ?>

Estoy modificandolo, pero tengo un gran problema, el grupo de checkboxes que marque, como se guardarían en una base de datos? es decir, que atributo de la tabla "Usuarios" debo crear para que se guarden los checkboxes que marqué en el registro y que luego me los muestre?.

Adjunto a ello, para que se muestren los campos seleccionados en PHP, por el poquisimo conocimiento que tengo, ese necesario que los nombres del checkbox tengan un unico nombre para que se muestren.

Que sería con este pequeña función:
Código PHP:
Ver original
  1. $e_slc = $_POST['e_slc'];    
  2. for($aux=0; $aux<count($e_slc); $aux++)
  3. {
  4. echo $e_slc[$aux] . "<br>";
  5. }

Y en el código de Javascript obligatoriamente debo enumerar los checkbox de esta manera para que funcione el código:
Código HTML:
Ver original
  1. <input type="checkbox" name="e_slc1" style="display:none;">
  2. <input type="checkbox" name="e_slc2" style="display:none;">

Investigando un poco encontré este código en javascript que le asigna un el mismo id al checkbox para que el código php lo tome en cuenta y asi pueda imprimirlo:

Código Javascript:
Ver original
  1. var a_slc = {
  2.     "1" : ["Agricultura"],
  3.     "2" : ["Floricultura", "Olericultura","Arómaticas,medicinales y perfumíferas","Arboricultura","Fisiología post-cosecha"],
  4.     "3" : ["Bovino", "Ovino y caprino", "Porcino", "Aves", "Asnos", "Conejos"]
  5. }
  6.  
  7. function cambia(oSel) {
  8.   $('#btn_borrar').click(function(){
  9.     var nombre_id_checkbox = "e_slc";
  10.     var arr_checkbox_cheked;
  11.    
  12.       if($("input:checkbox[name^='"+nombre_id_checkbox+"']").is(":checked")){ // Al menos un checkbox en true
  13.           arr_checkbox_cheked = $('input[type=checkbox]:checked').map(function() {
  14.             return $(this).attr('id');
  15.          }).get();
  16.        for(celda=0;celda<arr_checkbox_cheked.length;celda++)
  17.        {
  18.          var numero_id = arr_checkbox_cheked[celda].split('_'); // chk_registro_10
  19.          array_delete_regs[celda] = numero_id[2];
  20.        }
  21.     var nSel = oSel[oSel.selectedIndex].value, nro;
  22.       for (nro = 0; nro < 6; nro++) {
  23.         document.registro["e_slc" + String(nro + 1)].style.display = "none";
  24.         document.getElementById("sp" + String(nro + 1)).innerHTML = "";
  25.       }
  26.  
  27.       for (nro = 0; nro < a_slc[nSel].length; nro++){
  28.         document.registro["e_slc" + String (nro + 1)].style.display = "";
  29.         document.registro["e_slc" + String (nro + 1)].value = a_slc[nSel][nro];
  30.         document.getElementById("sp" + String(nro + 1)).innerHTML = a_slc[nSel][nro];
  31.       }
  32.     }
  33.   }
  34. }
  35. }

Me da este error: missing ) after argument list en la linea 33 :c

Saludos.

Última edición por DarkScripter; 30/08/2015 a las 16:13

Etiquetas: checkbox, opciones, registro, tabla
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 19:46.