Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/01/2006, 08:13
killaton
 
Fecha de Ingreso: julio-2003
Mensajes: 71
Antigüedad: 20 años, 9 meses
Puntos: 0
hola y feliz año...

Si lo que deseas hacer es lo que e hecho aqui... hace ya algun tiempo .... http://www.whatsthepoint.com.ar/demo_ajax/

debes hacer lo sigiuente....

en principio..... dentro del <body> ... publicas los combos.... el 1ro.., si lo deseas, cargale el contenido de la Tabla Marcas
ej:
<select size="8" width="130" name="combo" id="combo" onChange="onChange_Combo_Marcas( this.selectedIndex ); return false;" style="width:120"></select>
y luego el 2do. combo..

<select size="8" width="130" name="combo1" id="combo1" style="width:120">
</select>

Debes tener en cuenta que los combos llevan ID para luego referenciarlos desde javascript.

ahora... vamos al javascript... que seria lo mas engorroso.

<script type="text/javascript" language="JavaScript1.2">

var url = "accion.php?param=";
var http = getHTTPObject(); // We create the HTTP Object

//---------------------------------------------------
//-- Genera xmlHttpRequest
//---------------------------------------------------

function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}


//---------------------------------------------------
//-- Acciona sobre Click del Combo MARCAS
//---------------------------------------------------

function onChange_Combo_Marcas() {

var selObj = document.getElementById('combo');
var selIndex = selObj.selectedIndex;
var marca = selObj.options[selIndex].value;

document.getElementById('combo1').options.length = 0;


http.open("GET", url + escape(marca) , true);

http.onreadystatechange = handleHttpResponse_cbx_modelo;

http.send(null);



}


como veras... esta ultima funcion ejerce la accion sobre cuando cambia la seleccion del 1er combo en el formulario...
y el http.open("GET", url + escape(marca) , true); lo que hace es llamar a tu script PHP, que es donde realizas la query a la tabla de modelos y publicas el XML para luego tomarlo desde la funcion handleHttpResponse_cbx_modelo() que detallo a continuacion.

//*---------------------------------------------------------------
//-- Carga COMBO de Modelos
//----------------------------------------------------------------

function handleHttpResponse_cbx_modelo() {


if (http.readyState == 4) {

var i;

var total = http.responseXML.getElementsByTagName('LINEA').len gth;

//var total = http.getElementsByTagName('LINEA').length;

// alert( total );

// results = http.responseText;

// alert(results);


for(i=0;i<total;i++){

//document.getElementById('combo1').options[i]= new Option(results[i],i+1);
//colxxx = http.responseXML.getElementsByTagName('col1')[i].firstChild.data;
document.getElementById('combo1').options[i]= new Option( http.responseXML.getElementsByTagName('COL1')[i].firstChild.data ,http.responseXML.getElementsByTagName('COL2')[i]);
}

window.status = '';

return false;

}

}


</script>

esto es todo el javascript que intervendria para cargar los combos dinamicamente...

dime que no entiendes hasta aqui... y luego te explico que iria en el PHP....

salu2.