Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/08/2014, 11:00
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Combos dependientes.

Hay dos formas de hacerlo, la correcta (con ajax) y la rustica. Ambas 2 involucran javascript y los cambios entre ambos metodos son muy pocos, te muestro un ejemplo de la forma sin ajax, pero deberias considerar usarlo ya que no es dificil de implementar.

Código PHP:
Ver original
  1. <?php
  2.     require_once('Connections/HD.php');
  3.     $categorias = mysql_query("select id_categoria, descripcion from categorias");
  4.     $sub_categorias = mysql_query ("select id_categoria, id_sub_categoria, descripcion from subcategorias");
  5. ?>
  6.     <form id="form1" name="form1" method="post">
  7.         <select name="categoria" id="categoria">
  8.             <option selected="selected">Seleccione una categoria</option>
  9.             <?php  
  10.                 while($categoria = mysql_fetch_array($categorias))
  11.                     echo "<option value=\"$categoria[id_categoria]\">$categoria[descripcion]</option>";
  12.             ?>
  13.         </select>
  14.         <select name="subcategoria" id="subcategoria">
  15.             <option selected="selected" data-categoria="0">Seleccione una sub-categoria</option>
  16.             <?php  
  17.                 while($sub_categoria = mysql_fetch_array($sub_categorias))
  18.                     echo "<option value=\"$sub_categoria[id_sub_categoria]\" data-categoria=\"$sub_categoria[id_categoria]\">$sub_categoria[descripcion]</option>";
  19.             ?>
  20.         </select>
  21.     </form>
  22.     <script>
  23.         function updateSubCategorias()
  24.         {
  25.             var s_categorias = document.querySelectorAll("#subcategoria option");
  26.             var categoria_actual = document.getElementById("categoria").value;
  27.            
  28.             for(var nro=0; nro < s_categorias.length; nro++)
  29.             {
  30.                 var categoria = s_categorias[nro].getAttribute("data-categoria");
  31.                 if(categoria == 0 || categoria == categoria_actual)
  32.                     s_categorias[nro].style.display = 'block';
  33.                 else
  34.                     s_categorias[nro].style.display = 'none';
  35.             }
  36.         }
  37.         document.getElementById("categoria").addEventListener("change", updateSubCategorias);  
  38.         updateSubCategorias();
  39.     </script>

Si quieres implementar ajax, solo tienes que poner la peticion dentro de la funcion updateSubCategorias() y realizar minimos cambios.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios