Foros del Web » Programando para Internet » Javascript »

Select anidados guardar el valor del segundo select en la tabla

Estas en el tema de Select anidados guardar el valor del segundo select en la tabla en el foro de Javascript en Foros del Web. Hola. Hoy estoy llena de preguntas. Este es otro tema. El caso es que tengo unos select anidados y quisiera saber como guardar en la ...
  #1 (permalink)  
Antiguo 03/11/2008, 13:21
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Pregunta Select anidados guardar el valor del segundo select en la tabla

Hola. Hoy estoy llena de preguntas. Este es otro tema. El caso es que tengo unos select anidados y quisiera saber como guardar en la BD lo que el usuario seleccionó en el segundo select. Aquí les pongo el código del primer select:

<select name="categoria" id="categoria" onChange="categoria(this.form)">
<option>elige una opción...</option>
<option>Primera</option>
<option>Segunda</option>
<option>Tercera</option>
<option>Cuarta</option>
</select>

Este es el otro select:

<select name="subcategoria" id="subcategoria">
</select>

Esta es la función que muestra los datos del segundo select:

function categoria(formu)
{ var laCategoria = formu.categoria.selectedIndex
formu.subcategoria.length = subcategorias[laCategoria ].length
for (i=0; i<formu.subcategoria.length; i++)
{ formu.subcategoria.options[i].text = subcategorias[ laCategoria ][i]
}
}

Estas son las subcategorias:

var subcategorias = new Array()
subcategorias[1] = ["Agua"]
subcategorias[2] = ["Viento"]
subcategorias[3] = ["Fuego"]
subcategorias[4] = ["Tierra"]

Al escoger la subcategoria no me guarda nada al enviarlo por:
$subcategorias = $_POST['subcategoria'];

Cómo puedo hacer para que me envie el valor?

Gracias.
  #2 (permalink)  
Antiguo 03/11/2008, 13:26
Avatar de __DARK__  
Fecha de Ingreso: octubre-2008
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Hola!

Mira si observas lo que intentas guardar es el valor que tienes en la etiqueta:

<option>Etiqueta</option>

Lo q debes hacer es darle el mismo valor en la opcion de value, es decir tomar el valor, No la etiqueta... ejemplo:


Código PHP:
<option value="Etiqueta">Etiqueta</option
Asi te tomara el valor... Lo que tu estas haciendo es asignar las etiquetas, pero no el valor de esas etiquetas, entonces a la hora de intentar guardar, no lo hace pq? pq no lleva ningun valor...

No se si me explike pero cualkier duda aki sigo xD
  #3 (permalink)  
Antiguo 03/11/2008, 13:36
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

pero es que no tengo option value en el segundo pues los datos se muestran con la función. Cómo lo hago?
  #4 (permalink)  
Antiguo 03/11/2008, 13:45
Avatar de __DARK__  
Fecha de Ingreso: octubre-2008
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Okas, tu funcion esta asi:

Código HTML:
function categoria(formu)
{ var laCategoria = formu.categoria.selectedIndex
formu.subcategoria.length = subcategorias[laCategoria ].length
for (i=0; i<formu.subcategoria.length; i++)
{ formu.subcategoria.options[i].text = subcategorias[ laCategoria ][i]
}
}

Podrias agregar algo asi:

Código HTML:
formu.subcategoria.options[i].text = subcategorias[ laCategoria ][i]
formu.subcategoria.options[i].value = subcategorias[ laCategoria ][i]
Al momento de entrar al ciclo FOR y crear cada opcion, creras un "Option" con su etiqueta, y al mismo tiempo le estaras agregando el valor. Cabe mencionar q la etiqueta será lo mismo q su valor.
  #5 (permalink)  
Antiguo 03/11/2008, 13:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Tema trasladado a Javascript.
  #6 (permalink)  
Antiguo 03/11/2008, 14:14
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

lo coloque asi:

function categoria(formu)
{ var laCategoria = formu.categoria.selectedIndex
formu.subcategoria.length = subcategorias[laCategoria ].length
for (i=0; i<formu.subcategoria.length; i++)
{ formu.subcategoria.options[i].text = subcategorias[ laCategoria ][i]
formu.subcategoria.options[i].value = subcategorias[ laCategoria ][i]
}
}

y no me lo trae

que pasará?
  #7 (permalink)  
Antiguo 03/11/2008, 14:36
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

alguien tiene idea??
  #8 (permalink)  
Antiguo 03/11/2008, 16:43
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Por favor alguien sabe ayudarme con esto. En el foro de php me estaban ayudando. Por qué aquí no? Será que me pueden remitir de nuevo el tema al foro de php? Necesito ayuda
  #9 (permalink)  
Antiguo 03/11/2008, 19:22
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Por favor alguien tiene alguna respuesta? Gracias
  #10 (permalink)  
Antiguo 03/11/2008, 19:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Tienes que tener en cuenta que tu select y tu función tienen el mismo nombre, lo que puede generar conflictos, prueba cambiando el nombre a tu función.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 03/11/2008, 19:57
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

No creo que allí este el problema porque el select funciona perfectamente, incluso me guarda en la BD el dato del primer select.

EL problema es rescatar la selección del 2do. puesto que viene dado por la función.

Y el 2do select se llama subcategoria y la funcion se llama categoria, o sea son diferentes.

Cómo se podrá entonces rescatar el valor del 2do select?
  #12 (permalink)  
Antiguo 03/11/2008, 20:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Es que si te fijas tu primer select tiene como name "categoria", y tu función se llama precisamente "categoria", prueba a cambiarlos, no pierdes nada por intentar . Porque yo he probado y funciona si los nombres son diferentes.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 03/11/2008, 21:30
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

ya la cambié pero igual no lo guarda
  #14 (permalink)  
Antiguo 03/11/2008, 21:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Primero deberías comprobar si está o no recibiendo el valor el PHP, y si el problema es que no recibe (lo cual es poco probable) tal vez si pones el HTML como lo tienes podremos ayudarte.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 03/11/2008, 22:21
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

el php recibe el valor del primer select. Este es el código:

<select name="categoria" id="categoria" onChange="categoria(this.form)">
<option>elige una opción...</option>
<option>Primera</option>
<option>Segunda</option>
<option>Tercera</option>
<option>Cuarta</option>
</select>

Por ejemplo al seleccionar Primera me guarda Primera.

Este es el otro select:

<select name="subcategoria" id="subcategoria">
</select>

Esta es la función que muestra los datos del segundo select:

function categoria(formu)
{ var laCategoria = formu.categoria.selectedIndex
formu.subcategoria.length = subcategorias[laCategoria ].length
for (i=0; i<formu.subcategoria.length; i++)
{ formu.subcategoria.options[i].text = subcategorias[ laCategoria ][i]
}
}

Estas son las subcategorias:

var subcategorias = new Array()
subcategorias[1] = ["Agua"]
subcategorias[2] = ["Viento"]
subcategorias[3] = ["Fuego"]
subcategorias[4] = ["Tierra"]

Como este select se genera a partir de la función, no tiene los option como cuando uno los crea directamente. Entonces lo que yo pienso (no se si esto es descabellado) es que debería tener alguna forma como una clave valor para referenciarlo y guardarlo según sea el caso.

Todo lo que envio por el $_POST desde ese formulario pasa menos ese select.

Que solución habrá?
  #16 (permalink)  
Antiguo 03/11/2008, 22:29
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Es que no hiciste la modificación que te había comentado __DARK__, sobre agregar el value, además, como te dije, cambia lo de los nombres, porque en Firefox me dió problemas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #17 (permalink)  
Antiguo 04/11/2008, 15:29
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Mira lo hice así:

<select name="cat" id="cat" onChange="categoria(this.form)">
<option>elige una opción...</option>
<option>Primera</option>
<option>Segunda</option>
<option>Tercera</option>
<option>Cuarta</option>
</select>

Este es el otro select:

<select name="subcategoria" id="subcategoria">
</select>

Esta es la función que muestra los datos del segundo select:

function categoria(formu)
{ var laCategoria = formu.cat.selectedIndex
formu.subcategoria.length = subcategorias[laCategoria ].length
for (i=0; i<formu.subcategoria.length; i++)
{ formu.subcategoria.options[i].text = subcategorias[ laCategoria ][i]
formu.subcategoria.options[i].value = subcategorias[ laCategoria ][i]
}
}

Estas son las subcategorias:

var subcategorias = new Array()
subcategorias[1] = ["Agua"]
subcategorias[2] = ["Viento"]
subcategorias[3] = ["Fuego"]
subcategorias[4] = ["Tierra"]

Y de igual forma no lo guarda
  #18 (permalink)  
Antiguo 04/11/2008, 15:32
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Será porque pongo el nombre de name y de id iguales. Pero si cambio el nombre del id me afectará la función? o ella trabaja con el name?
  #19 (permalink)  
Antiguo 04/11/2008, 15:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Yo probé ese código, colocando los selects en un formulario y enviando, recibí la información sin problemas .

¿Tienes certeza de que no estás recibiendo la información? ¿o es que simplemente no estás procesando la información correctamente?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 04/11/2008, 17:33
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Select anidados guardar el valor del segundo select en la tabla

Hola amigos ya encontré el error. Era en la tabla de la base de datos pues tenía mal la estructura para recibir los datos. Que tonta!!!

Ya funciona

Muchas gracias por su ayuda y sobre todo su paciencia...
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 22:07.