Foros del Web » Programando para Internet » PHP »

Problemas con checkbox

Estas en el tema de Problemas con checkbox en el foro de PHP en Foros del Web. Buenas Tardes Comunidad.. Tengo un problema con mi codigo con los checkbox. Y la verdad que le he estado probando y pues no le encuentro ...
  #1 (permalink)  
Antiguo 29/04/2013, 14:04
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Problemas con checkbox

Buenas Tardes Comunidad..

Tengo un problema con mi codigo con los checkbox. Y la verdad que le he estado probando y pues no le encuentro solucion.

Breve Explicacion de mi codigo. Tengo un input tipo text donde pregunto cuantas clases quiere ingresar para hacer un horario de clases. Por lo cual hago un for para que me imprima las filas que pidio en el input.

Ahora bien tengo un boton en donde puedo meterle una fila extra a la tabla, y pues en todos los elementos puedo ver el valor que toma cuando lo llena. Exceptuando los checkbox

Código HTML:
Ver original
  1. <td align='center'><input name= 'l[]' type='checkbox' value='x'></td>
  2.     <td align='center'><input name= 'm[]' type='checkbox' value='x'></td>
  3.     <td align='center'><input name= 'mi[]' type='checkbox' value='x'></td>
  4.     <td align='center'><input name= 'j[]' type='checkbox' value='x'></td>
  5.     <td align='center'><input name= 'v[]' type='checkbox' value='x'></td>
  6.     <td align='center'><input name= 'j[]' type='checkbox' value='x'></td>
  7.     <td align='center'><input name= 'v[]' type='checkbox' value='x'></td>

Ok, comunmente cuando es un input de checkbox normal pues hago el siguiente codigo

Código PHP:
$lunes=(@$_POST["l"]=='x')? $_POST["l"]:' '
Pero como este es un arreglo pues si quiero hacer el codigo anterior simplemente no me lo agarra.

Porque debo de hacer un recorrido en el arreglo para guardarlo en mi tabla.
por ejemplo:

Código PHP:

<td> <?php
$con
="SELECT nombre_curso FROM curso WHERE codigo_plan = $codigo_plan";
$res=@mysql_query($con,$link);
if(!
$res){
echo 
"fallo la conexion";
}
else{
echo 
"<select name= 'curso1[]' style='width:200px'>";
while (
$fila=mysql_fetch_array($res)){
echo 
"<option>"$fila['nombre_curso'], "</option>";
}}
echo 
"</select>";
echo 

</td>
Para poder saber los datos que tomo hago lo siguiente:

Código PHP:
$curso=$_POST["curso1"];

foreach(
$curso as $a => $b)
echo 
$curso[$a]; 
Y asi mismo puedo ver mis datos de la lista de curso1.. Perooooo si hago esto con los checkbox no me sale nada.. -___-

Y definitiva necesito agarrar los valores ya sea verdadero o falso de esos que vieron anteriormente.

Graciaaaaaaaaaaas por layuda. Se los agradecere enormemente.
  #2 (permalink)  
Antiguo 29/04/2013, 14:28
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Problemas con checkbox

Mira esto te puede ayudar...

http://www.forosdelweb.com/f18/faqs-...tml#post518710
  #3 (permalink)  
Antiguo 29/04/2013, 14:28
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: Problemas con checkbox

Los checkbox se envían sólo cuando están marcados, tal vez te sirva ver lo que estás recibiendo con: var_dump($_POST['l']);
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 29/04/2013, 14:42
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas con checkbox

Aaaaaaaaaaaaaaaaaaaaaaaaa.... Jajajajajaja!!

La verdad que nose como hacer para por lo menos pueda tomar los valores que tengo, porque igualmente si uso radio me da lo mismo. Nose como hacer que si selecciona lunes, martes o cualquier dia de la semana esto me lo guarde en la base de datos -___-

T_T
  #5 (permalink)  
Antiguo 29/04/2013, 14:51
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: Problemas con checkbox

Muestra qué más tienes en el formulario, al menos por cada <tr />, supongo que algo habrá ahí que sirva para recorrer los campos.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 29/04/2013, 15:01
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas con checkbox

Bueno en si, en resumen ese es mi codigo.. Sin incluir la parte de java que es cuando le añado una fila extra a la tabla.

Código HTML:
Ver original
  1. for ($i = 1; $i <= $cantidad; $i++) {
  2.  
  3. ?>
  4. <table align="center" id="seccion">
  5.  <tr>
  6. <td> <?php
  7. $con="SELECT nombre_curso FROM curso WHERE codigo_plan = $codigo_plan";
  8. $res=@mysql_query($con,$link);
  9. if(!$res){
  10. echo "fallo la conexion";
  11. }
  12. else{
  13. echo "<select name= 'curso1[]' style='width:200px'>";
  14. while ($fila=mysql_fetch_array($res)){
  15. echo "<option>", $fila['nombre_curso'], "</option>";
  16. }}
  17. echo "</select>";
  18.  
  19. echo "
  20.     </td>
  21.     <td align='center'><input name= ". $l++ ." type='checkbox' value='x'></td>
  22.     <td align='center'><input name= 'm[]' type='checkbox' value='x'></td>
  23.     <td align='center'><input name= 'mi[]' type='checkbox' value='x'></td>
  24.     <td align='center'><input name= 'j[]' type='checkbox' value='x'></td>
  25.     <td align='center'><input name= 'v[]' type='checkbox' value='x'></td>
  26.     <td align='center'><input name= 's[]' type='checkbox' value='x'></td>
  27.     <td align='center'><input name= 'd[]' type='checkbox' value='x'></td>
  28.  
  29.  
  30. <td>
  31. <select name= 'hi[]'>
  32.  
  33. <option > -----</option>
  34. <option > 07</option>
  35. <option > 08</option>
  36. <option > 09</option>
  37. <option > 10</option>
  38. <option > 11</option>
  39. <option > 12</option>
  40. <option > 13</option>
  41. <option > 14</option>
  42. <option > 15</option>
  43. <option > 16</option>
  44. <option > 17</option>
  45. <option > 18</option>
  46. <option > 19</option>
  47. <option > 20</option>
  48.  
  49. <select name= 'mi[]'>
  50. <option > -----</option>
  51. <option > :00 </option>
  52. <option > :30 </option>
  53. </select></td>
  54. <td>
  55.  
  56. <select name= 'hf[]'>
  57. <option > -----</option>
  58. <option > 07</option>
  59. <option > 08</option>
  60. <option > 09</option>
  61. <option > 10</option>
  62. <option > 11</option>
  63. <option > 12</option>
  64. <option > 13</option>
  65. <option > 14</option>
  66. <option > 15</option>
  67. <option > 16</option>
  68. <option > 17</option>
  69. <option > 18</option>
  70. <option > 19</option>
  71. <option > 20</option>
  72.  
  73. <select name= 'mf[]'>
  74. <option > -----</option>
  75. <option > :00 </option>
  76. <option > :30 </option>
  77. </td>
  78. </tr>
  79. ";
  80.   }
  81. ?>
  #7 (permalink)  
Antiguo 29/04/2013, 15:31
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: Problemas con checkbox

Primero que nada, no olvides corregir el checkbox de los lunes, porque $l++ es un valor numérico y los nombres de campos en HTML no pueden empezar con número ni contener solo números.

Ahora, lo tuyo es bastante fácil:

Código PHP:
Ver original
  1. // Haces el for para un sólo campo, pero puedes recorrerlos todos
  2. foreach($curso1 as $indice => $nombre_curso) {
  3.     // Haces lo que tengas que hacer con $nombre_curso
  4.  
  5.     // Luego revisas cada día, ejemplo
  6.     if(isset($_POST['l'][$indice])) {
  7.            // El lunes está marcado, haces lo que corresponda
  8.     }
  9.     if(isset($_POST['m'][$indice])) {
  10.            // El martes está marcado
  11.     }
  12. }

Luego, tienes mi[] como nombre de campo para miércoles (checkbox) y para minuto de inicio (select), esto seguramente te generará errores.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 29/04/2013, 17:14
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas con checkbox

Pues que he probado tu codigo Triby, y lo mismo me sale.

Solo me salen algunos o ninguno seleccionado. T_T
Y eso que solo estoy probando con el lunes. T_T
  #9 (permalink)  
Antiguo 29/04/2013, 17:18
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: Problemas con checkbox

Muestra nuevamente tu formulario y tabién cómo lo estás procesando.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 29/04/2013, 17:27
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas con checkbox

Pues aqui le dejo todo la pagina jejejejeje..


Código PHP:
Ver original
  1. <?php
  2. ?>
  3.  
  4.  
  5.  
  6. <!doctype html>
  7. <html>
  8. <head>
  9. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  10. <script type="text/javascript" src="acc_calendar/acc_calendar.js"></script>
  11. <title>Untitled Document</title>
  12. </head>
  13.  
  14.  
  15.  
  16. <body>
  17. <script type="text/javascript" >
  18. function addRow(seccion) {
  19.             var table = document.getElementById(seccion);                    
  20.             var rowCount = table.rows.length;
  21.             var row = table.insertRow(rowCount);
  22.             var colCount = table.rows[0].cells.length;
  23.                 cant = rowCount ;
  24.             for(var i=0; i<colCount; i++) {
  25.                 var newcell = row.insertCell(i);
  26.                 newcell.innerHTML = table.rows[0].cells[i].innerHTML;
  27.                 //alert(newcell.childNodes);
  28.                
  29.                 cant = cant + 1;
  30.                 switch(newcell.childNodes[0].type) {
  31.                     case "text":
  32.                             newcell.childNodes[0].value = "";
  33.                             break;
  34.                     case "checkbox":
  35.                             newcell.childNodes[0].checked = false;
  36.                             break;
  37.                     case "select-one":
  38.                             newcell.childNodes[0].selectedIndex = 0;
  39.                             break;
  40.                 }
  41.             }
  42.         }
  43. </script>
  44.  
  45.  
  46. <?php
  47.  
  48. include "config.php";
  49.  if(!$link){
  50.     die ("No se ha podido completar la conexion.". mysql_error());
  51.     }
  52.  if(!$_POST ){
  53. ?>
  54.  
  55.  
  56.  
  57.  <?php
  58. $fecha =strftime("%Y-%m-%d", time());
  59. $codigo_plan=$_REQUEST['id'];
  60. $codigo_plan = $_SESSION['codigo_plan'] ;  
  61. $cantidad = $_SESSION['cantidad'] ;
  62.  
  63.  
  64.  
  65. $query = ("SELECT a.nombre_carrera FROM carrera a, plan_estudio b
  66. WHERE a.codigo_carrera = b.codigo_carrera and b.codigo_plan = $codigo_plan ") or die(mysql_error());
  67. $resultado= mysql_query ($query, $link);
  68.    if (mysql_num_rows ($resultado)>=1){
  69.    while($row = mysql_fetch_assoc ($resultado)) {      
  70.    $nombre_carrera=$row['nombre_carrera'];}
  71.    }
  72. ?>  
  73.  
  74.  
  75.  
  76.  
  77.  
  78. <form action="seccion2.php" method="post" name="aula">
  79. <br>
  80. <div align="center"><h2><strong><font size="+3" color="#0009A8"> Carga Academica</font></strong></h2></div>
  81.  
  82. <table align="center">
  83.   <tr>
  84.     <td align="center"> <strong> Curso </strong> </td>
  85.     <td align="center" width="7"> <strong> L </strong> </td>
  86.     <td align="center" width="7"> <strong> M </strong> </td>
  87.     <td align="center" width="7"> <strong> Mi </strong> </td>
  88.     <td align="center" width="7"> <strong> J </strong> </td>
  89.     <td align="center" width="7"> <strong> V </strong> </td>
  90.     <td align="center" width="7"> <strong> S </strong> </td>
  91.     <td align="center" width="7"> <strong> D </strong> </td>
  92.     <td align="center" > <strong> Hora Inicio </strong> </td>
  93.     <td align="center"> <strong> Hora Final </strong> </td>
  94.   </tr>
  95.  </table>
  96.  
  97.  
  98.  
  99. <?php
  100.   for ($i = 1; $i <= $cantidad; $i++) {
  101. ?>
  102. <table align="center" id="seccion">
  103.  <tr>
  104. <td> <?php
  105. $con="SELECT nombre_curso FROM curso WHERE codigo_plan = $codigo_plan";
  106. $res=@mysql_query($con,$link);
  107. if(!$res){
  108. echo "fallo la conexion";
  109. }
  110. else{
  111. echo "<select name= 'curso1[]' style='width:200px'>";
  112. while ($fila=mysql_fetch_array($res)){
  113. echo "<option>", $fila['nombre_curso'], "</option>";
  114. }}
  115. echo "</select>";
  116. echo "
  117.    </td>
  118.    <td align='center'><input name= 'l[]' type='checkbox' value='x'></td>
  119.    <td align='center'><input name= 'm[]' type='checkbox' value='x'></td>
  120.   <td align='center'><input name= 'mi[]' type='checkbox' value='x'></td>
  121.    <td align='center'><input name= 'j[]' type='checkbox' value='x'></td>
  122.    <td align='center'><input name= 'v[]' type='checkbox' value='x'></td>
  123.    <td align='center'><input name= 's[]' type='checkbox' value='x'></td>
  124.    <td align='center'><input name= 'd[]' type='checkbox' value='x'></td>
  125. <td>
  126. <select name= 'hi[]'>
  127. <option > -----</option>
  128. <option > 07</option>
  129. <option > 08</option>
  130. <option > 09</option>
  131. <option > 10</option>
  132. <option > 11</option>
  133. <option > 12</option>
  134. <option > 13</option>
  135. <option > 14</option>
  136. <option > 15</option>
  137. <option > 16</option>
  138. <option > 17</option>
  139. <option > 18</option>
  140. <option > 19</option>
  141. <option > 20</option>
  142. </select>
  143.  
  144. <select name= 'mi1[]'>
  145. <option > -----</option>
  146. <option > :00 </option>
  147. <option > :30 </option>
  148. </select></td>
  149.  
  150.  
  151.  
  152. <td>
  153. <select name= 'hf[]'>
  154. <option > -----</option>
  155. <option > 07</option>
  156. <option > 08</option>
  157. <option > 09</option>
  158. <option > 10</option>
  159. <option > 11</option>
  160. <option > 12</option>
  161. <option > 13</option>
  162. <option > 14</option>
  163. <option > 15</option>
  164. <option > 16</option>
  165. <option > 17</option>
  166. <option > 18</option>
  167. <option > 19</option>
  168. <option > 20</option>
  169.  
  170. </select>
  171. <select name= 'mf[]'>
  172. <option > -----</option>
  173. <option > :00 </option>
  174. <option > :30 </option>
  175. </select>
  176.  
  177. </td>
  178. </tr>
  179.  
  180. ";
  181.  
  182.   }
  183.  
  184. ?>
  185.  
  186. </table>
  187.  
  188.  
  189.  
  190. <br>
  191.  
  192. <div align="center"><input type="submit" name="Aceptar" value="Guardar"  /></div>
  193. <INPUT type="button" value="Add Row" onclick="addRow('seccion')" />
  194.  
  195. <div align="center"><input type="hidden" name="cantidad" value="<?php echo $cantidad; ?>"  /></div>
  196.  
  197. <div align="center"><input type="hidden" name="codigo_plan" value="<?php echo $codigo_plan; ?>"  /></div>
  198.  
  199. <div align="center"><input type="hidden" name="trimestre" value="<?php echo $tri; ?>"  /></div>
  200.  
  201. </form>
  202.  
  203.  
  204.  
  205. <?php
  206.  
  207.  }else{
  208. $cantidad=$_POST ['cantidad'];  
  209. $codigo_plan=$_POST ['codigo_plan'];
  210. $trimestre=$_POST ['trimestre'];
  211.  
  212.  
  213. $curso=$_POST["curso1"];
  214.  
  215. $inicioh=$_POST ["hi"];
  216. $iniciom= $_POST ["mi1"] ;
  217. $finalh=$_POST ["hf"];
  218. $finalm= $_POST ["mf"];
  219. $martes=$_POST["m"];
  220. $miercoles=$_POST["mi"];
  221. $viernes=$_POST["v"];
  222. $sabado=$_POST["s"];
  223. $domingo=$_POST["d"];
  224. $jueves=$_POST["j"];
  225.  
  226. $c=1;
  227. foreach($curso as $a => $b)
  228. {
  229.    
  230. echo $curso[$a];
  231. if(isset($_POST['l'][$a]))
  232. {
  233. echo "x";
  234. } else { echo " ";}
  235.  
  236. }}
  237.  
  238. ?>
  239.  
  240. </body>
  241. </html>


Y osea si me sale que si presione 3 checkbox son 3 x seguidas la que me imprime, cuando deje alguna sin presionar. Por eso nose como hacer para capturar los presionados o no... T_T
  #11 (permalink)  
Antiguo 29/04/2013, 18:06
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: Problemas con checkbox

Antes de procesar el formulario agrega esta línea:

Código PHP:
Ver original
  1. var_dump($_POST);

Qué obtienes?
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 30/04/2013, 00:18
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problemas con checkbox

No entiendo como envias los días en un solo array (de cada curso), porque así como estas los checkbox que no se marquen no se enviarán, por lo tanto el siguiente día que si se marque tomará la posición del anterior...

supongamos lo siguiente:

curso 1: (en teoria estos deberían enviarse con el indice 0)
lunes: X
martes:
miércoles: X
jueves:
viernes: X

curso 2: (aquí deberían enviarse con el indice 1)
lunes: X
martes: X
miércoles:
jueves:
viernes: X

En teoria el array debería ser (indice=valor)
lunes: 0=1,1=1
martes: 0=0,1=1
miércoles: 0=1,1=0
jueves: 0=0,1=0
viernes: 0=1,1=1

Pero lo que al final obtendrás algo completamente diferente porque no se envían los checkbox no marcados, por lo cual los indices no concuerdan
lunes: 0=1,1=1
martes: 0=1
miércoles: 0=1
viernes: 0=1,1=1

Para evitar esto debes indicar manualmente el indice con el cual se enviarán los valores en el array, así sabrás que valor es de que curso...

Código PHP:
Ver original
  1. <?php
  2. //más código....
  3.  
  4. echo "
  5.    </td>
  6.    <td align='center'><input name= ". $l++ ." type='checkbox' value='x'></td>
  7.    <td align='center'><input name= 'm[".$i."]' type='checkbox' value='x'></td>
  8.    <td align='center'><input name= 'mi[".$i."]' type='checkbox' value='x'></td>
  9.    <td align='center'><input name= 'j[".$i."]' type='checkbox' value='x'></td>
  10.    <td align='center'><input name= 'v[".$i."]' type='checkbox' value='x'></td>
  11.    <td align='center'><input name= 's[".$i."]' type='checkbox' value='x'></td>
  12.    <td align='center'><input name= 'd[".$i."]' type='checkbox' value='x'></td>";
  13. //más código....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #13 (permalink)  
Antiguo 30/04/2013, 03:34
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas con checkbox

mmmmm... Comprendo totalmente la logica, peroooooo el problema es como tengo el script de añadir filas de la tabla. Pues los valores que añadiria no me los toma.

No se si me doy a entender.

Etiquetas: checkbox, select, sql, 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 04:39.