Por favor, si me pueden orientar o ayudar con esto:
Tengo tres "Select" en un formulario con los cuales recojo la fecha de nacimiento, es decir:
Código HTML:
<select name="dia"> <select name="mes"> <select name="anio">
| |||
Mandar valor de 3 Select en un solo POST Hola a todos...! Por favor, si me pueden orientar o ayudar con esto: Tengo tres "Select" en un formulario con los cuales recojo la fecha de nacimiento, es decir: Código HTML: <select name="dia"> <select name="mes"> <select name="anio"> |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST a cada select le asignas el evento onchange Cita: esto tiene el inconveniente de que si se selecciona el mes y luego día y año, el valor resultante sería 01312012. para evitar esto, se necesitarían muchas líneas de código. por lo tanto no creo que merezca la pena onchange = "document.getElementById('campooculto').value += this.value"
__________________ if(ViolenciaDeGénero) {alert('MUJER ASESINADA');} |
| |||
Respuesta: Mandar valor de 3 Select en un solo POST atrapa lo valores de los select options en 3 variables y los concatenas en una y si no te queda dificil aprender ajax, ahi puedes enviar la unica variable por POST |
| |||
Respuesta: Mandar valor de 3 Select en un solo POST Hola, gracias por ayudarme! IsaBelM: ¿La única forma de conocer los valores seleccionados antes de mandar el Form es con "onchange"? deywibkiss: Atrapar los valores de los select en 3 variables y después concatenarla en una, significa que tengo que mandar el formulario antes... y lo que necesito es conocer sus valores antes del envio del form y concatenarlos. No se como es lo de ajax en este problema que tengo, pero si me orientas donde ver, pues lo leo! |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST onchange es un evento (el adecuado para un select). esto quiere decir que cuando se selecciona una de las opciones del combox, este se dispara. el código que te dejé asigna y concatena los valores seleccionados en cada combox. pero ten en cuenta la advertencia que te indiqué. en cuanto al uso de ajax, no tiene sentido. es añadir más líneas de código
__________________ if(ViolenciaDeGénero) {alert('MUJER ASESINADA');} Última edición por IsaBelM; 05/10/2012 a las 16:18 |
| |||
Respuesta: Mandar valor de 3 Select en un solo POST Vamos... como que no tengo posibilidad de solución en rescatar a travez de los 3 select la fecha de nacimiento, y así mandarla por un POST para insertarla en BD. Gracias IsaBelM...! |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST no es que no tengas posibilidad. como dije en mi primer post, es posible, pero, te merece la pena?? se me ha ocurrido. el segundo y el tercer select han de estar deshabilitados Cita: esto estaría en el primer y segundo selectonchange = "document.getElementById('campooculto').value += this.value; this.nextElementSibling.disabled = false;" está basado en la estructuras que muestras el problema que mencioné anteriormente desaparece en principio pero puede persistir si el usuario vuelve a seleccionar una opción distinta a la seleccionada anteriormente. además ahora veo otro problema, y que te puedes encontrar con una cadena como esta 3101201225. el 25 sería que el usuario volvió a seleccionar un nuevo día
__________________ if(ViolenciaDeGénero) {alert('MUJER ASESINADA');} Última edición por IsaBelM; 05/10/2012 a las 16:46 |
| |||
Respuesta: Mandar valor de 3 Select en un solo POST Hola emprear...! Necesito saberlos para concatenarlos y así mandar un único valor por "$_Post['']" pra que la clase php que tengo recepcione el dato y me lo inserte en la BD. |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST Pero los podés "concatenar" como vos decís en el php $dia = $_POST['dia']; $mes = $_POST['mes']; $anio = $_POST['anio']; // y los acomodás creando una nueva variable de acuerdo al orden que prefieras o al // formato que tu BD requiera No le veo mayor sentido a tener que reagrupar esos valores con el javascript, salvo quizás que quieras hacer algún tipo de validación. al margen, por si te interesa tengo hecho esto http://foros.emprear.com/php/demo-form-ajax-captcha/ que justamente valida una fecha de nacimiento Saludos
__________________ La voz de las antenas va, sustituyendo a Dios. Cuando finalice la mutación, nueva edad media habrá S.R. |
| |||
Respuesta: Mandar valor de 3 Select en un solo POST Si lo puedo concatenar con php: Código HTML: $d=$_POST["dia"]; $m=$_POST["mes"]; $a=$_POST["anio"]; $nacimiento=$a."-".$m."-".$d; Es decir, debo obtener el valor concatenado de los select antes y no hay otra forma que hacerlo por javascript. En tu ejemplo de "demo-form-ajax-captcha", no me da las fechas en formato para guardar en la BD, y por otro lado, me pregunto si esa fecha de tu ejemplo la puedo mandar por POST. |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST no veo el inconveniente el form envia los datos al php, el php recibe post para dia mes año. le das el formato que vos querés, si tu bd usa 'YYYY-MM-DD' (DATE), haces el insert con "$anio-$mes-$dia", si es solo una cadena "$dia-$mes-$anio" ó "$dia/$mes/$anio" En mi ejemplo es solo una cadena y es solo eso, un ejemplo no estoy insertando nada Sinceramente no entiendo el problema que planteás Esto Cita: es, digamos, una obviedad, se descarta que la fecha de nacimiento la pone el usuario y hasta no hacer el submit no la enviás. solo que da el tema de los años bisiestos, que yo lo controlo en el php, de ahi que uso Ajax para la validación, pero tampoco es necesario ya que debe de haber seguro una función equivalente para javascriptPero el valor de "nacimiento" solo lo obtengo después de mandar el formulario Saludos
__________________ La voz de las antenas va, sustituyendo a Dios. Cuando finalice la mutación, nueva edad media habrá S.R. |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST con el día se ve todo mas claro matemos todos los pájaros de un tiro (recibir la fecha en un único campo, con formato y validada. incluso los años bisiestos) Cita: ahora sólo te queda validar que el largo del control "fecha" sea 10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Documento sin título</title> <script type="text/javascript"> vFecha = { vardia : '', varmes : '', varanio : '', fnc: function() { if ((vFecha.varmes == 04 || vFecha.varmes == 06 || vFecha.varmes == 09 || vFecha.varmes == 11) && vFecha.vardia >= 31) { document.getElementById('fecha').value = vFecha.varanio + '--' + vFecha.vardia; alert('el mes seleccionado no tiene tantos días'); } else if (vFecha.varmes == 02 && vFecha.vardia >= 30) { document.getElementById('fecha').value = vFecha.varanio + '--' + vFecha.vardia; alert('el mes seleccionado no tiene tantos días'); } else if (vFecha.varmes == 02 && vFecha.vardia >= 29 && vFecha.varanio % 4 != 0) { document.getElementById('fecha').value = '-' + vFecha.varmes + '-' + vFecha.vardia; alert('el año seleccionado no es bisiesto'); } else { document.getElementById('fecha').value = vFecha.varanio + '-' + vFecha.varmes + '-' + vFecha.vardia; } } } </script> </head> <body> <form> <input type="text" name="fecha" id= "fecha" /> <br /> <select name="dia" id="dia" onchange="vFecha.vardia = this.value; vFecha.fnc();"> <option value="01">1</option> <option value="02">2</option> <option value="03">3</option> <option value="04">4</option> <option value="05">5</option> <option value="06">6</option> <option value="07">7</option> <option value="08">8</option> <option value="09">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <select name="mes" id="mes" onchange="vFecha.varmes = this.value; vFecha.fnc();"> <option value="01">1</option> <option value="02">2</option> <option value="03">3</option> <option value="04">4</option> <option value="05">5</option> <option value="06">6</option> <option value="07">7</option> <option value="08">8</option> <option value="09">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <select name="anio" id="anio" onchange="vFecha.varanio = this.value; vFecha.fnc();"> <option value="1990">1990</option> <option value="1991">1991</option> <option value="1992">1992</option> <option value="1993">1993</option> <option value="1994">1994</option> <option value="1995">1995</option> <option value="1996">1996</option> <option value="1997">1997</option> <option value="1998">1998</option> <option value="1999">1999</option> <option value="2000">2000</option> <option value="2001">2001</option> <option value="2002">2002</option> <option value="2003">2003</option> <option value="2004">2004</option> <option value="2005">2005</option> <option value="2006">2006</option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> </select> </form> </body> </html>
__________________ if(ViolenciaDeGénero) {alert('MUJER ASESINADA');} |
| |||
Respuesta: Mandar valor de 3 Select en un solo POST Guauuuu... IsaBelM... muchas gracias, gracias por tu tiempo!!! A último momento y antes de poner mi dedo gordo en la cama, apareció una solución. No es la más correcta pero es bastante prolija. Paso a contar un poco: El Formulario lo recepciona una "Class PHP" (la cual no quiero modificar por desconocimiento), esta clase procesa todos los $_POST[''] al darle al submit y demás datos para insertar en la BD. Por lo tanto, la fecha de nacimiento debe llegarle en un POST. Puedo obtener la fecha nacimiento concatenando los 3 select con php, obviamente después del submit, pero la clase ya procesó los datos enviados y no me sirve lo concatenado con php de esa forma. Entonces que hice... como el form se ejecuta en el mismo script, es decir, envia los datos a la clase y retorna al mismo script, lo que he hecho es aprovechar el concatenado php e incorporar en el script un "UPDATE" a la BD en el campo "Nacimiento", y meterle la concatenación (variable php), ya que ese UPDATE se realiza casi al mismo tiempo de darle al submit. Funcionó, no se si es lo más elegante y correcto, pero me ahorra mucho código y dolores de cabeza ya que no soy un hábido de conocimientos. Podría haber hecho todo más fácil al poner un campo texto, y hacer que el usuario ingrese su fecha nacimiento con una cadena en vez de los 3 select. Pero mi propósito era recibir la fecha en el formato MySQL para la BD y no cualquier cadena que ponga el usuario. No se si me explico bien, disculpen pero no tengo muchos conocimiento. De momento funciona como yo quiero y cumple su fin... talvez más adelante me encuentre con inconvenientes. Quiero agradecerles muchísimo el ayudarme, la verdad, este foro nunca me ha decepcionado! Saludos! |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST si te funciona bien. pero me temo que no he entendido nada, excepto Cita: y es justamente lo que hace el script que te dejé
Iniciado por paulkees El Formulario lo recepciona una "Class PHP" (la cual no quiero modificar por desconocimiento), esta clase procesa todos los $_POST[''] al darle al submit y demás datos para insertar en la BD. Por lo tanto, la fecha de nacimiento debe llegarle en un POST. Puedo obtener la fecha nacimiento concatenando los 3 select con php, obviamente después del submit, pero la clase ya procesó los datos enviados y no me sirve lo concatenado con php de esa forma.
__________________ if(ViolenciaDeGénero) {alert('MUJER ASESINADA');} |
| ||||
Respuesta: Mandar valor de 3 Select en un solo POST Cita: Ahora tengo todo un poco más claro
__________________ La voz de las antenas va, sustituyendo a Dios. Cuando finalice la mutación, nueva edad media habrá S.R. |
| |||
Respuesta: Mandar valor de 3 Select en un solo POST Si IsaBelM, tenés razón, es justamente lo que hace tu script... por eso lo aplaudí!!! Pero, al hacerlo con el "UPDATE" me simplifica la cuestión. Con esto no estoy diciendo que sea lo más correcto. emprear... me alegro que me hayas entendido! Saludos! |
Etiquetas: |