Ver Mensaje Individual
  #20 (permalink)  
Antiguo 02/10/2006, 09:58
Spychaser
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo Joya

Bueno, gracias a skatomundo que dio solucion a mi problema.
Aqui dejo el codigo completo de listas dependientes para los que lo esten necesitando:

Primer archivo:

select_dependientes.php
Codigo AJAX.
Código:
<script language="javascript" type="text/javascript">
function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false; 
	try 
	{ 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// Creacion del objet AJAX para IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}

function cargaContenido()
{
	
	var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
	if(valor==0)
	{
		// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo todo por defecto
		combo=document.getElementById("select_1");
		combo.length=0;
		var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Elegir una marca";
		combo.appendChild(nuevaOpcion);	combo.disabled=true;
	}
	else
	{
		ajax=nuevoAjax();
		ajax.open("GET", "select_dependientes_proceso.php?seleccionado="+valor, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando"
				combo=document.getElementById("select_1");
				combo.length=0;
				var Indice=window.document.form1.marcas.selectedIndex;
                document.form1.MARCANOMBRE.value=document.form1.marcas.options[Indice].text;
				var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
				combo.appendChild(nuevaOpcion); combo.disabled=true;	
			}
			if (ajax.readyState==4)
			{ 
				document.getElementById("fila_2").innerHTML=ajax.responseText;
			} 
		}
		ajax.send(null);
	}
}
</script>
Codigo PHP (contiene el primer select)
Código PHP:
<td id="fila_1" align="left"><?php
function generaPaises()
{
    
$coneccion=mysql_connect("localhost""city45_user""city") or die(mysql_error());
    
mysql_select_db("city45_avisos"$coneccion) or die(mysql_error());
    
$consulta=mysql_query("SELECT * FROM auto_marcas ORDER BY id_marcas ASC");
    
mysql_close($coneccion);

    
// Voy imprimiendo el primer select compuesto por los paises
    
echo "<select class='combo' id='select_0' name='marcas' onChange='cargaContenido()'>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        echo 
"<option value='".$registro[0]."'>".$registro[1]."</option>";
    }
    echo 
"</select>";
}
?>              <?php generaPaises(); ?><input type="hidden" name="MARCANOMBRE" value=""></td>
Código:
<td id="fila_2" align="left"><select class="combo" disabled="disabled" id="select_1" name="modelos">
		<option id="valor_defecto" value="0">Seleccione un modelo</option>
		</select></td>
select_dependientes_proceso.php
Codigo PHP (contiene el segundo select que depende del primero)
Código PHP:
<?php
function validaValor($parametro)
{
    
/* Funcion utilizada para validar el numero de pais recibido por GET. En nuestra base
    de datos tenemos como validos los paises desde 1 a 21 */
    
if(eregi("^[0-9]{1,2}$"$parametro)) 
    {
        if(
$parametro>=&& $parametro<=44) return TRUE;
        else return 
FALSE;
    }
    else return 
FALSE;
}

$valor=$_GET["seleccionado"];

if(
validaValor($valor))
{
    
// Si el numero corresponde a un codigo de pais valido paso a procesar
    
$coneccion=mysql_connect("localhost""city45_user""city") or die(mysql_error());
    
mysql_select_db("city45_avisos"$coneccion) or die(mysql_error());
    
// Genero la consulta trayendo todos los estados que correspondan al codigo de pais elegido
    
$consulta=mysql_query("SELECT * FROM auto_modelos WHERE id_modelos='$valor'");
    
mysql_close($coneccion);

    
// Comienzo a imprimir el select
    
echo "<select class='combo' id='select_1' name='modelos'>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        
// Paso a HTML acentors y ñ para su correcta visualizacion
        
$registro[1]=htmlentities($registro[1]);
        
// Imprimo las opciones del select
        
echo "<option value='".$registro[2]."'>".$registro[2]."</option>";
    }            
    echo 
"</select>";
}
?>
Bueno, cualquier cosa me consultan.
Muchas gracias skatomundo y hasta la proxima consulta