Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Desplegables dinámicos

Estas en el tema de Desplegables dinámicos en el foro de Frameworks JS en Foros del Web. Hola, tengo dos desplegables uno "Cursos" y otro "Alumnos" cargados desde una base de datos. Me gustaría saber como puedo hacer para que en función ...
  #1 (permalink)  
Antiguo 25/04/2008, 01:08
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Desplegables dinámicos

Hola, tengo dos desplegables uno "Cursos" y otro "Alumnos" cargados desde una base de datos.
Me gustaría saber como puedo hacer para que en función del curso que se seleccione se carguen los alumnos inscritos a él de la base de datos, en el desplegable alumnos. Gracias.
  #2 (permalink)  
Antiguo 25/04/2008, 04:57
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Desplegables dinámicos

Hola,

La solución a tu problema se llama AJAX. Contesté a un post poniendo un ejemplo de lo que me pides. Mira a ver si te sive y sino pues lo comentas.
  #3 (permalink)  
Antiguo 28/04/2008, 01:34
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Desplegables dinámicos

Estoy analizandolo, pero no lo entiendo muy bien. ¿Qué es division?¿Y para que utilizo la función cuando onreadystatechange y ajax.send("texto1="+variable1+"&texto2="+variable2 );?.

Podrías explicarme esto o ponerme un ejemplo algo más sencillo.
Gracias por la ayuda.
  #4 (permalink)  
Antiguo 28/04/2008, 02:49
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Desplegables dinámicos

Hola,

Pues a ver:

Cita:
¿Qué es division?
Es el tag <div>

Cita:
¿Y para que utilizo la función cuando onreadystatechange y ajax.send("texto1="+variable1+"&texto2="+variable2 );?
Sobre el onreadystatechange, el en otro post puse esto:

Cita:
Otra cosa importante es el ajax.onreadystatechange, al que le asignas una función para que se ejecute en cuanto cambie. Puedes controlar varios estados del envio y recepción, pero cuando se cumple if (ajax.readyState==4) es cuando el envio y la recepción ya han finalizado.
Creo que está bastante claro, pero bueno. Eso es para controlar en que estado se encuentra tu consulta. El 4 es cuando ya ha finalizado, y es la que la mayoría de las veces interesa. Según para que cosas interesan otros estados, pero en este no.

El ajax.send("texto1="+variable1+"&texto2="+variable2 ); va ligado al ajax.open("POST", "crearPoblacion.php",true);. En el ajax.open, le digo a que documento mandaré los datos y como. En este caso los mando a crearPoblación.php y el métyodo es el POST. Si lo prefieres por GET pues pones GET en lugar de POST.
Dicho esto, en el ajax.send(); lo que hago es darle nombre a las variables y asignarles un valor, para que cuando vayas a consultarlas en tu PHP sepas cual es cada una. ajax.send("texto1="+variable1+"&texto2="+variable2 ); fué un ejemplo para aquel post, pero podría haber puesto cualquier otra cosa:

seleccion1 = document.getElementById("provincia").value
seleccion2 = document.getElementById("profesion").value
ajax.send("provincia="+seleccion1+"&profesion="+se leccion2 );

Te he contestado tus dudas???
  #5 (permalink)  
Antiguo 28/04/2008, 03:32
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Desplegables dinámicos

Movido al foro de AJAX desde JavaScript.

Saludos,
  #6 (permalink)  
Antiguo 28/04/2008, 03:49
 
Fecha de Ingreso: abril-2008
Mensajes: 34
Antigüedad: 16 años
Puntos: 0
Re: Desplegables dinámicos

Gracias por la aclaración, lo he entendido pero no consigo hacerlo funcionar. Este es el código que tengo. Perdón por las molestias, no soy muy ducho en la materia.


<select name="curs" id="curs" onchange="<script language="JavaScript"> pasacurso();</script>">
<?php
$consulta= "Select nomcurs from cursos";
$cursos=mysql_query($consulta) or die ("Error al consultar cursos");
if(mysql_num_rows($cursos>0)) {
$row=mysql_fetch_array($cursos);
}
echo "<option value=''>Selecciona</option>";
while ($row=mysql_fetch_array($cursos)) {
echo '<option value='.$row["nomcurs"];
echo ' >';
echo $row["nomcurs"];
echo'</option>';
} ?>
</select>
<span class="Estilo5"><br />
Alumne</span>
<select name="Alumne" id="Alumne">
<?php
$curs= $_SESSION["curs"];
echo $curs;
$consulta= "Select nom from alumnos where curs='".$curs."'";
$alumnes=mysql_query($consulta) or die ("Error al consultar alumnes");
if(mysql_num_rows($alumnes>0)) {
$row2=mysql_fetch_array($alumnes);
}
echo "<option value=''>Selecciona</option>";
while ($row2=mysql_fetch_array($alumnes)) {
echo '<option value='.$row2["nom"];
echo ' >';
echo $row2["nom"];
echo'</option>';
} ?>
</select>

<script language="JavaScript"> function objetoAjax()
{
var xmlhttp=false;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined')
{
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}


function pasacurso()
{
//obtener valores a enviar

variable1 = menu.document.getElementById("curso").value;

//instanciamos el objetoAjax
ajax=objetoAjax();

ajax.open("POST", "secrevirtu-profes.php",true);

ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
division = menu.document.getElementById("form1");
division.innerHTML = ajax.responseText;
}
}

//esto no se que es
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//envio los valores
ajax.send("curs="+variable1);
}
</script>
  #7 (permalink)  
Antiguo 28/04/2008, 08:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Desplegables dinámicos

Hola Ziyad,

Te recomiendo que leas las FAQs del foro, hay ejemplos de como hacer desplegables o selects dinámicos y dependientes.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.