Foros del Web » Programando para Internet » Javascript » Frameworks JS »

como se podria enviar un array de checkbox??

Estas en el tema de como se podria enviar un array de checkbox?? en el foro de Frameworks JS en Foros del Web. Hola amig@s!! Acudo otra vez a vosotr@s porque me ha surgido otro gran problema. Resulta que tengo un formulario el cual, aparte de otros campos, ...
  #1 (permalink)  
Antiguo 24/06/2010, 07:34
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
como se podria enviar un array de checkbox??

Hola amig@s!!

Acudo otra vez a vosotr@s porque me ha surgido otro gran problema.

Resulta que tengo un formulario el cual, aparte de otros campos, está compuesto de un array de checkbox de la siguiente manera:
Código PHP:

<td><div id='m_c1'>";
                $conexion = conectar();
                    $consulta = "
Select From m_c order by id_m limit 3";
                    $resultado = mysql_query($consulta, $conexion);
                    mysql_close($conexion);
                    while($fila = mysql_fetch_array($resultado))
                        {
                            echo utf8_encode("
<input type='checkbox' name='c[]' id='c'  value='$fila[0]' />$fila[1]<br/>");
                        }
            echo"
</div></td>
            <
td><div id='m_c2'>";
                $conexion = conectar_intranet();
                    $consulta = "
Select From m_c where id_m 3 order by id_m";
                    $resultado = mysql_query($consulta, $conexion);
                    mysql_close($conexion);
                    while($fila = mysql_fetch_array($resultado))
                        {
                            echo utf8_encode("
<input type='checkbox' name='c2[]' id='c2' value='$fila[0]' />$fila[1]<br/>");
                        }
            echo"
</div></td
De tal forma que el array se me crea en 2 columnas y así está acorde con mi diseño.

Luego, al pulsar un botón quisiera que me guardase estos datos, pero no sé cómo enviarlos.
Los otros que envio me los almacena correctamente, pero estos arrays no... es más, me muestra como que mando variables vacias.
Código PHP:

onClick 
xajax_guardaDatos(document.form.usuario.valuedocument.form.gr.valuedocument.form.duracion.valuedocument.form.fin.valuedocument.form.c.valuedocument.form.c2.value 
Lo he intentado mandandolos con corchetes, pero me da error de sintaxis asi que...
Mil gracias!!
  #2 (permalink)  
Antiguo 24/06/2010, 14:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: como se podria enviar un array de checkbox??

Hola

Solo has de hacerlo en la función usando document.getElemtById('m_c1').getElementsByTagName ('input'), así sacas cada uno de los ckeckbox, con el otro lo mismo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 24/06/2010, 14:35
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: como se podria enviar un array de checkbox??

Perdon, creo que no me he explicado bien.

Los checkboxes están creados en php y debe recogerlos una función php a la cual se iama usando la librería xajax(para no tener que recargar la pagina).
Dónde iría javascript ahí??

Gracias por tu respuesta.
  #4 (permalink)  
Antiguo 24/06/2010, 14:52
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: como se podria enviar un array de checkbox??

Cita:
Iniciado por aniMAYtions Ver Mensaje
Perdon, creo que no me he explicado bien.

Los checkboxes están creados en php y debe recogerlos una función php a la cual se iama usando la librería xajax(para no tener que recargar la pagina).
Dónde iría javascript ahí??

Gracias por tu respuesta.
A bien, o no lo mencionaste o yo no lo leí. Pensé que usas AJAX

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 24/06/2010, 15:59
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: como se podria enviar un array de checkbox??

Nono, se me olvidó mencionarlo,sólo puse la iamada a la función xajax y se me olvidó especificarlo en el resto de mi consulta.

Leiendo por ahí he visto que una solución puede ser convertir el array en un string, mandarlo como cadena separada por, por ejemplo ",", y luego volver a componer el array.
Voy a probarlo usando javascript y metiendo el valor en un input hidden, a ver si lo logro.

Aunque si teneis más ideas son agradecidas.

Un saludo!!
  #6 (permalink)  
Antiguo 25/06/2010, 06:56
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: como se podria enviar un array de checkbox??

Hola

Buena idea Solo un matiz, yo lo haría en PHP

Cita:
mysql_close($conexion);
$RsArray = array()
while($fila = mysql_fetch_array($resultado))
{
$RsArray[] = $fila[0];
echo utf8_encode("<input type='checkbox' name='c[]' id='c' value='$fila[0]' />$fila[1]<br/>");
}
Y en la llamada
Cita:
onClick = xajax_guardaDatos(<?php echo '"' .implode($RsArray, '", "'). '"';?>)
de esta manera, ya pasas directamente el valor

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 25/06/2010, 09:28
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: como se podria enviar un array de checkbox??

No entiendo lo que me dices Adler, no lo veo.
Si pudieses explicármelo mejor... de todas formas, en cuanto solucione otro problemilla ke me ha surgido me pongo con eso otra vez y lo intentaré hacer con javascript si sigo sin ver tu solución.
Gracias de nuevo!!
  #8 (permalink)  
Antiguo 25/06/2010, 12:47
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: como se podria enviar un array de checkbox??

Hola

Te comento el código

Cita:
mysql_close($conexion);
$RsArray = array() // Creo un array
while($fila = mysql_fetch_array($resultado))
{
$RsArray[] = $fila[0]; // Doy valor a cada elemento del array
echo utf8_encode("<input type='checkbox' name='c[]' id='c' value='$fila[0]' />$fila[1]<br/>");
}

<?php echo '"' .implode($RsArray, '", "'). '"';?> // Hago un join, para que quede algo como (prueba, prueba, prueba,...)
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 25/06/2010, 13:03
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: como se podria enviar un array de checkbox??

Mmmm, vale, con eso estaría mandando el array completo.
Ahora, cómo mandaría sólo los que se han checkeado o cómo compararía lo que he enviado en la función a la que iamo con xajax con lo que está marcado en el formulario??
Sigo sin verlo con php...
Perdona por mi torpeza, pero hoy ando un tanto "espesa".
Gracias!!
  #10 (permalink)  
Antiguo 25/06/2010, 13:37
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: como se podria enviar un array de checkbox??

Hola

No mencionastes que solamente quieres enviar aquellos checkbox que hayan sido seleccionado. Aunque en esta ocasión debería de haberlo supuesto. Así que de nuevo volvemos a javascript

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 25/06/2010, 16:20
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: como se podria enviar un array de checkbox??

Empecé mal la pregunta y continué el hilo dando por hecho las cosas(o pensando ke lo había especificado), así que no deberías suponer nada.
Hoy no es mi dia, así que mejor corto hasta mañana.

Finalmente lo he resuelto como te comenté. En la iamada a xajax primero le digo a una función en javascript que me recoja los valores marcados y los meta en un string

Código PHP:

onclick
=javascript:procesaArray(); xajax_guardaDatos(document.form.gr.valuedocument.form.fin.valuedocument.form.cadarray.value);
//cadarray es el input hidden que recibirá la cadena que se crea en javascript 
Código Javascript:
Ver original
  1. function procesaArray()
  2. {
  3.     var valorarray = '';
  4.     var cadchecks1 = ''
  5.     var cadchecks2 = ''
  6.     var checks1 = document.getElementById('c1').getElementsByTagName('INPUT');
  7.     var checks2 = document.getElementById('c2').getElementsByTagName('INPUT');
  8.     for (var i=0; i<checks1.length; i++)
  9.     {
  10.         if (checks1[i].checked)
  11.         {
  12.             valorarray = checks1[i].value+',';
  13.             cadchecks1 = cadchecks1.concat(valorarray);
  14.         }
  15.     }
  16.     for (var i=0; i<checks2.length; i++)
  17.     {
  18.         if (checks2[i].checked)
  19.         {
  20.             valorarray = checks2[i].value+',';
  21.             cadchecks2 = cadchecks2.concat(valorarray);
  22.         }
  23.     }
  24.     var cadarrays = cadchecks1.concat(cadchecks2);
  25.     var arraycad = cadarrays.substring(0,cadarrays.length-1)
  26.     if(arraycad != '')
  27.         document.getElementById('cadarray').value = arraycad;
  28. };

Por último, en la función guardaDatos monto el array con la función explode y lo voy mandando valor a valor por medio de un bucle for a la función de inserción.

Espero que una vez resuelto le sirva a alguien.

Saludos y gracias por todo!!(y me temo que hasta pronto )
  #12 (permalink)  
Antiguo 26/06/2010, 05:00
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: como se podria enviar un array de checkbox??

Hola

La función está bien, pero se puede hacer con menos lineas. Solo has de insertar en un array los valores de los checkbox seleccionados y después usas la función join()

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript">
  5. function valores(f) {
  6. cual1 = 'c[]';
  7. cual2 = 'c2[]';
  8. todos = new Array();
  9. for (var i = 0, total = f[cual1].length; i < total; i++) {
  10.        if (f[cual1][i].checked) todos[todos.length] = f[cual1][i].value;
  11. }
  12.  
  13. for (var i = 0, total = f[cual2].length; i < total; i++) {
  14.        if (f[cual2][i].checked) todos[todos.length] = f[cual2][i].value;
  15. }
  16. document.getElementById('sel').value = todos.join(', ');
  17. }
  18. </script>
  19. </head>
  20. <body>
  21. <form>
  22. <div id="m_c1">
  23. <input name="c[]" type="checkbox" value="0" />
  24. <input name="c[]" type="checkbox" value="1" />
  25. <input name="c[]" type="checkbox" value="2" />
  26. <input name="c[]" type="checkbox" value="3" />
  27. <input name="c[]" type="checkbox" value="4" />
  28. <input name="c[]" type="checkbox" value="5" />
  29. </div>
  30. <div id="m_c2">
  31. <input name="c2[]" type="checkbox" value="6" />
  32. <input name="c2[]" type="checkbox" value="7" />
  33. <input name="c2[]" type="checkbox" value="8" />
  34. <input name="c2[]" type="checkbox" value="9" />
  35. <input name="c2[]" type="checkbox" value="10" />
  36. <input name="c2[]" type="checkbox" value="11" />
  37. </div>
  38.  
  39. <input type="button" onclick="valores(this.form);" value="mostrar" />
  40. <input type="text" id="sel" value="" />
  41. </form>
  42. </body>
  43. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #13 (permalink)  
Antiguo 27/06/2010, 03:18
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: como se podria enviar un array de checkbox??

Gracias Adler, ia me suponia que así era.
Pero de verdad, estoy ia taaan cansada de esta aplicación que funcionando así, así lo dejo.
Y si algún día la retomo por lo que sea, la optimizo reduciendo código al máximo.

Un saludo!!

Etiquetas: ajax, checkbox, enviar
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:45.