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.
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();
?>
La segunda parte es el constructor que va antes del head:
Código:
<?php $form->GenerateAdditionalJS(); ?> 
</head>
Y la tercera parte que agregar los controles en si:
Código:
<?php $form->GetInput('select_1'); ?>
<?php $form->GetInput('select_2'); ?>
<?php $form->GetInput('select_3'); ?>
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:
//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
Descargar ejemplo:
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/