Ok, -gracias- por confirmar eso.
Te pongo el ejemplo que te comenté mio .. No puedo asesorate mucho si no te funciona o para adaptarlo a tus necesidades .. intenta entenderlo .. por lo menos está todo en un sólo script.
Código PHP:
<?
require ('../classes/ajax/xajax.inc.php');
include_once "../classes/ez_sql.php";
function opcion($region){
global $db;
$sql = "SELECT id_comuna,nombre_comuna FROM comunas WHERE id_region_comunas='".$region."' ORDER BY nombre_comuna";
$comunas_resultado=$db->get_results($sql);
$opcion = "<select id=\"comuna\" name=\"comuna\" onChange=\"xajax_opcion2(document.getElementById('region').value,document.getElementById('comuna').value);\">";
if (!$comunas_resultado){
$opcion .="<option value=\"\">No hay comunas</option>";
} else {
$opcion .="<option value=\"\">-- Seleccione --</option>";
foreach ($comunas_resultado as $comuna){
$comuna_s=addslashes($comuna->nombre_comuna);
$comuna_s=utf8_encode($comuna_s);
$opcion .="<option value=\"".$comuna->id_comuna."\">".$comuna_s."</option>";
}
}
$opcion .= "</select>";
$objResponse = new XajaxResponse();
$objResponse->addAssign("divcomuna", "innerHTML", $opcion);
return $objResponse;
//return $objResponse->getXML();
}
function opcion2($region,$comuna){
global $db;
$sql = "SELECT id_calle_comuna,nombre_calle_comuna FROM calles_comuna_region WHERE id_region='".$region."' AND id_comuna='".$comuna."' ORDER BY nombre_calle_comuna";
$calles_resultado=$db->get_results($sql);
$opcion = "<select id=\"calle\" name=\"calle\">";
if (!$calles_resultado){
$opcion .="<option value=\"\">No hay calles</option>";
} else {
$opcion .="<option value=\"\">-- Seleccione --</option>";
foreach ($calles_resultado as $calle){
$calles_s=addslashes($calle->nombre_calle_comuna);
$calles_s=utf8_encode($calles_s);
$opcion .="<option value=\"".$calle->id_calle."\">".$calles_s."</option>";
}
}
$opcion .= "</select>";
$objResponse = new XajaxResponse();
$objResponse->addAssign("divcalle", "innerHTML", $opcion);
return $objResponse;
}
$xajax = new xajax();
$xajax->debugOn(); // Uncomment this line to turn debugging on
$xajax->statusMessagesOn ();
$xajax->registerFunction("opcion",XAJAX_GET);
$xajax->registerFunction("opcion2",XAJAX_GET);
$xajax->processRequests();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php $xajax->printJavascript("../classes/ajax/"); // indica la ruta donde tengas instalado Xajax ... ?>
</head>
<body onLoad="xajax_opcion(0);xajax_opcion2(0,0);">
<?
echo "variables:<br>";
print_r($_POST);
?>
<form name="formulario" action="direccion2.php" method="POST">
<?php
// directamente muestro el primer "combo" .. el "padre" y en base a ese armo "dinámicamente" en XAJAX el resto.
$sql = "SELECT id_region,nombre_region FROM regiones";
$consulta_region = $db->get_results($sql);
if ($consulta_region) {
?>
<select name="region" id="region" onChange="xajax_opcion(document.getElementById('region').value);xajax_opcion2(document.getElementById('region').value,0);">";
if (!$comunas_resultado){">
<option>---Seleccione una Opción---</option>
<?
foreach($consulta_region as $regiones){
echo "<option value=\"".$regiones->id_region."\">".$regiones->nombre_region."</option>\n";
}
?>
</select>
<?
}
?>
<div id="divcomuna"></div>
<div id="divcalle"></div>
<input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>
Como te comenté .. usa una capa de abastracción de BBDD .. no es muy complicado adaptarlo a uso de "mysql_query()" y demás .. eso creo que es lo de menos.
Un saludo,