AJAX - Cargar combos

 
Vista:

Cargar combos

Publicado por German (3 intervenciones) el 19/02/2007 13:59:28
Buenos dias

La consulta es la siguiente. Tengo un codigo que procesa los datos enviados por el cliente. En la pagina del lado del cliente el usuario tiene tres combos (Pais, Ciudad, Pueblo), hace una seleccion y segun esta el formulario que esta del lado del servidor debe rellenar los otros dos combos. La consulta es la siguiente, ¿como puedo hacer en el servidor para enviar varios datos al cliente y de ese modo rellenar los combos?. Por ejemplo Si el usuario selecciona Argentina, en el combo de proovincia debe ir Buenos Aires, Misiones y en el campo pueblo debe estar en blanco esperando la seleccion del usuario.

Le envio el codigo que utilizo

Este esta del lado del servidor................

<?php
include("conexion.php");
$link=conectarse();
if(isset($_GET['funcion']))
{
$_valor=$_GET['funcion'];
// $campo = "provincia_descripcion";
switch ($_valor) {
case "Argentina":
$result=mysql_query("SELECT * FROM provincia WHERE id_pais =1",$link);
$row = mysql_fetch_array($result);
while($row = mysql_fetch_array($result)) {
$a=array($row["provincia_descripcion"]);
}
echo $a;
case "Brasil":
echo "Brasil";
break;
case "Chile":
echo "Argentina";
break;
}
}

?>

Y este del lado del cliente.........

<script language="javascript" type="text/javascript">
//funcion encargada de crear el objeto
function crear_ajax() {
try {
objetus = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
objetus= new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
objetus= false;
}
}
if (!objetus && typeof XMLHttpRequest!='undefined') {
objetus = new XMLHttpRequest();
}
return objetus
}
function sql(campo,id)
{
_objetus=crear_ajax(); _values_send="funcion="+document.getElementById(id.id).options[document.getElementById(id.id).selectedIndex].text
_URL_="procesador.php?"
_objetus.open("GET",_URL_+"&"+_values_send,true);
_objetus.onreadystatechange=function() {
if (_objetus.readyState==4)
{
if (_objetus.readyState==4)
{
document.getElementById(id.id).options[0].text=objetus.responseText;
}
}
}
_objetus.send(null);
}
</script>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

INTENTA ESTO

Publicado por WEBNESS (20 intervenciones) el 20/02/2007 17:22:21
en el mientras (while) donde recorres los resultados de tu consulta has esto
while($row = mysql_fetch_array($result))
{
echo "<option value=$row['idDpto']>$row['nombreDpto']</option>":
}

para que al dar en el cliente

ocument.getElementById(id.id).options[0].text=objetus.responseText;

mejor uses el atributo innerHTML que te pegara entre tus etiquetas <select> y </select> el codigo generado anteriormente,,,,, puesto que el codigo que necesitas recargar asincronicamente es el que se genero en el ciclo, o, tambien puedes mirar si ese codigo lo puedes alamcenar en una varibale

no te asegguro que esto funcione, porque apenas estoy aprendiendo ajax, pero, lo que si noto que es que puedes usar mejor los combos yque debes aprender mas diseño de bases de datos,,,,

puesto que tu combo de paises lo puedes sacar de una tabla, pero el value de cada <option> de paises debe ser el id de cada pais, asi te ahorras en el servidor el switch( ) case; break.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:INTENTA ESTO

Publicado por German (3 intervenciones) el 20/02/2007 19:28:56
Gracias por la respuesta, me funciono bien. Con respecto a la base de datos la tenia bien diseñada, pero no lo estaba usando en el codigo (gracias por la aclaracion) :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar