Foros del Web » Programando para Internet » PHP »

Como procesar check box

Estas en el tema de Como procesar check box en el foro de PHP en Foros del Web. Hola a todos tengo un problema con unos checkbox que no se como validar e insertar en una base.Una de mis dudas es si en ...
  #1 (permalink)  
Antiguo 20/11/2013, 18:53
Avatar de luisroronoa  
Fecha de Ingreso: noviembre-2012
Ubicación: Argentina
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Como procesar check box

Hola a todos tengo un problema con unos checkbox que no se como validar e insertar en una base.Una de mis dudas es si en la base la columna o el campo si por ejemplo es value y mi usuario selecciona 3 opciones de los check quiero pensar que quedaría como dato1,dato2,dato3 y asi en la misma caja ._.
bueno esa es una de mis dudas; la siguiente he estado checando unos temas de otros usuarios que son similares al mio pero no entendi un codigo y no se como procesar un formulario con check bien pues les paso primero el formulario que es
Código HTML:
Ver original
  1. <form method="post" action="prueba.php">
  2. <div align="center" name="imprimeme">
  3.     <font color="black"  face="Lucida Sans Unicode, Lucida Grande, sans-serif">
  4.         <b><i>._.</i></b>
  5.             <input name="button" type="button" onClick="confirmation()" value="Cierra Sesión"  align="middle"></input>
  6.     </font>  
  7.     <br />
  8.     <font  color="black" face="Palatino Linotype, Book Antiqua, Palatino, serif">Autor: XXX</font>
  9.     <br /><br />
  10.     <table border="0">
  11.     <tr>
  12.         <td>Matricula:</td>
  13.         <td><input type="text" name="matricula" required="required" autofocus="autofocus" maxlength="50" /></td>
  14.     </tr><tr>
  15.         <td>Nombre Completo</td>
  16.         <td><input type="text" name="nombres"  required="required" maxlength="50" /></td>
  17.     </tr><tr>
  18.         <td>Dia </td>
  19.         <td><input type="date" name="dia" required="required" maxlength="10" /></td>
  20.     </tr>
  21.     <tr>
  22.         <td>Tutor</td>
  23.         <td><input type="text" name="tutor" required="required" maxlength="30" /></td></td>
  24.     </tr>
  25.   </table>
  26.     <td>Selecciona los maestros con los que quieres justificar</td><br>
  27.        
  28.               Pancracio<input type="checkbox" name="calidad[]" value="ola" />
  29.                 TOMAS  <input type="checkbox" name="calidad[]" value="si" />
  30.                  Armando    <input type="checkbox" name="calidad[]" value="jaj" />
  31.    
  32.                       <br><br><br>
  33.                      
  34.                       <td>
  35.         <input  type="submit" name="registrar" value="Registrar Usuario" /></td>
  36.    
  37.      </form>
Ahora como pueden notar he puesto el name como calidad y al hacer esto es como un array que procesa los datos como un paquete(según un manual que leí) y el action lo mando a prueba.php que el codigo es
Código PHP:
Ver original
  1. <?php
  2.  
  3. $server = "localhost";
  4. $user = "root";
  5. $pass = "";
  6.  
  7. $conexion = mysql_connect($server, $user, $pass);
  8. $db = mysql_select_db("XXXX", $conexion);
  9.  
  10.  
  11. if(isset($_POST['registrar'])) {
  12.     foreach($_POST['calidad'] as $indice=>$valor) {
  13.         $campos[]= $indice;
  14.                 $values[]= "'$valor'";
  15.     }
  16. //validar que se hayan ingresado datos
  17. $campos= implode(", ", $campos);
  18.         $values= implode(", ", $values);
  19.  
  20.  
  21. $matricula = $_POST['matricula'];
  22. $nombres = $_POST['nombres'];
  23. $dia = $_POST['dia'];
  24. $tutor = $_POST['tutor'];
  25.  
  26.  
  27.  
  28. //insertar
  29. $consulta = "insert into justificantes(matricula,nombres,dia,tutor,calidad) values  ('".$matricula."','".$nombres."','".$dia."','".$tutor."','".$values."')"; //('$pago')";
  30. $result = mysql_query($consulta, $conexion);
  31.  
  32. if($result){
  33.     echo "Se han ingresado los datos correctamente";
  34. }}
  35. ?>
Este codigo lo obteni de este tema http://www.forosdelweb.com/f18/ayuda-con-arreglo-290090/ y no entendi que es eso de campo ni values ni como se utiliza eso de implode que por lo poco que se es que pone los campos y los valores aunque no entiendo eso de las comillas

espero que alguien me pueda ayudar a enviar este formulario
estare checando el tema Gracias de antemano

Última edición por luisroronoa; 20/11/2013 a las 18:59 Razón: agregar código
  #2 (permalink)  
Antiguo 21/11/2013, 00:02
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Como procesar check box

si no entiendes ese código lo mejor seria crear uno propio.... en este código values lo utiliza para almacenar el valor de los checkbox seleccionados mientras campos almacena el indice del array para recordar el orden en que se seleccionaron... cosa que para mi no tiene mucha utilidad, al menos no para este caso.

implode sirve para convertir un array o varios un array en una linea de texto

en lugar de tener 3 variables/campos con su propio valor solo se tendría una variable/campo de texto al estilo "valor1, valor2, valor3"

cuando se intente imprimir en pantalla y separarlos utilizarías explode que es la inversa de implode

.............
si no te interesa utilizar el indice del array solo los valores yo reemplazaría
Código PHP:
Ver original
  1. foreach($_POST['calidad'] as $indice=>$valor) {
  2.         $campos[]= $indice;
  3.                 $values[]= "'$valor'";
  4.     }
  5. //validar que se hayan ingresado datos
  6. $campos= implode(", ", $campos);
  7.         $values= implode(", ", $values);

y en su lugar usaria
Código PHP:
Ver original
  1. $calidad='';
  2. if(isset($_POST['calidad'])){
  3.     $calidad = implode(', ',$_POST['calidad']);
  4. }

claro por ende en la consulta SQL en lugar de usar $values utilizaría $calidad

Etiquetas: box, formulario, inserción, mysql
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 02:56.