Foros del Web » Programando para Internet » PHP »

Error con $_REQUEST y valores generados con JavaScript en un formulario

Estas en el tema de Error con $_REQUEST y valores generados con JavaScript en un formulario en el foro de PHP en Foros del Web. Cordial saludo a todos. La situación en la cual les solicito ayuda es la siguiente. Tengo un formulario en el cual el usuario agrega datos ...
  #1 (permalink)  
Antiguo 05/10/2011, 14:06
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Pregunta Error con $_REQUEST y valores generados con JavaScript en un formulario

Cordial saludo a todos.

La situación en la cual les solicito ayuda es la siguiente.

Tengo un formulario en el cual el usuario agrega datos dinámicamente, uno de ellos es un <select> que llamé ListaElementos. básicamente la idea es que seleccione de otra lista de paises varios de ellos y los va agregando a la lista elementos con una función JavaScript, lo cual lo consigo con éxito con este código:

var lista=document.getElementById("ListaElementos");
var elemento=document.createElement("option");
elemento.setAttribute('value', idPais);
var contenido=document.createTextNode(Pais);
elemento.appendChild(contenido);

El problema radica es que cuando hago el submit y quiero ver los valores recibidos en el archivo PHP con la instrucción:

print_r($_REQUEST);

sólamente me muestra los valores de los input escritos directamente por el usuario, por ejemplo nombre o apellido. también tengo un calendario en javascript que alimenta una caja de texto exitósamente y tampoco pasa el valor a la página PHP.

¿Alguna vez les ha pasado algo similar?
¿alguna sugerencia?
¿Les agradezco su colaboración?
  #2 (permalink)  
Antiguo 05/10/2011, 14:09
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

antes de enviar la info al archivo php comprobé así su contenido...

var lista=document.getElementById("ListaElementos");
for (i=0;i<=lista.length-1; i++)
alert (lista.options[i].text);

y todos los valores se muestran, pero lo que estoy sospechando es que los valores agregados dinámicamete no los ve PHP....

será?
  #3 (permalink)  
Antiguo 06/10/2011, 14:28
 
Fecha de Ingreso: octubre-2011
Ubicación: Chile
Mensajes: 9
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

esos option van seleccionados? si estan dentro de un select solo te va a llegar el valor del option seleccionado.
  #4 (permalink)  
Antiguo 06/10/2011, 15:27
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

gracias socialk. Voy a ilustrar mejor el tema.

una página llamada index.html tiene este código:
<!DOCTYPE html>
<html>
<head>
<title>Prueba...</title>
<script type="text/javascript">
function agregar()
{
listaPais=document.getElementById("lstPais");
listaPaises=document.getElementById("lstPaisesSele ccionados");

var elemento=document.createElement("option");
var contenido=document.createTextNode(listaPais.option s[listaPais.selectedIndex].text);
elemento.setAttribute("value", listaPais.options[listaPais.selectedIndex].text);
elemento.setAttribute("selected", "selected");
elemento.appendChild(contenido);
listaPaises.appendChild(elemento);
}
window.onload=function ()
{
document.getElementById("btnAgregar").onclick=agre gar;
}
</script>
</head>
<body>
<form name="frmPrueba" id="frmPrueba" method="post" action="procesar.php">
<select name="lstPais" id="lstPais">
<option value="00">Seleccione pa&iacute;s</option>
<option value="Colombia">Colombia</option>
<option value="Brasil">Brasil</option>
<option value="Argentina">Argentina</option>
</select>
<input type="button" name="btnAgregar" id="btnAgregar" value="+"/><br/>
<select name="lstPaisesSeleccionados" id="lstPaisesSeleccionados" style="width:180px;" multiple="multiple" size="4" disabled="true">
</select>
<br/>
<input type="submit" value="Enviar"/>
</form>
</body>
</html>

y en la de procesar.php este otro:

<?php
print_r($_REQUEST);
?>

que me devuelve este resultado: Array ( [lstPais] => Colombia )

es decir, sólo me envía la información de la primera lista y no de la segunda....
alguna idea? gracias!
  #5 (permalink)  
Antiguo 06/10/2011, 15:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Eso es porque el comportamiento nativo del control <select> es enviar los elementos que esten seleccionados, por lo cual vas a tener que agregar una función javascript en el onsubmit de tu formulario para seleccionar todos los elementos de tu lista y poderlos recibir con PHP.

Saludos.
  #6 (permalink)  
Antiguo 08/10/2011, 17:10
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Gracias por tu aporte GatorV, pero te cuento que realmente los elemento sí están seleccionados, cuando se crean:

elemento.setAttribute("value", listaPais.options[listaPais.selectedIndex].text);
elemento.setAttribute("selected", "selected");
elemento.appendChild(contenido);
listaPaises.appendChild(elemento);

asi mismo tengo en el código original, un calendario mediante el cual guardo una fecha en una cada de texto y ese valor tampoco pasa...

creé un input hidden y en el value asigné todos los valores de los paises, y la información tampoco pasó a la página PHP.
  #7 (permalink)  
Antiguo 10/10/2011, 09:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Haz un var_dump($_POST) y verifica que valores llegan si siguen faltando esos, es por una de dos:

1.- O no estan seleccionados al hacer el envío a PHP.
2.- Estan fuera del elemento <form> que hace la llamada al script en el servidor.

Saludos.
  #8 (permalink)  
Antiguo 10/10/2011, 11:45
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

imagínate GatorV que después de media hora de estar escribiendo mis conclusiones de las últimas revisiones al respecto y al enviar la respuesta al foro me apareció un mensaje que decía que tenía que registrarme, y se perdió todo lo que escribí, osea que después de un tiempo se cierra la sesión automáticamente?

Voy a tratar de resumir lo que escribí antes:

* El select sí está dentro del form y deshabilité el atributo disabled del control, tras lo cual si permitió enviar a PHP información del select, pero a pesar de tener habilitado el atributo multiple="multiple" solo envía uno de los valores seleccionados y lo probé en varios navegadores, por si acaso.

* Tuve que crear un input type="hidden" al que le agregué todos los elementos separados por punto y coma, los cuales pasaron exitósamente a PHP, este es el resultado de un un var_dump($_POST):

array(4) { ["lstPais"]=> string(8) "Colombia" ["lstPaisesSeleccionados"]=> string(8) "Colombia" ["ctrlOculto"]=> string(31) "vacio;Argentina;Brasil;Colombia" ["Enviar"]=> string(6) "Enviar" }

Me voy a basar en el control oculto para lo que necesito, sin embargo me quedo con la duda de el por qué no pasan todos los elementos seleccionados en la lista.

En todo caso gracias por la colaboración.

Saludos.
  #9 (permalink)  
Antiguo 10/10/2011, 12:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Si no tienes habilitadas las cookies es probable que la sesión caduque...

Visualmente deberías de ver los elementos seleccionados, ¿Es así?
  #10 (permalink)  
Antiguo 10/10/2011, 13:35
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Cita:
Iniciado por GatorV Ver Mensaje
Visualmente deberías de ver los elementos seleccionados, ¿Es así?
así es, visualmente los puedes ver seleccionados. y siempre toma al primero que le haga click, a los demás los ignora....
  #11 (permalink)  
Antiguo 10/10/2011, 13:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

¿Pero al hacer el submit los ves todos seleccionados?
  #12 (permalink)  
Antiguo 12/10/2011, 10:38
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Cita:
Iniciado por GatorV Ver Mensaje
¿Pero al hacer el submit los ves todos seleccionados?
Si GatorV, todos los elementos están seleccionados:
  #13 (permalink)  
Antiguo 12/10/2011, 12:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Es muy raro que entonces no recibas los valores ya que el comportamiento del browser es enviarlos cuando encuentra el atributo multiple, prueba agregar los corchetes a tu control, ej: lstPaisesSeleccionados[] para que lo trate como un arreglo de valores.

Saludos.
  #14 (permalink)  
Antiguo 13/10/2011, 13:03
nec
 
Fecha de Ingreso: diciembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 1
Respuesta: Error con $_REQUEST y valores generados con JavaScript en un formulario

Cita:
Iniciado por GatorV Ver Mensaje
Es muy raro que entonces no recibas los valores ya que el comportamiento del browser es enviarlos cuando encuentra el atributo multiple, prueba agregar los corchetes a tu control, ej: lstPaisesSeleccionados[] para que lo trate como un arreglo de valores.

Saludos.
Perfecto GatorV, de esa forma sí funcionó! gracias....

array(4) {
["lstPais"]=>
string(9) "Argentina"
["lstPaisesSeleccionados"]=>
array(3) {
[0]=>
string(8) "Colombia"
[1]=>
string(6) "Brasil"
[2]=>
string(9) "Argentina"
}

["ctrlOculto"]=>
string(31) "vacio;Colombia;Brasil;Argentina"
["Enviar"]=>
string(6) "Enviar"
}

Etiquetas: formulario, generados, javascript, request, usuarios
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 03:37.