NECESITO AYUDA
Publicado por jorge (1 intervención) el 28/11/2006 00:20:20
Hola a todos, que tal estan??? bueno yo llevo un mes estujandome la cabeza con el tema de ajax y no consigo la solucion, estoy haciendo 3 listas select dependientes , cuando seleccionas el valor de la primera consulta la base de datos y selecciona la segunda y cuando selecciones el segundo select consulta a la base de datos el selec1 y el select 2 y muestra el resultado en la tercera, la base de datos es una tabla sola en la que tengo las columas id,tipo,provincia.pueblo,descripcion.
Bueno aqui les dejo el codigo que he hecho y solo me carga hasta el select dos pero no el tercero.
Agradeceria alguna ayuda o comentario y quedo a vuestra disposicion.
ahi va el codigo.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?php
function generaTipo()
{
$coneccion=mysql_connect("localhost", "usuario", "211176") or die(mysql_error());
mysql_select_db("solares", $coneccion) or die(mysql_error());
$consulta=mysql_query("Select * from busquedasuelo group by tipo");
mysql_close($coneccion);
// Voy imprimiendo el primer select compuesto por los paises
echo "<select class='combo' id='select_0' name='paises' onChange='cargaContenido()'>";
echo "<option value='0'>Selecciona tipo de suelo</option>";
while($registro=mysql_fetch_row($consulta))
{
echo "<option value='".$registro[1]."'>".$registro[3]."</option>";
}
echo "</select>";
}
?>
<html>
<head>
<style type="text/css">
.punteado
{
border-style:dotted;
border-color:#000000;
background-color:#EAEAEA;
font-family:Verdana;
font-size:10px;
text-align:center;
}
.combo
{
font-family:Verdana;
font-size:10px;
border-color:#CCCCCC;
}
</style>
<script language="javascript" type="text/javascript">
function nuevoAjax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}
function cargaContenido()
{
var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
if(valor==0)
{
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo todo por defecto
combo=document.getElementById("select_1");
combo.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Pais...";
combo.appendChild(nuevaOpcion); combo.disabled=true;
}
else
{
ajax=nuevoAjax();
ajax.open("GET", "dependientes.php?seleccionado="+valor, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando"
combo=document.getElementById("select_1");
combo.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
combo.appendChild(nuevaOpcion); combo.disabled=true;
}
if (ajax.readyState==4)
{
document.getElementById("fila_2").innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}
</script>
<script language="javascript" type="text/javascript">
function nuevoAjax1()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}
function new()
{
var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
var elemento;
var valor1=document.getElementById("select_1").options[document.getElementById("select_1").selectedIndex].text;
var elemento;
if(valor!=0)
{
ajax=nuevoAjax1();
// Envio al servidor el valor seleccionado y el combo al cual se le deben poner los datos
ajax.open("GET", "dependientes1.php?selectvalue0="+valor+"&selecttext1="+valor1, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Elige" y pongo una que dice "Cargando"
elemento=document.getElementById("select_2");
elemento.length=0;
var opcionCargando=document.createElement("option"); opcionCargando.value=0; opcionCargando.innerHTML="Cargando...";
elemento.appendChild(opcionCargando); elemento.disabled=true;
}
if (ajax.readyState==4)
{
// Coloco en la fila contenedora los datos que recivo del servidor
document.getElementById("fila_3").innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo</title>
</head>
<body>
<center>
<table border="1" width="400" style="border-style:none;">
<tr>
<td id="fila_1" width="50%" class="punteado"><?php generaTipo(); ?></td>
<td id="fila_2" width="50%" class="punteado">
<select class="combo" disabled="disabled" id="select_1" name="estados">
<option id="valor_defecto" value="0">Selecciona provincia...</option>
</select>
</td>
<td id="fila_3" width="50%" class="punteado">
<select class="combo" disabled="disabled" id="select_2" name="pueblos">
<option id="valor_defecto" value="0">Selecciona pueblo...</option>
</select>
</td>
</tr>
</table>
</center>
</body>
</html>
Bueno aqui les dejo el codigo que he hecho y solo me carga hasta el select dos pero no el tercero.
Agradeceria alguna ayuda o comentario y quedo a vuestra disposicion.
ahi va el codigo.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?php
function generaTipo()
{
$coneccion=mysql_connect("localhost", "usuario", "211176") or die(mysql_error());
mysql_select_db("solares", $coneccion) or die(mysql_error());
$consulta=mysql_query("Select * from busquedasuelo group by tipo");
mysql_close($coneccion);
// Voy imprimiendo el primer select compuesto por los paises
echo "<select class='combo' id='select_0' name='paises' onChange='cargaContenido()'>";
echo "<option value='0'>Selecciona tipo de suelo</option>";
while($registro=mysql_fetch_row($consulta))
{
echo "<option value='".$registro[1]."'>".$registro[3]."</option>";
}
echo "</select>";
}
?>
<html>
<head>
<style type="text/css">
.punteado
{
border-style:dotted;
border-color:#000000;
background-color:#EAEAEA;
font-family:Verdana;
font-size:10px;
text-align:center;
}
.combo
{
font-family:Verdana;
font-size:10px;
border-color:#CCCCCC;
}
</style>
<script language="javascript" type="text/javascript">
function nuevoAjax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}
function cargaContenido()
{
var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
if(valor==0)
{
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo todo por defecto
combo=document.getElementById("select_1");
combo.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Pais...";
combo.appendChild(nuevaOpcion); combo.disabled=true;
}
else
{
ajax=nuevoAjax();
ajax.open("GET", "dependientes.php?seleccionado="+valor, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando"
combo=document.getElementById("select_1");
combo.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
combo.appendChild(nuevaOpcion); combo.disabled=true;
}
if (ajax.readyState==4)
{
document.getElementById("fila_2").innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}
</script>
<script language="javascript" type="text/javascript">
function nuevoAjax1()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}
function new()
{
var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
var elemento;
var valor1=document.getElementById("select_1").options[document.getElementById("select_1").selectedIndex].text;
var elemento;
if(valor!=0)
{
ajax=nuevoAjax1();
// Envio al servidor el valor seleccionado y el combo al cual se le deben poner los datos
ajax.open("GET", "dependientes1.php?selectvalue0="+valor+"&selecttext1="+valor1, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Elige" y pongo una que dice "Cargando"
elemento=document.getElementById("select_2");
elemento.length=0;
var opcionCargando=document.createElement("option"); opcionCargando.value=0; opcionCargando.innerHTML="Cargando...";
elemento.appendChild(opcionCargando); elemento.disabled=true;
}
if (ajax.readyState==4)
{
// Coloco en la fila contenedora los datos que recivo del servidor
document.getElementById("fila_3").innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo</title>
</head>
<body>
<center>
<table border="1" width="400" style="border-style:none;">
<tr>
<td id="fila_1" width="50%" class="punteado"><?php generaTipo(); ?></td>
<td id="fila_2" width="50%" class="punteado">
<select class="combo" disabled="disabled" id="select_1" name="estados">
<option id="valor_defecto" value="0">Selecciona provincia...</option>
</select>
</td>
<td id="fila_3" width="50%" class="punteado">
<select class="combo" disabled="disabled" id="select_2" name="pueblos">
<option id="valor_defecto" value="0">Selecciona pueblo...</option>
</select>
</td>
</tr>
</table>
</center>
</body>
</html>
Valora esta pregunta


0