Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/02/2013, 10:27
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Pasar array de name con sus values.

Cita:
Iniciado por yonineitor Ver Mensaje
Tengo lo siguiente:

<input type="checkbox" name="n_check[]" >
<input type="checkbox" name="n_check[]" >
<input type="checkbox" name="n_check[]" >


Posteriormente los mando por POST.

Pero al no seleccionar los name, el tamaño del arreglo se decrementa :S. es decir no sucede lo mismo que con los type="text".
Necesito: Obtener todos los array de los checkbox que tienen name de arreglo.

Espero haberme explicado, gracias
Un enunciado más que confuso.

Vayamos por el lado del javascript y html primero
Los name no se seleccionan, se selecciona un cb que tiene un name
El tamaño del arreglo se decrementa?
Obtener todos los array de los checkbox???, en todo caso el conjunto de checkboxes de un mismo name podrían conformar un array.
que tienen name de arreglo??? tus cb tienen por name n_check, el agregado de [] servirá para construir un array en tu php, lo que se envía por post sigue siendo $_POST[n_check];, para el javascript es necesario, ya que podés construir un array de cb del mismo nombre con getElementsByName(), que funciona en todos los navegadores

A partir de ahi, lo que quieras hacer con ese jQuery ó con Ajax, ya no tengo idea

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>Manejo de checkboxes javascript</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. <style type="text/css">
  8. /*<![CDATA[*/
  9. button{
  10. width: 300px;
  11. }
  12. /*]]>*/
  13. </style>
  14. <script type="text/javascript">
  15. //<![CDATA[
  16. var cb = [];
  17. function verifica(nombreGrupo){
  18. var n=0,cuales="";
  19. cb = document.getElementsByName(nombreGrupo);
  20. alert('El total de checkbox de name = ' + nombreGrupo + ' es: ' + cb.length);
  21.     for (var i = 0; i < cb.length; i++){
  22.     var e = parseInt(i);
  23.     alert('Valor del checkbox ' + (e+1) + ': ' + cb[i].value);
  24.         if(cb[i].checked == true){
  25.         cuales += cb[i].value + ' ';
  26.         n++;
  27.         }
  28.     } // fin loop
  29.     if(n == 0){
  30.     var mensaje = ' no hubo selección';
  31.     }else{
  32.     var mensaje = 'Se marcaron el/los checkbox de valor: ' + cuales
  33.     }
  34. alert('El total de checkbox marcados es: ' + n);
  35. alert(mensaje);
  36. document.getElementById('boxes').reset();
  37. }
  38. //]]>
  39. </script>
  40. </head>
  41. <body>
  42.    
  43. <?php
  44.  $link = "";
  45. if(isset($_POST['procesar'])){
  46. $opciones = $_POST['g_check'];
  47.  
  48. // Con esto te imprime cuales opciones se seleccionaron
  49. if(empty($opciones)){
  50. echo "<p>No hay opciones seleccionadas.</p>\n";
  51. }else{
  52. $totalSeleccionados = count($opciones);
  53. echo "<p>Se seleccionaron $totalSeleccionados opcion(s): ";
  54. for($i=0; $i < $totalSeleccionados; $i++){
  55. echo($opciones[$i] . " ");
  56.  
  57. }
  58. echo "</p>";
  59. }
  60.  
  61.        
  62. // una variante si querés saber si un checkbox en particular está seleccionado
  63. // lo pongo solo para dos, A y B, podés agregarla para el resto, se puede tambie extraer esta info
  64. // del resultado anterior, usa la función estaSeleccionado() al pie
  65.     if(estaSeleccionado('g_check','A')){
  66.     echo "<b>A se incluye en la selección</b><br />";
  67.     }
  68.     if(estaSeleccionado('g_check','B')){
  69.     echo "<b>B se incluye en la selección</b><br />";
  70.     }
  71.  
  72.   echo "<p><a href='" . $_SERVER['PHP_SELF'] . "'>Utilice este link para repetir el ejemplo</a></p>";
  73.  
  74.  
  75. } // cierre post procesar
  76.    
  77. function estaSeleccionado($nombreCb,$valorCB){
  78.     if(!empty($_POST[$nombreCb])){
  79.         foreach($_POST[$nombreCb] as $elValor){
  80.             if($elValor == $valorCB){
  81.             return true;
  82.             }
  83.         }
  84.     }
  85. return false;
  86. }
  87. ?> 
  88.    
  89.    
  90. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"  id="boxes">
  91. <div>Primer Grupo<br />
  92. A <input type="checkbox" name="g_check[]" value="A" />
  93. B <input type="checkbox" name="g_check[]" value="B" />
  94. C <input type="checkbox" name="g_check[]" value="C" />
  95. </div>
  96. <div>Segundo Grupo<br />
  97. D <input type="checkbox" name="g2_check" value="D" />
  98. E <input type="checkbox" name="g2_check" value="E" />
  99. F <input type="checkbox" name="g2_check" value="F" />
  100. H <input type="checkbox" name="g2_check" value="H" />
  101. I <input type="checkbox" name="g2_check" value="I" />
  102. </div>
  103. <input type="submit" name="procesar" value="procesar el grupo 1, solo ese grupo se pasa como array al php" />
  104. </form>
  105.  
  106. <div>
  107. Verificación con javascript<br/>
  108. <button onclick="verifica('g_check[]');">verificar grupo 1 : name = g_check[]</button><br />
  109. <button onclick="verifica('g2_check');">verificar grupo 2 : name = g2_check</button><br />
  110. </div>
  111. </body>
  112. </html>

Demo:
http://foros.emprear.com/php/boxes_js.php

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.