• Domingo 22 de Diciembre de 2024, 21:53

Autor Tema:  Listas Dependientes Con Php Y Mysql  (Leído 8553 veces)

Estefania

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Listas Dependientes Con Php Y Mysql
« en: Lunes 11 de Octubre de 2004, 23:38 »
0
Hola: Les escribo este mensaje para solicitarles me puedan ayudar.
Estoy tratando de realizar listas dependientes con PHP Y MySql.
Lo que quiero hacer es que en base a la selección de un elemento de la primera lista se carguen los elementos de una segunda. Pero esto lo puedo hacer, según he visto, solo con JavaScript.
Cómo puedo combinar javascript con php y Mysql?
El código que utilice fue el siguiente (que por cierto no funciona):

echo "<script language='JavaScript'>";
echo "function cambiarprofesor(){";
echo "var materia";
$materia = "form.materia[form.materia.selectedIndex].value";
echo $materia;
if($materia != 0){
$sql = "select en_materia_profesor.*,  en_carrera.*, en_materia.*
          from en_materia_profesor, en_carrera, en_materia
  WHERE en_materia.CodCarrera like '%".$HTTP_GET_VARS["carrera"]."%' AND
       en_carrera.CodCarrera = en_materia.CodCarrera AND
      en_materia.CodMateria like '%$materia%' AND
  en_materia_profesor.CodMateria = en_materia.CodMateria AND
  en_materia_profesor.CodCarrera = en_carrera.CodCarrera";

echo $sql;
$resultados = mysql_query($sql);
            
$num_resultado = mysql_num_rows($resultados);
   
$row2 = mysql_fetch_array($resultados);
               
if($num_resultado != 0){
echo "<select name='Profesor'>";
echo "<option>...";
do{
$codprof = $row["CodProfesor"];
$nombrep = $row["PNombre"];
echo "<option value='$codprof'> $nombrep";
}while($row2 = mysql_fetch_array($resultados));
echo "</select>";
}
}
echo "}";
echo "</script>";

Espero puedan ayudarme. Desde ya muchas gracias.

Estefanía  :o

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Listas Dependientes Con Php Y Mysql
« Respuesta #1 en: Martes 12 de Octubre de 2004, 09:22 »
0
Hola Estefania:

Aqui tienes un poco de información de lo que solicitas:

Un ejemplo sería el siguiente, siendo el primer Select, para el Pais, y el segundo select para la ciudad.


Código: Text
  1.  
  2.  
  3. &#60;form name=&#34;f1&#34;&#62;
  4. &#60;select name=pais onchange=&#34;cambia_provincia()&#34;&#62;
  5. &#60;option value=&#34;0&#34; selected&#62;Seleccione...
  6. &#60;option value=&#34;1&#34;&#62;España
  7. &#60;option value=&#34;2&#34;&#62;Argentina
  8. &#60;option value=&#34;3&#34;&#62;Colombia
  9. &#60;option value=&#34;4&#34;&#62;Francia
  10. &#60;/select&#62;
  11.  
  12. &#60;select name=provincia&#62;
  13. &#60;option value=&#34;-&#34;&#62;-
  14. &#60;/select&#62;
  15. &#60;/form&#62;
  16.  
  17.  
  18.  

Hasta aqui hemos creado el primer Select


Código: Text
  1.  
  2. var provincias_1=new Array(&#34;-&#34;,&#34;Andalucía&#34;,&#34;Asturias&#34;,&#34;Baleares&#34;,&#34;Canarias&#34;,&#34;Castilla y León&#34;,&#34;Castilla-La Mancha&#34;,&#34;...&#34;)
  3. var provincias_2=new Array(&#34;-&#34;,&#34;Salta&#34;,&#34;San Juan&#34;,&#34;San Luis&#34;,&#34;La Rioja&#34;,&#34;La Pampa&#34;,&#34;...&#34;)
  4. var provincias_3=new Array(&#34;-&#34;,&#34;Cali&#34;,&#34;Santamarta&#34;,&#34;Medellin&#34;,&#34;Cartagena&#34;,&#34;...&#34;)
  5. var provincias_4=new Array(&#34;-&#34;,&#34;Aisne&#34;,&#34;Creuse&#34;,&#34;Dordogne&#34;,&#34;Essonne&#34;,&#34;Gironde &#34;,&#34;...&#34;)
  6.  
  7.  
  8.  

Con esto creamos los arrays del segundo select


Código: Text
  1.  
  2.  
  3. function cambia_provincia(){
  4.    var pais
  5.    pais = document.f1.pais[document.f1.pais.selectedIndex].value
  6.    if (pais != 0) {
  7.      mis_provincias=eval(&#34;provincias_&#34; + pais)
  8.       num_provincias = mis_provincias.length
  9.       document.f1.provincia.length = num_provincias
  10.        for(i=0;i&#60;num_provincias;i++){
  11.          document.f1.provincia.options[i].value=mis_provincias[i]
  12.          document.f1.provincia.options[i].text=mis_provincias[i]
  13.       }
  14.    }else{
  15.       document.f1.provincia.length = 1
  16.       document.f1.provincia.options[0].value = &#34;-&#34;
  17.       document.f1.provincia.options[0].text = &#34;-&#34;
  18.    }
  19.    document.f1.provincia.options[0].selected = true
  20. }
  21.  
  22.  
  23.  

Y con esto decimos que depende de lo que hayamos puesto en el primer select, tiene que aparecer en el segundo...

Esto es un ejemplo "simple" de como hacerlo. Si te das cuenta, los arrays los he introducido manualmente. Lo que tienes que hacer es una consulta a tu BD


Código: Text
  1.  
  2.  
  3. &#60;?php
  4. while(&#036;row = mysql_fetch_array(&#036;result)) {
  5. echo &#34;&#60;option value=&#34;.&#036;row[&#34;valor&#34;].&#34;&#62;&#34;.&#036;row[&#34;enunciado&#34;].&#34;&#60;/option&#62;&#34;; }
  6. ?&#62;
  7.  
  8.  
  9.  

Despues si no me equivoco, solo nos queda pasar la consulta de php a JavaScript
Para esto hay que "introducir" JavaScript dentro de PHP.



Código: Text
  1.  
  2. &#60;?php
  3. &#036;javascript = &#34;&#60;script language=&#092;&#34;JavaScript&#092;&#34;&#62;&#092;n&#34;;
  4. &#036;javascript .= &#34;   var array_js = new Array();&#092;n&#34;;
  5. //aqui nos conectariamos a la base de datos,,, a tu gusto!!!!! Yo uso algo asi:
  6. include(&#34;conexion_bd.php&#34;);
  7. &#036;link=Conexion();
  8. &#036;valores=mysql_query(&#34;select * from columna&#34;,&#036;link) or die (mysql_error());
  9.  
  10. &#036;contador = 0;
  11. while (&#036;elem = mysql_fetch_array(&#036;valores)) {
  12.  &#036;javascript .=&#34;columna[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['columna2'].&#34;;&#092;n&#34;;  
  13.  &#036;contador++;                                  }
  14. &#036;javascript .= &#34;&#60;/script&#62;&#092;n&#34;;
  15. echo &#036;javascript;
  16. ?&#62;
  17.  
  18.  
  19.  
  20.  

(Nota: Espero no haberme equivocado en nada!!!)


Bueno,,, creo que con esto tendrás una idea de como yo lo haria. (tambien te tengo que decir que soy amateur en esto de la programacion).

Por si no te ha quedado algo claro, aqui te pongo este link (mucho mas profesional que mi explicacion!!!  ;) .

http://www.desarrolloweb.com/articulos/1281.php


Espero que te sirva y que sea eso lo que necesites!!!!  Si tienes algun problema,,, por aqui estamos...

Un saludo

     Slimer
-----------------------------------------------------
Quien desea aprender, pronto llegará a saber
-----------------------------------------------------

Estefania

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Listas Dependientes Con Php Y Mysql
« Respuesta #2 en: Jueves 14 de Octubre de 2004, 17:37 »
0
Hola:
Slimer te escribo nuevamente, primero para agradecer tu ayuda y segundo para seguir preguntando sobre mis dudas.
Aplique el código como me indicaste pero si bien no me da ningún error no hace  lo que deseo, o sea, precisamente no me muestra los elementos del segundo select.
A continuación esta el código que estoy utilizando.
Te agradeceré mucho si me puedes ayudar a que funcione.
Saludos.
Estefanía. :hola:

$result = mysql_query($query);
$num_results = mysql_num_rows($result);
$row = mysql_fetch_array($result);

if($num_results != 0){
echo "<select name='Materia' onChange=\'cambiarprofesor()'\>";
echo "<option>...";
do{
$codmat = $row["CodMateria"];
$nombre = $row["MNombre"];
echo "<option value='$codmat'> $nombre";
}while($row = mysql_fetch_array($result));
echo "</select>";
}

echo "<select name='Profesor'>";
echo "<option value="-">-";
echo "</select>";

<?php
$javascript .= "<script language=\"JavaScript\">\n";
$javascript .= "   var array_js = new Array();\n";
include("incluir.php");
$valores=mysql_query("select * from en_profesor") or die (mysql_error());
$contador = 0;
while ($elem = mysql_fetch_array($valores)) {
$javascript .="profesorN[".$contador."] = ".$elem['NProfesor'].";\n";  
$javascript .="profesorC[".$contador."] = ".$elem['CodProfesor'].";\n";  
$contador++;                            
}
$javascript .= "function cambiarprofesor(){\n";
$javascript .= "if (form.Materia.selectedIndex != 0)\n";
$javascript .= "{";
$javascript .= "num_profesores = profesor.length \n";
$javascript .= "form.Profesor.length = num_profesores \n";
$javascript .= "for(i=0;i<num_profesores;i++) \n";
$javascript .= "{ \n";
$javascript .= "form.Profesor.options.value=profesorC[".$contador."]";
$javascript .= "form.Profesor.options.text=profesorN[".$contador."]";
$javascript .= "}else \n";
$javascript .= "{ \n";
$javascript .= "form.Profesor.length = 1 \n";
$javascript .= "form.Profesor.options[0].value = '-' \n";
$javascript .= "form.Profesor.options[0].text = '-' \n";
$javascript .= "}\n";
$javascript .= "form.Profesor.options[0].selected = true \n";
$javascript .= "} \n";
$javascript .= "</script>\n";
echo $javascript;
?>

JuliusRisi

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Listas Dependientes Con Php Y Mysql
« Respuesta #3 en: Jueves 3 de Febrero de 2005, 13:32 »
0
Estoy con el mismo problema y no consigo solución.

Lo unico que quiero conseguir es que desde una llamada a la base de datos me de una variable array que la entienda javascript, osea:

Que me de este codigo
Código: Text
  1. var provincias_1=new Array(&#34;-&#34;,&#34;Andalucía&#34;,&#34;Asturias&#34;,&#34;Baleares&#34;,&#34;Canarias&#34;,&#34;Castilla y León&#34;,&#34;Castilla-La Mancha&#34;,&#34;...&#34;)
  2.  
ya si poder usarlo como en el script mencionado.  :whistling: