PDA

Ver la Versión Completa : como interactuar entre dos combos <select>


gabrielflowers
11-07-2007, 17:07:42
hola, mi consulta es la sgte:
tengo dos combos, el primero lo cargue con datos, y quiero que al elegir el usuario una opcion del combo se carguen en el otro combo algunas opciones

todo esto lo hago en php, alguien puede asesorarme o darme algunas ideas??

gracias...

jgutti
11-07-2007, 19:32:18
Gabriel, esto lo puedes hacer con ajax+php, adjunto ejemplo:

# index.php
<?
$hostname_testing = "localhost";
$database_testing = "testing";
$username_testing = "testing";
$password_testing = "testing";
$testing = mysql_connect($hostname_testing, $username_testing, $password_testing) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_testing, $testing);
$query_combo1 = "SELECT * FROM municipios";
$combo1 = mysql_query($query_combo1, $testing) or die(mysql_error());
$row = mysql_fetch_assoc($combo1);
?>
<html>
<head>
<title>Combos</title>
<script language="JavaScript" type="text/javascript" src="ajax.js"></script>
</head>
<body>
<form name="f1" method="post">
<select name="municipios" onChange="optionMuni();">
<option value="0">[ Seleccione ]</option>
<? do { ?>
<option value="<? echo $row['id_muni']?>"><? echo $row['nom_muni']?></option>
<? } while ($row = mysql_fetch_assoc($combo1)); ?>
</select>
<div id="localidad"><select><option>[ Seleccione ]</option></select></div>
</form>
</body>
</html>
<? mysql_free_result($combo1); ?>


# ajax.js
function objetoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function optionMuni(){
divResultado = document.getElementById('localidad');
id_muni=document.f1.municipios.value;
ajax=objetoAjax();
ajax.open("POST", "localidad.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
divResultado.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("id_muni="+id_muni)
}


# localidad.php
<?
$hostname_testing = "localhost";
$database_testing = "testing";
$username_testing = "testing";
$password_testing = "testing";
$testing = mysql_connect($hostname_testing, $username_testing, $password_testing) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_testing, $testing);
mysql_select_db($database_testing, $testing);
$query_localidades = "SELECT localidades.id_local, localidades.nom_local FROM localidades WHERE localidades.id_muni=". $_POST['id_muni'];
$localidades = mysql_query($query_localidades, $testing) or die(mysql_error());
$row = mysql_fetch_assoc($localidades);
?>
<select name="localidades">
<option value="0">[ Seleccione ]</option>
<? do { ?>
<option value="<? echo $row['id_local']?>"><? echo $row['nom_local']?></option>
<? } while ($row = mysql_fetch_assoc($localidades));?>
</select>
<? mysql_free_result($localidades); ?>

JULIPO
01-06-2010, 17:41:53
esa misma solucion la quiero implementar en delphi for php.

Como lo hago

tuadmin
19-06-2010, 21:50:04
vivimos en tiempos donde la optimizacion es necesario y para crear codigo legible y funcional primero hay que ordenarse primero hay que separar las cosas ya que el ejemplo que pusiste jgutti
esta muy bien pero ay q separa el codigo seria bueno implementar el metodo MVC

Modelo
Vista
Controlador

el modelo ser el codigo PHP
la Vista seria el XHTML + CSS
y el Controlador seria JAVASCRIPT

los datos rescatados por php podrian ser enviados en formato JSON
con json_encode();
estos seria recogidos mediante JAVASCRIPT e interpretados
seria bueno usar un framework como MOOTOOLS el que incorpora todo en forma ordenada

ejej bueno eso es lo que ahora estoy haciendo y me da buenos resultados
solo es una observacion bye bye