Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/08/2007, 12:38
Avatar de Sergestux
Sergestux
 
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 17 años, 7 meses
Puntos: 20
Con postgres, javascipt y php

La forma mas facil, creo yo es la de recargar la pagina cada vez que escoges una opcion en un combo superior, asi ya le pasas el valor que escogiste en el combo anterior a el combo inferior (municipio p.ej.), de otra manera tendrias que tener cargados todos los datos de las posibles combinaciones en arreglos de java script (quizas en archivos) para poder rellenar los combos (sin recargar la pagina) cada vez que lo necesites.... aclaro que asi es como lo manejo yo, quizas no sea la correcta ni la mas limpia pero...
Mira asi es como lo he hecho yo:

Codigo Javascript
Código:
<SCRIPT language="JavaScript">
		function cambia_suc(idsuc)
		{
			sucid = idsuc.options[idsuc.selectedIndex].value;
			location = "VentasDirServ.php?sucid="+ sucid;
		}				
		
		function CambiaColonia(idsuc, idcol)
		{
			sucid = idsuc.options[idsuc.selectedIndex].value;
			colid = idcol.options[idcol.selectedIndex].value;
			location = "VentasDirServ.php?sucid="+ sucid +"&colid="+ colid;
		}	
</SCRIPT>
Y a continuacion el codigo html y php haciendo consultas a postgresql, aunque he visto que a Mysql es practimente lo mismo, bueno ahi va y que sirva de algo:
Código:
<select class="combobox" name="sucursalid" onChange="cambia_suc(this.form.sucursalid);">
		<?
			$sucursales = ObtieneSucursales( $cadcon );
			if ( $sucursales )
			{
				$registros = pg_numrows( $sucursales );
				for ( $cont = 0; $cont < $registros; $cont++ )
				{
					echo "<option ";
					if ( $sucursal == pg_result( $sucursales, $cont, 0 ) )
						echo "selected ";
					echo "value=\"" . pg_result( $sucursales, $cont, 0 ) . "\">" . pg_result( $sucursales, $cont, 1 ) . "</option>\n";
				}
			}
			?>
</select>


<select class="combobox" name="coloniaid"  onChange="CambiaColonia(this.form.sucursalid, this.form.coloniaid, 1);">
<?
	if ($sucursal)
		echo "Sucursal: $sucursal";
	else
		$sucursal =pg_result( $sucursales, 0, 0 );
													
	$Colonias = ObtieneColonias($cadcon, $sucursal);
	if ($Colonias)
	{
		$registros = pg_numrows($Colonias);	//Cantidad de colonias
	
		for ( $cont = 0; $cont < $registros; $cont++ )
		{
			echo "<option ";
			if ( $colonia == pg_result( $Colonias, $cont, 0 ))
				echo "selected ";
			echo "value=\"" . pg_result( $Colonias, $cont, 0 ) . "\">" . pg_result( $Colonias, $cont, 1 ) . "</option>\n";
		}
	}
?>
</select>


<select class="combobox" name="calleid">
<?
	if ($colonia)
		echo "Colonia: $colonia";
	else
		$colonia =pg_result($Colonias, 0, 0 );
									
	$Calles = ObtieneCalles($cadcon, $sucursal, $colonia);

	if ($Calles)
	{
		$registros = pg_numrows($Calles);		//Cantidad de calles
					
		if ($registros > 1)
			echo "<option selected value=\"0\">TODAS</option>\n";
		for ( $cont = 0; $cont < $registros; $cont++ )
		{
			echo "<option ";
			echo "value=\"" . pg_result( $Calles, $cont, 0 ) . "\">" . pg_result( $Calles, $cont, 1 ) . "</option>\n";
		}
	}
?>
</select>