Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/07/2010, 11:22
xziolhvinvhgl
 
Fecha de Ingreso: marzo-2010
Mensajes: 68
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Select Combinado con XAJAX - PHP

hola betodaniel61. ps yo resolvi esto hace tiempo cuando estuve en tus zapatos...

primero tengo en un script el objeto XMLHTTPRequest(); que seria algo coo esto:
function XMLHttp()
{
var Object;

if(typeof XMLHttpRequest == "undefined")
{
if(navigator.userAgent.indexOf("MSIE 5") >=0)
{
Object = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
Object = new ActiveXObject("Msxml2.XMLHTTP");
}
}
else
{
Object = new XMLHttpRequest();
}

return Object;
}

luego incluyo este codigo javascript en la pagina donde tengo los select, como por ejemplo
<script type='text/javascript' src='objetoAjax.js'></scritp>

ahora... en esa misma pagina si gustas puedes colocar esta funcion, la cual envia el cod de un Estado a una pagina de busqueda y ésta a su vez envia una respuesta de todos los municipios pertenecientes a ese Estado...

function pasaEst(valor){
var mun = document.getElementById("municipios");
var obj = new XMLHttp();
obj.open("POST","busMunicipios.php",true);
obj.setRequestHeader('Content-type','application/x-www-form-urlencoded');
obj.send("estado="+valor);

obj.onreadystatechange=function(){
if((obj.readyState == 4) && (obj.status == 200)){
var resp = obj.responseText;
var vector1 = resp.split(';');
cant = vector1.length - 1;
mun.length = 0;
var sinSelect = document.createElement('option');
sinSelect.value = '-1';
sinSelect.innerHTML = 'Sin Selección';
mun.appendChild(sinSelect);
for(i=0; i<=(cant)-1; i++){
var vector2 = vector1[i].split(',');
var opcion = document.createElement('option');
opcion.value = vector2[0];
opcion.innerHTML = vector2[1];
mun.appendChild(opcion);
}
}
}
}

esta funcion se debe ejecutar en el evento "onChange" del select "Estado"
algo como esto
<select name='estados' id='estados' onChange='pasaEst(this.value)'>
....estados...
</select>

y por ultimo tengo el script .php donde busco los municipios el cual seria este...

<?php

include("conexion.php");

$estado = $_POST['estado'];
$bus = mysql_query("SELECT * FROM municipios WHERE id_estado = '$estado'",$link);
while($row = mysql_fetch_row($bus)){
echo $row[0].','.$row[1].';';
}

?>

mi tabla municipios simplemente tiene el codigo del municipio, el nombre y la clave foranea del estado al cual pertenece.... en este caso recibo la variable "estado" que paso por el metodo "POST" con la funcion pasaEst de javascript... y como solo necesito el codigo del municipio y su nombre pues realizo un Array con donde concateno estod datos por una coma (,) y al final del registro, por un punto y coma (;)...esto es para luego poder separarlos en la funcion y crear los arreglos necesarios para ingresar estos datos en el segundo select donde estaran los municipios.....

bueno espero te sirva de ayuda.....
PD: este codigo está propabo...incluso ahora mismo lo usoen un sistema que tengo