Foros del Web » Programando para Internet » PHP »

Multiple checbox-paso de parametro como string

Estas en el tema de Multiple checbox-paso de parametro como string en el foro de PHP en Foros del Web. Buenas! Sigo mi andadura en php, vengo de Java y C++ y ando perdido, asi que si podeis echarme un cable os lo agradeceria... Ahora ...
  #1 (permalink)  
Antiguo 26/05/2012, 13:14
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Multiple checbox-paso de parametro como string

Buenas!

Sigo mi andadura en php, vengo de Java y C++ y ando perdido, asi que si podeis echarme un cable os lo agradeceria...

Ahora mi problema es con un checkbox.

Digamos que tengo que enviar por un formulario 3 opciones

Usando un formulario sencillo como este:

Código PHP:
<form action="=www.as.com" method="get" enctype="text/plain">
    
    
208 <input type="checkbox" name="cad_gen[]" value="208">
    
209 <input type="checkbox" name="cad_gen[]" value="209">
    
210 <input type="checkbox" name="cad_gen[]" value="210">
    <
input type="submit" value="Enviar">
</
form
Lo que envia es los siguiente:

Código PHP:
www.as.com?cad_gen%5B%5D=209&cad_gen%5B%5D=210 
Yo tengo un enlace tal que:

Código PHP:
appl_experimentform.php?cad_gen=208%20213%20212%20 

Como se puede apreciar appl_experimentform.php espera recibir como parametro cad_gen y que este sea un string, entonces mi pregunta es:


Como puedo hacer para que al marcar los checkboxes envien todos los valores elegidos como una cadena.

Es decir si yo marco las opciones 208,213 y 212 se envie
Código PHP:
?cad_gen=208%20213%20212%20 
Lo digo porque es el formato que espera recibir el php al que le envio la informacion.


Gracias anticipadas por pasaros por aqui. Si sabeis la respuesta y es muy obvia decidmela y si teneis por lo menos una idea de como se puede resolverla agradecere cualquier idea.

Si estoy haciendo algo muy tonto me gustaria que me dijierais cual es mi error, asi aprendere.

Gracias! una vez mas!
  #2 (permalink)  
Antiguo 26/05/2012, 13:22
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Multiple checbox-paso de parametro como string

Cita:
...Como puedo hacer para que al marcar los checkboxes envien todos los valores elegidos como una cadena...
Simplemente no puedes por 2 razones, la primera, cada checkbox es independiente de los demás, por lo tanto el navegador enviará su valor separado de los demás checkbox, imagina que el navegador enviara siempre los valores en una sola variable, en primera sería logico, y en segunda sería un caos saber que valor es de que checkbox, para ese caso, mejor crea un solo checkbox con todos los valores, en segunda, TU has especificado que los checkbox sean enviados como un ARRAY, por lo tanto recibirás un array en tu archivo PHP, por lo cual ni es problema del navegador, ni de HTML ni mucho menos de PHP, ya que eres TU el que ah elegido como enviar los datos, ahora que si no sabes como recoger los datos es muy diferente, para recoger los valores de cualquier input enviado como array (agregando corchetes '[]' a los nombres, que por cierto deben ser iguales) solo debes recorrer el ID del item...

Código PHP:
Ver original
  1. //con un loop
  2. foreach($_GET['cad_gen'] as $item) {
  3.      echo $item;
  4. }
  5.  
  6. //de forma manual
  7. echo $_GET['cad_gen'][0];
  8. echo $_GET['cad_gen'][1];
  9. echo $_GET['cad_gen'][2];
__________________
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 =)
  #3 (permalink)  
Antiguo 26/05/2012, 13:40
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Cita:
Iniciado por Nemutagk Ver Mensaje
Simplemente no puedes por 2 razones, la primera, cada checkbox es independiente de los demás, por lo tanto el navegador enviará su valor separado de los demás checkbox, imagina que el navegador enviara siempre los valores en una sola variable, en primera sería logico, y en segunda sería un caos saber que valor es de que checkbox, para ese caso, mejor crea un solo checkbox con todos los valores, en segunda, TU has especificado que los checkbox sean enviados como un ARRAY, por lo tanto recibirás un array en tu archivo PHP, por lo cual ni es problema del navegador, ni de HTML ni mucho menos de PHP, ya que eres TU el que ah elegido como enviar los datos, ahora que si no sabes como recoger los datos es muy diferente, para recoger los valores de cualquier input enviado como array (agregando corchetes '[]' a los nombres, que por cierto deben ser iguales) solo debes recorrer el ID del item...

Código PHP:
Ver original
  1. //con un loop
  2. foreach($_GET['cad_gen'] as $item) {
  3.      echo $item;
  4. }
  5.  
  6. //de forma manual
  7. echo $_GET['cad_gen'][0];
  8. echo $_GET['cad_gen'][1];
  9. echo $_GET['cad_gen'][2];

Buenas! Gracias por la aclaracion de que no se puede hacer.

Me sugieres entonces alguna forma de hacerlo, es decir:

Tengo que enviar una cadena separada por espacios, como comente mas arriba tengo que enviar estos datos a un fichero

Código PHP:
appl_experimentform.php?cad_gen=208%20213%20212%20 
Como ves la variable cad_gen espera 208 213 212

Si no es usando checkboxes como lo podria hacer, como lo harias tú?
  #4 (permalink)  
Antiguo 26/05/2012, 13:45
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Multiple checbox-paso de parametro como string

Sin entrar en detalles de para qué lo quieres así, para obtener el formato que quieres, lo mejor es lo siguiente:
[/php]
$mi_cad_gen=implode("%",$_GET["cad_gen"]);
[/php]

este código extrerá los n valores de $_GET["cad_gen"] y te los devolverá en una cadena separados por el primer parámetro, en este caso %.
A partir de ahí, utilizas $mi_cad_gen, o como quieras llamarle, en el resto de tu php.

Hay otra manera, que es desde javascript, coger el valor de los checkbox y construir a mano la url, pero si te sirve la solución aportada, no te lies.

Saludos!
  #5 (permalink)  
Antiguo 26/05/2012, 13:46
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Multiple checbox-paso de parametro como string

muy sencillo con javascript/ajax, recorre los checkbox marcados, obtienes su valor y generas la variable, luego envias esa misma variable via ajax, ahora que si lo vas a enviar a un dominio externo generaría la variable y crearía un input con el nombre indicado y dandole como valor la variable generada, por ultimo enviarla como un formulario normal...

PD: hay algo que no comprendo aun, con lo que comenta @oscartt67 me queda la duda si el archivo que va a recibir la variable es de tu mismo sitio o si es un archivo externo, si es lo primero, tal como dice @oscartt67 para que te complicas la vida, recoge las variables tal cual te eh mostrado yo (que es la forma correcta con inputs enviados como array), si no explica bien cual es tu situación...
__________________
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 =)
  #6 (permalink)  
Antiguo 26/05/2012, 14:07
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Buenas!

Puedo concretar claro, no es nada secreto lo que hago jejeje

Mirad este enlace:

[URL="http://devresearch.uab.es/applic/gexp/microarray/appl_experimentform.php?cad_gen=208%20213%20212%20 &gestor=2&applicantID=202&id_matrix=17&name_matrix =at_matrix&id_view=&name_view=&cad_user="]http://devresearch.uab.es/applic/gexp/microarray/appl_experimentform.php?cad_gen=208%20213%20212%20 &gestor=2&applicantID=202&id_matrix=17&name_matrix =at_matrix&id_view=&name_view=&cad_user=[/URL]


Como veis en el aparatado de :

List of selected genes

208
212
213

Este es un php al que yo tengo que llamar pasandole unos genes(valores) que me han dicho que lo envie mediante un checkbox al lado de cada gen.

Pues bien analizando el fichero al que le paso estos valores veo en las linea de codigo lo siguiente:

Código PHP:
if ($cad_gen!="")
        {
            
$i 0;
            
$aux=trim($cad_gen);
            
$gen_trozos=explode(" "$aux);
            
$long=count($gen_trozos);
..... 
Por lo que veo lo trata como una cadena y luego los separa por los espacio y los va metiendo en un array $gen_trozos y bueno luego sigue con mas cosas en el codigo, pero vamos que el en todo el codigo al aparecer por este trozo lo trata como una cadena y asi luego los separa en valores.

Entonces para no modificar su codigo quiero yo tambien pasarle una cadena que es como el lo trata y asi que el flujo del codigo siga como tendria que ser, para yo no tocar mas nada ni liarme..sabeis...


Resumiendo y mucho:
Que tengo que pasarle una cadena con los valores(genes) que quiero separados por espacios vamos... jeje

Si a alguien interesa lo que estoy haciendo yo y que tiene que enviar esos datos es lo siguiente:

[URL="http://devresearch.uab.es/wwwprueba/joseflores/gexp/microarray/trabajar.php?imagen=L26_L1_C_C_A.GIF-L26_L1_C_C_B.GIF-L26_L2_C_C_B.GIF-&applicantID=313&id_matrix=17&gen_pos=546&valor=0_ 1_5_.curv"]http://devresearch.uab.es/wwwprueba/joseflores/gexp/microarray/trabajar.php?imagen=L26_L1_C_C_A.GIF-L26_L1_C_C_B.GIF-L26_L2_C_C_B.GIF-&applicantID=313&id_matrix=17&gen_pos=546&valor=0_ 1_5_.curv[/URL]

Estoy en ellos, mirando de como hacerlo y tal.... :)
  #7 (permalink)  
Antiguo 26/05/2012, 14:13
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Multiple checbox-paso de parametro como string

lo mas sencillo que te queda es generar a mano la variable cad_gen y separar las variables con espacios, puedes generar la variable como te comente con javascript o también es posible hacerlo desde PHP y enviar los datos via curl por ejemplo, aunque es mas complicado que la otra forma....
__________________
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 =)
  #8 (permalink)  
Antiguo 28/05/2012, 03:31
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Cita:
Iniciado por Nemutagk Ver Mensaje
lo mas sencillo que te queda es generar a mano la variable cad_gen y separar las variables con espacios, puedes generar la variable como te comente con javascript o también es posible hacerlo desde PHP y enviar los datos via curl por ejemplo, aunque es mas complicado que la otra forma....
Buenas! He estado fuera ayer.

Me llama la atencion eso que dices que pueda generar a mano la variable cad_gen usando javascript...me podrias decir como se hace?

(mientras lo ire buscando yo x google)
  #9 (permalink)  
Antiguo 28/05/2012, 04:37
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

De momento tengo esto:

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.            
  3.                   function comprobarCheckBoxCheked(){
  4. *var chk = document.getElementsByName('Idcondenv');
  5. *var len = chk.length;
  6. *var sel = new Array();
  7. *for (i = 0; i<chk.length; i++){
  8. * if(chk[i].checked){
  9. * *sel[sel.length] = chk[i].value;
  10. * }
  11. *}
  12. *$retorno = sel.join(' ');
  13. return $retorno;
  14. }

Con esto recojo los valores elegidos y los guardo en la variable retorno que es la que devuelvo.


Código HTML:
Ver original
  1. <form action="www.as.com" method=get>
  2.            
  3.             <INPUT value=1 CHECKED type=checkbox name=Idcondenv>
  4.             <br />
  5.             <INPUT value=2 type=checkbox name=Idcondenv>
  6.             <br />
  7.             <INPUT value=3 type=checkbox name=Idcondenv>
  8.             <input type="submit" value="Enviar" onclick="comprobarCheckBoxCheked()">
  9.            
  10.         </form>

Aqui lo que yo quiero es que se envie esa cadena pero por lo visto no lo consigo sino que se envia:

Código PHP:
Idcondenv=1&Idcondenv=2&Idcondenv=
Cuando yo esperaba que se devolviera:

Código PHP:
Idcondenv=1%202%203 
Osea todo junto ...que hago mal?
  #10 (permalink)  
Antiguo 28/05/2012, 05:48
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Multiple checbox-paso de parametro como string

no, yo lo haría de la siguiente manera...

Código HTML:
Ver original
  1. <form name="miForm" method="get" action="www.as.com" onsubmit="return getValues()">
  2.      <input type="checkbox" value="1" />
  3.      <input type="checkbox" value="2" />
  4.      <input type="checkbox" value="3" />
  5.      <input type="checkbox" value="4" />
  6.      <input type="checkbox" value="5" />
  7.      <input type="checkbox" value="6" />
  8.      <input type="hiddent" id="Idcondenv" name="Idcondenv" />
  9.      <input type="submit" value="Enviar" />
  10. </form>

el javascript...
Código Javascript:
Ver original
  1. function getValues() {
  2.      var allvalues = '';
  3.      for(var i=0; i<document.miForm.elements.length; i++) {
  4.           if (document.miForm.elements[i].type == "checkbox") {
  5.                if (document.miForm.elements[i].checked) {
  6.                     allValues = allvalues + ' ' + document.miFirm.elements[i].value;
  7.                }
  8.           }
  9.      }
  10.  
  11.      if(allValues != '') {
  12.           var oculto = document.getElementById('Idcondenv');
  13.           oculto.value = allValues;
  14.           return true;
  15.      }else {
  16.           alert('Debes seleccionar al menos 1 checkbox');
  17.           return false;
  18.      }
  19. }
__________________
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 =)
  #11 (permalink)  
Antiguo 28/05/2012, 06:24
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Gracias por el interes ante todo!

Lo he probado y no funciona, no se si tú lo has hecho, cuando le doy a enviar me enviar lo siguiente:


Código PHP:
www.as.com?Idcondenv
Como ves, es una cadena vacia.

Última edición por Dexter123; 28/05/2012 a las 06:34
  #12 (permalink)  
Antiguo 28/05/2012, 06:53
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Multiple checbox-paso de parametro como string

no, no lo había provado, de hecho, lo hice al "vuelo", tenia un 2 errores, pero ya que cheque el código mas a "fondo", decidi "mejorarlo" un poco, ya que no estaba seguro si el form tomaría el valor de icondenv cuando ya se ah llamado al evento onsubmit...

Código Javascript:
Ver original
  1. function getValues() {
  2.                  var allvalues = '';
  3.                  for(var i=0; i<document.miForm.elements.length; i++) {
  4.                       if (document.miForm.elements[i].type == "checkbox") {
  5.                            if (document.miForm.elements[i].checked) {
  6.                                 allvalues = allvalues + ' ' + document.miForm.elements[i].value;
  7.                            }
  8.                       }
  9.                  }
  10.              
  11.                  if(allvalues != '') {
  12.                       var oculto = document.getElementById('Idcondenv');
  13.                       oculto.value = allvalues;
  14.                 }
  15.             }
  16.  
  17.             function checkValues() {
  18.                 if (document.getElementById('Idcondenv').value == '') {
  19.                     alert('Debes seleccionar al menos 1 checkbox');
  20.                     return false;
  21.                 }
  22.             }

Código HTML:
Ver original
  1. <form name="miForm" method="get" action="checkbox.php" onsubmit="return checkValues();">
  2.              <input type="checkbox" value="1" />
  3.              <input type="checkbox" value="2" />
  4.              <input type="checkbox" value="3" />
  5.              <input type="checkbox" value="4" />
  6.              <input type="checkbox" value="5" />
  7.              <input type="checkbox" value="6" />
  8.              <input type="hidden" id="Idcondenv" name="Idcondenv" />
  9.              <input type="submit" value="Enviar" onclick="getValues()" />
  10.         </form>
__________________
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 28/05/2012, 08:01
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Si selecciono los 2 primeros checkboxes lo que resulta al ejecutar el nuevo codigo es:

Código PHP:
Idcondenv=+1+
Pero lo que yo quiero es que salga:

Código PHP:
Idcondenv=1%202%20 
Donde entiendo que %20 son los espacios en blanco.

Asi la cadena que quiero enviar es:

Código PHP:
 1 2 
  #14 (permalink)  
Antiguo 28/05/2012, 08:52
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: Multiple checbox-paso de parametro como string

y porque no envías el array por POST y en tu archivo posterior lo lees y lo interpretas???

algo asi

Código HTML:
Ver original
  1. <form method="post">
  2. <label>algo<input type="checkbox" name="valor[]" /></label>
  3. <label>algo<input type="checkbox" name="valor[]" /></label>
  4. </form>

y lo lees con
Código PHP:
Ver original
  1. $valores = implode(' ', $_POST['valor']);
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #15 (permalink)  
Antiguo 28/05/2012, 09:00
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Porque como he dicho no puedo realizar ningun cambio en el fichero que recibe la informacion.

Tengo que enviar una cadena.
  #16 (permalink)  
Antiguo 28/05/2012, 09:36
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: Multiple checbox-paso de parametro como string

y si lo armas desde antes de hacer el submit y lo guardas en un input hidden ????
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #17 (permalink)  
Antiguo 28/05/2012, 11:04
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Si ves el codigo eso es lo que hago, pero no se envie como deberia.
  #18 (permalink)  
Antiguo 28/05/2012, 11:14
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: Multiple checbox-paso de parametro como string

Código Javascript:
Ver original
  1. for(var i=0; i<document.miForm.elements.length; i++) {
  2.           if (document.miForm.elements[i].type == "checkbox") {
  3.                if (document.miForm.elements[i].checked) {
  4.                     allValues = allvalues + ' ' + document.miFirm.elements[i].value;
  5.                }
  6.           }
  7.      }


despues de ese for, pon un alert:

Código Javascript:
Ver original
  1. alert(allValues);

y poniendo esto... me doy cuenta que llamas diferente a las vairables en el momento de la asignación....
Código Javascript:
Ver original
  1. allValues = allvalues + ' ' + document.miFirm.elements[i].value;


allValues... difiere de allvalues...
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #19 (permalink)  
Antiguo 28/05/2012, 12:06
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Cita:
Iniciado por p414 Ver Mensaje
Código Javascript:
Ver original
  1. for(var i=0; i<document.miForm.elements.length; i++) {
  2.           if (document.miForm.elements[i].type == "checkbox") {
  3.                if (document.miForm.elements[i].checked) {
  4.                     allValues = allvalues + ' ' + document.miFirm.elements[i].value;
  5.                }
  6.           }
  7.      }


despues de ese for, pon un alert:

Código Javascript:
Ver original
  1. alert(allValues);

y poniendo esto... me doy cuenta que llamas diferente a las vairables en el momento de la asignación....
Código Javascript:
Ver original
  1. allValues = allvalues + ' ' + document.miFirm.elements[i].value;


allValues... difiere de allvalues...

No se donde ves que haya un allValues en el codigo que enseño?
  #20 (permalink)  
Antiguo 28/05/2012, 12:12
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: Multiple checbox-paso de parametro como string

upps perdón fue en el código que te proporcionó Nemutagk... trata probando el codigo de Nemutagk pero con las correciones que te puse
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #21 (permalink)  
Antiguo 28/05/2012, 14:18
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Cita:
Iniciado por p414 Ver Mensaje
upps perdón fue en el código que te proporcionó Nemutagk... trata probando el codigo de Nemutagk pero con las correciones que te puse
No entiendo que correciones me dices ...solo hay un alert() que no modifica el codigo y lo otro que ya te dije que te equivocabas.
  #22 (permalink)  
Antiguo 28/05/2012, 15:16
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: Multiple checbox-paso de parametro como string

aqui Nemutagk te puso un código...

a ese código me refiero

ahi es donde está el allValues
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #23 (permalink)  
Antiguo 28/05/2012, 15:49
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Multiple checbox-paso de parametro como string

Efectivamente, el código original que publiqué tenia 2 errores tipográficos, pero aparte de eso, no es muy optimo, chechando el código lo mejor es hacer algo así...

Código HTML:
Ver original
  1.     <head>
  2.         <title>Checkbox</title>
  3.         <script type="text/javascript">
  4.             function getValues() {
  5.                  var allvalues = '';
  6.                  for(var i=0; i<document.miForm.elements.length; i++) {
  7.                       if (document.miForm.elements[i].type == "checkbox") {
  8.                            if (document.miForm.elements[i].checked) {
  9.                                 if (allvalues != '') {
  10.                                     allvalues = allvalues + ' ' + document.miForm.elements[i].value;
  11.                                 }else {
  12.                                     allvalues = document.miForm.elements[i].value;
  13.                                 }
  14.                            }
  15.                       }
  16.                  }
  17.              
  18.                  if(allvalues != '') {
  19.                       var oculto = document.getElementById('Idcondenv');
  20.                       oculto.value = allvalues;
  21.                 }
  22.             }
  23.  
  24.             function checkValues() {
  25.                 if (document.getElementById('Idcondenv').value == '') {
  26.                     alert('Debes seleccionar al menos 1 checkbox');
  27.                     return false;
  28.                 }
  29.             }
  30.         </script>
  31.     </head>
  32.     <body>
  33.         <form name="miForm" method="get" action="checkbox.php" onsubmit="return checkValues();">
  34.              <input type="checkbox" value="1" />
  35.              <input type="checkbox" value="2" />
  36.              <input type="checkbox" value="3" />
  37.              <input type="checkbox" value="4" />
  38.              <input type="checkbox" value="5" />
  39.              <input type="checkbox" value="6" />
  40.              <input type="text" id="Idcondenv" name="Idcondenv" />
  41.              <input type="submit" value="Enviar" onclick="getValues()" />
  42.         </form>
  43.         <?php
  44.         if (isset($_GET['Idcondenv'])) {
  45.             $condenv = $_GET['Idcondenv'];
  46.             $condenv = explode(' ',$condenv);
  47.             echo '<pre>';
  48.             var_dump($condenv);
  49.             echo '</pre>';
  50.         } ?>
  51.     </body>
  52. </html>

Cita:
Pero lo que yo quiero es que salga:

Código PHP:
Idcondenv=1%202%20

Donde entiendo que %20 son los espacios en blanco.
Sin ofender, pero criticas algo sin probarlo, el navegador por defecto codifica los espacios con el signo + (más), por lo tanto, el código generado es correcto, no hay diferencia real entre el signo + (más) y %20, si hubieras probado el código hubieras visto que funciona correctamente, incluso agrego un código PHP exactamente igual al que usas en el archivo donde vas a recoger las variables...
__________________
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 =)
  #24 (permalink)  
Antiguo 03/06/2012, 06:32
 
Fecha de Ingreso: febrero-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Multiple checbox-paso de parametro como string

Buenas! Ante todo gracias por las respuestas que me has dado.No he tenido tiempo hasta ahora para entrar en la web.

Te dire que si que lo probe y no reconocia el signo + como el %20, asi que no era lo que yo buscaba, obviamente me intente basar en tu codigo para hacer lo que yo queria y modificarlo sin exito.

Ahora bien al final me decidi por otra manera.

Como no podia modificar el fichero que recibia los datos de este, porque como dije tenia que recibir una cadena con espacios si o si, pues cree otro fichero intermedio digamos, que recibia en una array los valores del checkbox y en este fichero intermedio formaba la cadena y luego enviaba esta cadena.





Cita:
Iniciado por Nemutagk Ver Mensaje
Efectivamente, el código original que publiqué tenia 2 errores tipográficos, pero aparte de eso, no es muy optimo, chechando el código lo mejor es hacer algo así...

Código HTML:
Ver original
  1.     <head>
  2.         <title>Checkbox</title>
  3.         <script type="text/javascript">
  4.             function getValues() {
  5.                  var allvalues = '';
  6.                  for(var i=0; i<document.miForm.elements.length; i++) {
  7.                       if (document.miForm.elements[i].type == "checkbox") {
  8.                            if (document.miForm.elements[i].checked) {
  9.                                 if (allvalues != '') {
  10.                                     allvalues = allvalues + ' ' + document.miForm.elements[i].value;
  11.                                 }else {
  12.                                     allvalues = document.miForm.elements[i].value;
  13.                                 }
  14.                            }
  15.                       }
  16.                  }
  17.              
  18.                  if(allvalues != '') {
  19.                       var oculto = document.getElementById('Idcondenv');
  20.                       oculto.value = allvalues;
  21.                 }
  22.             }
  23.  
  24.             function checkValues() {
  25.                 if (document.getElementById('Idcondenv').value == '') {
  26.                     alert('Debes seleccionar al menos 1 checkbox');
  27.                     return false;
  28.                 }
  29.             }
  30.         </script>
  31.     </head>
  32.     <body>
  33.         <form name="miForm" method="get" action="checkbox.php" onsubmit="return checkValues();">
  34.              <input type="checkbox" value="1" />
  35.              <input type="checkbox" value="2" />
  36.              <input type="checkbox" value="3" />
  37.              <input type="checkbox" value="4" />
  38.              <input type="checkbox" value="5" />
  39.              <input type="checkbox" value="6" />
  40.              <input type="text" id="Idcondenv" name="Idcondenv" />
  41.              <input type="submit" value="Enviar" onclick="getValues()" />
  42.         </form>
  43.         <?php
  44.         if (isset($_GET['Idcondenv'])) {
  45.             $condenv = $_GET['Idcondenv'];
  46.             $condenv = explode(' ',$condenv);
  47.             echo '<pre>';
  48.             var_dump($condenv);
  49.             echo '</pre>';
  50.         } ?>
  51.     </body>
  52. </html>



Sin ofender, pero criticas algo sin probarlo, el navegador por defecto codifica los espacios con el signo + (más), por lo tanto, el código generado es correcto, no hay diferencia real entre el signo + (más) y %20, si hubieras probado el código hubieras visto que funciona correctamente, incluso agrego un código PHP exactamente igual al que usas en el archivo donde vas a recoger las variables...

Etiquetas: formulario, parametro, string
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 05:59.