Lo que pudes hacer es utilizar Ajax, no soy muy diestro en esto del Ajax pero al menos me ha funcionado, lo que te voy a pasar.
Código:
<script languaje="JavaScript">
function getHTTPObject() {
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
if (!xmlhttp){
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
}
return xmlhttp;
}
var http = getHTTPObject();
var url = "detalles.php?opcion=lista&tipo="; // The server-side script
function handleHttpResponse() {
if (http.readyState == 4) {
if(http.status==200)
{
var results=http.responseText.split("-"); // aqui recibes la respuesta del script de PHP y creas tu listado
for (var count = 0; count < results.length; count++)
{
textValue = (results[count]);
optionItem = new Option( textValue, textValue);
var selObj = document.getElementById("clasificacion");
selObj.options[count] = optionItem;
}
}
}
}
function requestClasifica(ID) {
var sId = ID;
http.open("GET", url + escape(sId), true);
http.onreadystatechange = handleHttpResponse;
http.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8')
http.send(null);
}
function validar_lista(d)
{
var selObj = document.getElementById(d);
var selIndex = selObj.selectedIndex;
var valor = selObj.options[selIndex].value
requestClasifica(valor);
}
Y en el archivo de la var url tienes algo como esto:
Código PHP:
//variable to hold customer info
$sInfo = "";
//create the SQL query string
// DATOS ACTIVIDAD
$sQuery = "Select * from tabla where campo_a_comparar='".$_GET['tipo']."'";
$res = $db->query($sQuery);
// En la busqueda separas los valores por un guion medio(-) para que en la funcion de javascript donde recibes los valores los metes a un arreglo cada uno de los valores separados por el guion y asi formas tu nuevo listado
if($sInfo == '') {
$contar = 0;
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
if($contar==0)
{
echo $row->nombre;
}
else
{
echo "-".$row->nombre;
}
$contar++;
}
}
echo $sInfo
?>
YO estoy utilizando PEAR para la conexion a la DB pero tu puedes cambiar por tu codigo de busqueda, de esta forma la carga de los listados es dinamica con consulta a la BD y sin perder los datos que has puesto en tu formulario.El listado que yo he creado tiene un id llamado clasificacion, fijate bien en esto y cambialo por el nombre que tu tengas.
Espero te funcione y si tienes algun erro me avisas.
Salu2,
jars