Como se que para un programador es un dolor de cabeza encontrar un buen codigo y que se entienda de como hacer combos dependientes, voy a explicar como hacer el tipico PAIS, ESTADO, CIUDAD/MUNICIPIO.
Lo primero es crear la base de datos con los paises, estados y ciudades del mundo, la cual adjunto en el comprimido se llama: mundo.sql
Dentro de la carpeta classes hay un archivo llamado: DataAccess.class donde debes configurar la conexion a tu bd.
Despues viene el formulario con los tres combos dependientes el cual consta de 3 partes de codigo:
La primera parte con las librerias que se invocan para crear los combos.
La segunda parte es el constructor que va antes del head:Código:<?php require 'classes/Form.class.php'; require 'classes/DataAccess.class.php'; require 'classes/ElementsFromDB.class.php'; require 'classes/LinkedSelect.class.php'; $form=new Form('form', 'post'); $form->AddInput(array( 'elementsfromdb'=>array( 'table'=>'paises', 'values'=>'id', 'options'=>'pais', ), 'attributes'=>array( 'type'=>'select', 'id'=>'select_1', 'name'=>'select_1' ), 'externalclass'=>'elementsfromdb', 'selected'=>'49', 'default'=>array( 'value'=>'0', 'option'=>'Elige...' ) )); $form->AddInput(array( 'elementsfromdb'=>array( 'table'=>'estados', 'values'=>'id', 'options'=>'estado', ), 'attributes'=>array( 'type'=>'select', 'id'=>'select_2', 'name'=>'select_2' ), 'externalclass'=>'linkedselect', 'linkedby'=>array( 'reference'=>'relacion', 'id'=>'select_1', 'showdefault'=>'0' ), 'default'=>array( 'value'=>'0', 'option'=>'Elige...' ), 'locations'=>array( 'js'=>'js/', 'php'=>'classes/' ) )); $form->AddInput(array( 'elementsfromdb'=>array( 'table'=>'municipios', 'values'=>'id', 'options'=>'municipio', ), 'attributes'=>array( 'type'=>'select', 'id'=>'select_3', 'name'=>'select_3' ), 'externalclass'=>'linkedselect', 'linkedby'=>array( 'reference'=>'relacion', 'id'=>'select_2', 'showdefault'=>'0' ), 'default'=>array( 'value'=>'0', 'option'=>'Elige...' ), 'locations'=>array( 'js'=>'js/', 'php'=>'classes/' ) )); $form->GenerateForm(); ?>
Y la tercera parte que agregar los controles en si:Código:<?php $form->GenerateAdditionalJS(); ?> </head>
Y la cuarta parte que es en el archivo php que recibe el formulario el del action del index averiguar que Pais, Estado y Ciudad seleccionaron asi:Código:<?php $form->GetInput('select_1'); ?> <?php $form->GetInput('select_2'); ?> <?php $form->GetInput('select_3'); ?>
Descargar ejemplo:Código://averiguar pais $_SESSION["select_1"]=$_POST['select_1']; $_select_1=$_SESSION["select_1"]; $link=mysql_connect("localhost","sistema4_ixel","fashionxtg2011"); mysql_select_db("sistema4_ixelmoda",$link); mysql_query("SET NAMES 'utf8'"); $consulta=mysql_query("select * from paises where id = '$_select_1'",$link); mysql_close($link); if( mysql_num_rows($consulta) == 1) { $array = mysql_fetch_array($consulta); $_SESSION["pais"] = $array["pais"]; $_pais = $_SESSION["pais"]; mysql_free_result($consulta); } //fin pais //averiguar departamento/estado $_SESSION["select_2"]=$_POST['select_2']; $_select_2=$_SESSION["select_2"]; $link=mysql_connect("localhost","sistema4_ixel","fashionxtg2011"); mysql_select_db("sistema4_ixelmoda",$link); mysql_query("SET NAMES 'utf8'"); $consulta=mysql_query("select * from estados where id = '$_select_2'",$link); mysql_close($link); if( mysql_num_rows($consulta) == 1) { $array = mysql_fetch_array($consulta); $_SESSION["estado"] = $array["estado"]; $_departamento = $_SESSION["estado"]; mysql_free_result($consulta); } //fin depto/estado //averiguar ciudad if (empty($_POST['ciudad'])){ $_SESSION["select_3"]=$_POST['select_3']; $_select_3=$_SESSION["select_3"]; $link=mysql_connect("localhost","sistema4_ixel","fashionxtg2011"); mysql_select_db("sistema4_ixelmoda",$link); mysql_query("SET NAMES 'utf8'"); $consulta=mysql_query("select * from municipios where id = '$_select_3'",$link); mysql_close($link); if( mysql_num_rows($consulta) == 1) { $array = mysql_fetch_array($consulta); $_SESSION["municipio"] = $array["municipio"]; $_ciudad = $_SESSION["municipio"]; mysql_free_result($consulta); } }else{ $_SESSION["municipio"]=$_POST['ciudad']; $_ciudad = $_SESSION["municipio"]; } //fin ciudad
4shared.com - free file sharing and storage
El descargable tiene dos carpetas una formulario_sencillo donde esta el codigo necesario solo para los combos, y otra formulario_completo donde esta un formulario comun con mas opciones para usuarios mas avanzados.
No olvides agregar a tu proyecto las carpetas classes y js, para que tus combos funcionen.
Espero les guste y les sirva esta adaptacion que hice de ese esplendido ejemplo de combos dependientes. Graphixx.
Fuente Original:
http://www.formatoweb.com.ar/blog/20...es-multinivel/