Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/01/2010, 15:53
rrecarte
 
Fecha de Ingreso: agosto-2008
Mensajes: 367
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: mostrar listado <option> de una base de datos

mil gracias es verdad es lo que estaba buscando.. pero a decir verdad. si se me complico para adaptarlo. ya que al no conocer el codigo ajax no encuentro la forma de pasar la variable desde el query al ajax... dejo aqui como lo muestra.. si alguien se anima a explicarme como adaptarlo les agradezco.. por lo que veo lo que me esta complicando es que no solo toma el nombre sino un codigo. y ese codigo creo que es lo que me da problemas por no saber como eliminarlo... para quien no ha leido esto.. le paso a explicar...

la idea es que este mismo codigo marche en vez desde un listado.. desde una base de datos. mysql... haber quien sabe como hecharme una mano...

gracias


codigo ajax

<script type="text/javascript">
var peticion = null;

function inicializa_xhr() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}

function muestraProvincias() {
if (peticion.readyState == 4) {
if (peticion.status == 200) {
var lista = document.getElementById("provincia");
var provincias = eval('(' + peticion.responseText + ')');

lista.options[0] = new Option("- selecciona -");
var i=1;
for(var codigo in provincias) {
lista.options[i] = new Option(provincias[codigo], codigo);
i++;
}
}
}
}

function cargaMunicipios() {
var lista = document.getElementById("provincia");
var provincia = lista.options[lista.selectedIndex].value;
if(!isNaN(provincia)) {
peticion = inicializa_xhr();
if (peticion) {
peticion.onreadystatechange = muestraMunicipios;
peticion.open("POST", "http://localhost/cargaMunicipiosJSON.php?nocache=" + Math.random(), true);
peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
peticion.send("provincia=" + provincia);
}
}
}

function muestraMunicipios() {
if (peticion.readyState == 4) {
if (peticion.status == 200) {
var lista = document.getElementById("municipio");
var municipios = eval('(' + peticion.responseText + ')');

lista.options.length = 0;
var i=0;
for(var codigo in municipios) {
lista.options[i] = new Option(municipios[codigo], codigo);
i++;
}
}
}
}

window.onload = function() {
peticion = inicializa_xhr();
if(peticion) {
peticion.onreadystatechange = muestraProvincias;
peticion.open("GET", "http://localhost/cargaProvinciasJSON.php?nocache="+Math.random(), true);
peticion.send(null);
}

document.getElementById("provincia").onchange = cargaMunicipios;
}

</script>
</head>

<body>
<h1>Listas desplegables encadenadas</h1>

<form>
<label for="provincia">Provincia</label>
<select id="provincia">
<option>Cargando...</option>
</select>
<br/><br/>
<label for="municipio">Municipio</label>
<select id="municipio">
<option>- selecciona una provincia -</option>
</select>
</form>

</body>
</html>




y ahora muestro uno de los listados... este e el que tengo que reformar, para que en vez de sacar los datos de aqui.. haga una consulta a mysql.. algo como
$row=mysql_query("select * from $marcamodelo ") marcamodelo seria el primer select del listado... muchas gracias.


<?php

$provincias["26"] = "Rioja (La)";
$provincias["37"] = "Salamanca";
$provincias["38"] = "Santa Cruz de Tenerife";
$provincias["40"] = "Segovia";
$provincias["41"] = "Sevilla";
$provincias["42"] = "Soria";
$provincias["43"] = "Tarragona";
$provincias["44"] = "Teruel";
$provincias["45"] = "Toledo";
$provincias["46"] = "Valencia/València";
$provincias["47"] = "Valladolid";
$provincias["48"] = "Vizcaya/Bizkaia";
$provincias["49"] = "Zamora";
$provincias["50"] = "Zaragoza";



foreach($provincias as $codigo => $nombre) {
$elementos_json[] = "\"$codigo\": \"$nombre\"";
}

echo "{".implode(",", $elementos_json)."}"

?>

este seria un listado..