Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/09/2009, 14:15
0le0
 
Fecha de Ingreso: octubre-2008
Mensajes: 109
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Recordar opción seleccionada con php

A ver si logro resumir:
Tengo un formulario con una lista de opciones y al seleccionar una desplega automáticamente otra lista mediante ajax.
Una vez seleccionada una opción mando mis variables a la misma página y cuando vuelve a cargar deben estar seleccionadas las opciones que escogí para que el usuario las vea.

Lo he solucionado de esta manera:

Leo las variables desde mi url y las alamceno en una variable temporal y funciona como quería aunque el rendimiento no se sí sea el óptimo dado que tarda algo de tiempo en hacer el query.

Alguna idea de como puedo optimizar esto???

Código:
// JavaScript Document
function ajaxFunction(){
	var entidad2 = 0;
	var municipio = 0;
	
	var values = getValues();
	if(values != null){
		entidad2 = document.getElementById('entidad').value;
		municipio = unescape(values["municipio"]);
		if(entidad2 != unescape(values["entidad"]) ){
		municipio=0;
		}
		
		
	//alert(document.myForm.entidad.options[document.myForm.entidad.selectedIndex].value);
	var ajaxRequest;  // magic variable
	var ajaxDisplay = document.getElementById('ajaxDiv');
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
		}catch (e){
		// Internet Explorer Browsers
			try{
				ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
				}catch (e) {
					try{
						ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
						}catch (e){
				// Something went wrong
					alert("Debe actualizar su navegador para hacer uso de la aplicació.");
					return false;
					}
				}
			}	
	/*if(entidad != 0)
	{
		
// Define las variables
entidad = unescape(values["entidad"]);
municipio = unescape(values["municipio"]);
		}
	//		municipio = document.getElementById('municipio').value;
	*/
	// Receive Data Function 
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			}
		else 
			if (ajaxRequest.readyState != 4 && entidad2 != "todo")
			{
				ajaxDisplay.innerHTML = '<div align="left">Cargando lista de municipios..</div> ';
				}
		}
	//paso de parametros en la url	
	var queryString = "?entidad=" + entidad2+"&municipio="+municipio;
	ajaxRequest.open("GET", "genMun.php" + queryString, true);
	ajaxRequest.send(null); 
	}
}
//termina funcion ajax	

// Esta funcion extrae los valores de la url para entidad y municipio
function getValues(){
var urlEnd = document.URL.indexOf('?');
var values = new Array();
var names;

if (urlEnd != -1){
var params = document.URL.substring(urlEnd+1, document.URL.length).split('&');

for(i=0; i<params.length; i++) {
names = params[i].split('=');
values[names[0]] = names[1];
}
}
return values;
}
Código PHP:
<?php
header
('Content-Type: text/html; charset=UTF-8');
require_once(
"..\conexion.php"); // database connection

    // Retrieve data from Query String
$make $_GET['entidad'];
$make2 $_GET['municipio'];
//echo "make2=".$make2;

if($make !='todo')
{
//build query

$query "SELECT municipio,nom_mun FROM xxxxx WHERE entidad = '$make'  group by nom_mun ";
$result     = @mysql_query($query); 
$rowEstados     mysql_fetch_array($result);
//echo $query;
/////////////////////////////////////////////////
//if($make == 'todo')
//echo "<td style=\"display:none\"></td>";

//else
//{
    //Build Result String

$dropdown "<select name=\"municipio\" id=\"municipio\">";
$dropdown .= "<option value=\"0\">Seleccione Municipio</option>";


    
// Insert a new row in the table for each person returned
do {
    
$dropdown .= "<option value=".$rowEstados['municipio'];
if(
$make2==$rowEstados['municipio'])
    
$dropdown.=" selected=\"selected\"";
$dropdown.=">".utf8_encode(ucwords(strtolower(($rowEstados['nom_mun']))))."</option>";
    
}while (
$rowEstados mysql_fetch_array($result));

$dropdown .= "</select>";


echo 
$dropdown;
//}
mysql_free_result($result);
require_once(
"..\cerrarbd.php");
}
else return 
true;
?>