Foros del Web » Programando para Internet » Jquery »

Modificar select según valor

Estas en el tema de Modificar select según valor en el foro de Jquery en Foros del Web. Hola a todos. Estoy intentando buscar una solución a un problema que realizándolo en escritorio no tenía especial complejidad, pero utilizando php + js (Jquery) ...
  #1 (permalink)  
Antiguo 14/01/2016, 12:58
 
Fecha de Ingreso: septiembre-2015
Mensajes: 21
Antigüedad: 9 años, 3 meses
Puntos: 0
Modificar select según valor

Hola a todos.

Estoy intentando buscar una solución a un problema que realizándolo en escritorio no tenía especial complejidad, pero utilizando php + js (Jquery) me resulta difícil.

Tengo dos etiquetas "select", una indica la empresa y la otra el ejercicio. Lo que pretendo es que cuando se seleccione una valor de empresa distinto, el select con los ejercicios cambie según los valores de la empresa.

Ejemplo:

Empresa Ejercicios
1 2015
1 2016
2 2016

¿sabéis de que forma óptima se puede llevar a cabo?. Supongo que con Ajax se deberá ir a una página php para recoger los valores, pero , de esa forma me surgen más dudas. Es necesario pasar un array con los valores de php a Ajax(jquery), ¿Cómo se recorre el valor de data siendo un array?.

Espero haberme explicado.

¡Gracias!

Un saludo.
  #2 (permalink)  
Antiguo 14/01/2016, 21:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Modificar select según valor

Puedes retornar un array de valores desde PHP o bien formar al <select> con las opciones. Por ejemplo, supongamos que el <select> está en un <div>, entonces, lo que tendrías que hacer en ambos casos sería algo similar a lo siguiente:
Código HTML:
Ver original
  1. <div id = "contenedor">
  2.     <select id = "ejemplo"></select>
  3. </div>

Código Javascript:
Ver original
  1. var ajax = new XMLHttpRequest(), respuesta, propiedad, opcion, //Las variables a utilizar
  2.     select = document.querySelector("#ejemplo"); //Para el primer caso
  3.     div = document.querySelector("#contenedor"); //Para el segundo caso
  4. ajax.open("GET", "ejemplo.php", true);
  5. ajax.send();
  6. ajax.addEventListener("load", function(){
  7.     if (this.status == 200){
  8.         //PRIMER CASO: Llenando al <select> con valores llegados en un objeto JSON
  9.         respuesta = JSON.parse(this.responseText);
  10.         select.innerHTML = "";
  11.         for (propiedad in respuesta){
  12.             opcion = document.createElement("option");
  13.             opcion.value = propiedad;
  14.             opcion.text = respuesta[propiedad];
  15.             select.add(opcion);
  16.         }
  17.  
  18.         //SEGUNDO CASO: Reemplazando el <select> actual por uno nuevo llegado como respuesta
  19.         respuesta = this.responseText;
  20.         div.innerHTML = respuesta;
  21.     }
  22. }, false);

Código PHP:
Ver original
  1. <?php
  2. //PRIMER CASO
  3. $array = [
  4.     'valor1' => 'Texto1',
  5.     'valor2' => 'Texto2',
  6.     'valor3' => 'Texto3',
  7.     'valorN' => 'TextoN',
  8. ];
  9. echo json_encode($array);
  10.  
  11. //SEGUNDO CASO
  12. ?>
  13. <select>
  14. <?php
  15. foreach ($array as $valor => $texto){
  16. ?>
  17.     <option value = "<?php echo $valor; ?>"><?php echo $texto; ?></option>
  18. <?php
  19. }
  20. ?>
  21. </select>

En el primer caso, elaboras un array que contendrás índices y valores los cuales corresponderán a cada valor y texto de las opciones del <select>. Como no es posible devolver un array directamente, hay que codificarlo en formato JSON de tal forma que en la llamada asíncrona (AJAX) lo parseas para obtener al objeto y así poder recorrer su lista de atributos y valores. En el segundo caso, solo tienes que formar al <select> en el archivo PHP y en la llamada asíncrona, solo tendrás que insertarla como contenido del contenedor.

NOTA: Los bloques de código en donde señalo que se trata del primer o segundo caso, es para que elijas solo uno de ambos bloques, no los dos a la vez.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 14/01/2016 a las 22:03 Razón: Línea omitida
  #3 (permalink)  
Antiguo 15/01/2016, 02:17
 
Fecha de Ingreso: septiembre-2015
Mensajes: 21
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Modificar select según valor

Gracias Alexis88.

Voy a probar ambos casos y comento el resultado. Lo que veo es que el segundo caso, aunque más práctico, las funciones de php solo servirían para crear de nuevo el selct. Estudiaré como hacerlo, ya que estoy haciendo un ERP a medida para una empresa. ¡¡¿¿Quién me mandaría a aceptar hacerlo en web!!?? jajajaja. Veo la programación más lenta en web que en un raid de escritorio.

Un saludo.

Etiquetas: modificar, según, select, valor
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 11:42.