• Viernes 8 de Noviembre de 2024, 14:48

Autor Tema:  Menus Desplegables Dinamicos  (Leído 5069 veces)

tuxie

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Menus Desplegables Dinamicos
« en: Miércoles 7 de Julio de 2004, 01:09 »
0
:huh: Hola a todos.

Tengo que hacer un formulario de registro de usuarios con ciertos datos y con 3 menus desplegables, uno de pais, otro de estado (o provincia) y otro de ciudad, en el cual si cambio el pais, me cambie el menu desplegable de estado y si elijo un estado de ese pais me cambie el menu desplegable a las ciudades correspondientes a dicho estado. debido a que se manejan todos los paises y es mucha información, guarde los nombres en una BD en mysql con las siguientes tablas y campos:

tabla pais:
campos: id_pais, nombre_pais

tabla estado:
campos: id_estado, id_pais, nombre_estado

tabla ciudad:
campos: id_ciudad, id_estado, nombre_ciudad

como hago esto mezclando php, mysql y javascript?

agradezco de antemano cualquier colaboracion que se me brinde para resolver este problema. :unsure:
el teclado puede llegar a ser mas poderoso que la espada

vichofeo

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #1 en: Lunes 16 de Agosto de 2004, 22:01 »
0
hola yp tambien tuve el mismo problema, alle dos soluciones en internet, al aplicarlas note que importa mucho la cantidad de datos que tendra cada combo box, y la segunda opcion, y eso lo malo que no tengo el URL de donde lo obtuve por eso de los virus en mi compu, consistente en manejar Iframe.
a continuacion te muestro lo que hice yo :rolleyes: solo que a diferencia tuya yo considere Departamento, Provincia y Localidad, por la geopolitica de mi pais
Código: Text
  1. <script language="javascript">
  2. <?php
  3.  
  4. /**************simulacion***************/
  5. $query="select * FROM provincia ";
  6. $result =$db->execute($query)
  7. //mysql_query ($query, $link);
  8.  
  9. ?>
  10. // FUNCION DE COMBO BOX COMBINADO
  11.  
  12. function sublist(inform, selecteditem)
  13. {
  14. inform.provincia.length = 0
  15.  
  16. <?php
  17. $count= 0;
  18. $y=0;
  19. while ($row=$result->fetchRow())
  20. //mysql_fetch_array($result))
  21. {
  22. ?>
  23.  
  24. x = <?=trim($y);?>;
  25.  
  26. prov = new Array();
  27. provincia_desc = "<?=$row['NOMBRE_PROVINCIA']; ?>";
  28. provincia_cod_index = "<?=$row['DEPARTAMENTO_ID']; ?>";
  29. provincia_cod = "<?=$row['PROVINCIA_ID']; ?>";
  30. prov[x,0] = provincia_desc;
  31. prov[x,1] = provincia_cod_index;
  32. prov[x,2] = provincia_cod;
  33. if (prov[x,1] == selecteditem) {
  34. var option<?=trim($count); ?> = new Option(prov[x,0], prov[x,2]);
  35. inform.provincia.options[inform.provincia.length]=option<?=trim($count)?>;
  36. }
  37. <?php
  38. $count = $count + 1;
  39. $y = $y + 1;
  40. }
  41. ?>
  42. }
  43. </SCRIPT>
  44.  
:blink: los combos en el html se llaman "DEPARTAMENTO, PROVINCIA y LOCALIDAD" en esa jerarquia
ENTONCES en el combo Departamento asegurate de obtener el ID del departamento (en este caso) y el nombre, es decir el <option value="ID_departamento">nombre departamento</option>
y para activar el contenido del combo PROVINCIA utiliza el evento onchange
en el select departamento llamando a la funcion hecha en java script
algo asi
Código: Text
  1. &#60;select size=&#34;1&#34; id=&#34;departamento&#34; name=&#34;departamento&#34; onChange = &#34;javascript:sublist(this.form, departamento.value);&#34;&#62;
  2.                   &#60;option&#62;seleccione un Dpto&#60;/option&#62;
  3. &#60;?php
  4.  &#036;query2=&#34;select * from departamento&#34;;
  5.  &#036;result2=&#036;db-&#62;Execute(&#036;query2);
  6.  //mysql_query(&#036;query2, &#036;link);
  7.  
  8. while (&#036;raw=&#036;result2-&#62;fetchRow())
  9. //mysql_fetch_array(&#036;result2))
  10. {
  11. ?&#62;
  12. &#60;option value=&#34;&#60;?=&#036;raw['DEPARTAMENTO_ID'];?&#62;&#34;&#62; &#60;?=&#036;raw['NOMBRE_DEPARTAMENTO']?&#62;&#60;/option&#62;
  13.  
  14.  
  15. &#60;?php
  16. }
  17.  ?&#62;
  18.  
  19. &#60;/SELECT&#62;
  20.  
  21.  
y el combo de provincia quedaria algo asi
Código: Text
  1.  &#60;SELECT id=&#34;provincia&#34; name=&#34;provincia&#34; size=&#34;1&#34; &#62;
  2. &#60;Option  value=&#34;vacio&#34;&#62; provincia&#60;/option&#62;
  3. &#60;option&#62; &#60;/option&#62;
  4.       &#60;option&#62; &#60;/option&#62;
  5.       &#60;option&#62; &#60;/option&#62;
  6.       &#60;option&#62; &#60;/option&#62;
  7. &#60;/SELECT&#62;
  8.  
para localidad haces lo mismo solo que contruyes la funcion con la misma carcteristica que para provincia y lo llamas desde el combo provincia que seria la segunda en la jerarquia
 :unsure: esta es una muy buena opcion, pero el incoveniente que yo tenia es que mis localidades pasaban los 1000 registros por provincia, y no es que seamos un pais grande solo que aqui, todos manejan para su control, sus propios criterios de localidad,  :blink: esto generaba una pagina de de aproximadamente 2 M, eso, impedia el dinamismo del javascript asi que alle otra opcion con iframes
 :lol: lo malo de todo esto es que no tengo los link de los creadores de esta idea, la anterior solo es una adaptacion de de asp a php que ya lo realizaron
y lo del iframe solo tengo el comprimido y no su direccion del creador
en fin espero que te sirva

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #2 en: Sábado 21 de Agosto de 2004, 22:49 »
0
Hola:

Hecha un vistazo al foro de JavaScript porque por allí tambien tienes mas opciones de solucion a ese mismo problema.

Un saludo

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

tuxie

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #3 en: Lunes 13 de Septiembre de 2004, 19:51 »
0
muchisimas gracias por sus sugerencias. ya resoví el problema espero alguna vez poder devolverles el favor.   :hola:  Bytes!
el teclado puede llegar a ser mas poderoso que la espada

JuliusRisi

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #4 en: Jueves 3 de Febrero de 2005, 21:16 »
0
despues de adaptar el código a mis tablas y a unos scripts que he añadido me surge un problema.

Escribo el código y me explico despues:
Código: Text
  1. &#60;script language=JavaScript&#62;
  2. &#60;!-- Begin
  3. oldvalue = &#34;&#34;;
  4. function passText(passedvalue) {
  5.   if (passedvalue != &#34;&#34;) {
  6.     var totalvalue = passedvalue+&#34;&#092;n&#34;+oldvalue;
  7.     document.form.zona.value = totalvalue;
  8.     oldvalue = document.form.zona.value;
  9.   }
  10. }
  11. function passText2(passedvalue) {
  12.   if (passedvalue != &#34;&#34;) {
  13.     var totalvalue = passedvalue+&#34;&#092;n&#34;+oldvalue;
  14.     document.form.cimas.value = totalvalue;
  15.     oldvalue = document.form.cimas.value;
  16.   }
  17. }
  18. //  End --&#62;
  19. &#60;/SCRIPT&#62;
  20. &#60;script language=&#34;javascript&#34;&#62;
  21. &#60;?php
  22. &#036;sql = &#34;SELECT ZonaN, Cima, ZonaNombre FROM trackcatalogo &#34;;
  23.       &#036;result = &#036;db-&#62;sql_query(&#036;sql);
  24. ?&#62;
  25. // FUNCION DE COMBO BOX COMBINADO
  26. function sublist(form, selecteditem)
  27. {
  28. form.cimas1.length = 0
  29. &#60;?php
  30. &#036;count= 0;
  31. &#036;y=0;
  32. while (&#036;row = &#036;db-&#62;sql_fetchrow(&#036;result))
  33. {
  34. ?&#62;
  35. x = &#60;?=trim(&#036;y);?&#62;;
  36. prov = new Array();
  37. cimas_desc = &#34;&#60;?=&#036;row['Cima']; ?&#62;&#34;;
  38. cimas_cod_index = &#34;&#60;?=&#036;row['ZonaN']; ?&#62;&#34;;
  39. cimas_cod = &#34;&#60;?=&#036;row['Cima']; ?&#62;&#34;;
  40. prov[x,0] = cimas_desc;
  41. prov[x,1] = cimas_cod_index;
  42. prov[x,2] = cimas_cod;
  43. if (prov[x,1] == selecteditem) {
  44. var option&#60;?=trim(&#036;count); ?&#62; = new Option(prov[x,0], prov[x,2]);
  45. form.cimas1.options[form.cimas1.length]=option&#60;?=trim(&#036;count)?&#62;;
  46. }
  47. &#60;?php
  48. &#036;count = &#036;count + 1;
  49. &#036;y = &#036;y + 1;
  50. }
  51. ?&#62;
  52.  
  53. if (selecteditem == 'Otras') {
  54. newZona = &#34;&#34;;
  55.  
  56. while (newZona == &#34;&#34;){
  57. newZona=prompt (&#34;Por favor indica el nombre de la zona.&#34;, &#34;&#34;);
  58. }
  59.  
  60. if (newZona != null) {
  61. passText(newZona)
  62.    }
  63. }
  64. }
  65. &#60;/SCRIPT&#62;
  66. &#60;select class=campo size=&#34;1&#34; id=&#34;zonas1&#34; name=&#34;zonas1&#34; onChange = &#34;javascript:sublist(this.form, zonas1.value);&#34;&#62;
  67. &#60;option selected&#62;Selecciona Zona&#60;/option&#62;
  68. &#60;option value=&#34;Otras&#34;&#62;OTRAS ZONAS&#60;/option&#62;
  69. &#60;?php
  70. &#036;query2=&#34;select ZonaN, ZonaNombre from trackzonas order by ZonaNombre &#34;;
  71. &#036;result2 = &#036;db-&#62;sql_query(&#036;query2);
  72. while (&#036;raw = &#036;db-&#62;sql_fetchrow(&#036;result2))
  73. {
  74. ?&#62;
  75. &#60;option value=&#34;&#60;?=&#036;raw['ZonaN'] ?&#62;&#34;&#62; &#60;?=&#036;raw['ZonaNombre']?&#62;&#60;/option&#62;
  76. &#60;?php
  77. }
  78. ?&#62;
  79. &#60;/SELECT&#62;
  80. &#60;br&#62;
  81. &#60;br&#62;&#60;FONT face=&#34;Arial, Helvetica, Sans Serif&#34; size=2&#62;Zona a añadir:&#60;/FONT&#62;&#60;BR&#62;
  82. &#60;TEXTAREA class=text name=zona rows=5 cols=20&#62;&#60;/TEXTAREA&#62; &#60;br&#62;
  83.  
  84. &#60;SELECT class=campo id=&#34;cimas1&#34; name=&#34;cimas1&#34; size=&#34;1&#34; &#62;
  85. &#60;Option  value=&#34;vacio&#34;&#62;Cumbres de la Zona&#60;/option&#62;
  86. &#60;option value=&#34;otras&#34;&#62;OTRAS CIMAS&#60;/option&#62;
  87. &#60;/SELECT&#62;&#60;br&#62;
  88. &#60;INPUT class=boton onclick=passText2(this.form.cimas1.options[this.form.cimas1.selectedIndex].value); type=button value=&#34;Añadir a la lista&#34;&#62;
  89.  
  90. &#60;TEXTAREA class=text name=cimas rows=5 cols=20&#62;&#60;/TEXTAREA&#62; &#60;br&#62;
  91.  
  92.  

Bueno, con este IF . . .
Citar
if (selecteditem == 'Otras') {
newZona = "";

while (newZona == ""){
newZona=prompt ("Por favor indica el nombre de la zona.", "");
}

if (newZona != null) {
passText(newZona)
   }
del primer combo me sale un casillero donde meter un nuevo dato en caso de que no esté en la lista que presento.
El problema radica en que si eligo de la lista una zona, en el 2º combo me sale el listado de la base de datos dependiendo que zona haya eligido, pero . . . . ¿como consigo meter un OPTION más con el VALOR 'otras'?

 :whistling:

Gracias de antemano.

Gaviotica

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #5 en: Martes 8 de Marzo de 2005, 15:48 »
0
Hola Buenas a todos soy nueva en este foro y en el tema de php y mysql y javascript. Mi problema es que necesito hacer lo mismo q TUXIE, asi que esto en una llamada de emergencia a TUXIE o a cualquiera que pueda ayudarme mandandome el codigo.
Es lo mismo de Paises, Estados y provincias con php,mysql y javascript.
yo logre hacerlo con arrays pero necesito hacerlo con tablas.
Por favor necesito ayuda desesperada.
Lei el codigo que adjuntaron , pero la verdad soy nuva en esto y no entendi mucho, por favor ayudenme :(

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #6 en: Jueves 10 de Marzo de 2005, 08:17 »
0
Hola JuliusRisi:

Puedes incluirlo en la BD el valor "otras"? Eso sería una opcion, y otra que se me ocurre seria, justo antes o despues de la consulta a la BD, ponerlo en codigo Html con lo típico... "<option>...... </option>" (P.D...perdon por la tardanza...)

Bienvenida Gaviotica:

Exactamente donde tienes problemas en el código?. Te comento lo mismo que anteriormente dije... Este mismo problema está comentado en el foro de JavaScript, que combinado con lo ya dicho aqui, no creo que hayan complicaciones... pero si aun así las hay, comenta donde necesitas ayuda...

Un saludo    :hola:

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

Gaviotica

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #7 en: Jueves 10 de Marzo de 2005, 15:23 »
0
Cita de: "Slimer"
Hola JuliusRisi:

Puedes incluirlo en la BD el valor "otras"? Eso sería una opcion, y otra que se me ocurre seria, justo antes o despues de la consulta a la BD, ponerlo en codigo Html con lo típico... "<option>...... </option>" (P.D...perdon por la tardanza...)

Bienvenida Gaviotica:

Exactamente donde tienes problemas en el código?. Te comento lo mismo que anteriormente dije... Este mismo problema está comentado en el foro de JavaScript, que combinado con lo ya dicho aqui, no creo que hayan complicaciones... pero si aun así las hay, comenta donde necesitas ayuda...

Un saludo    :hola:

     Slimer
Buenas muchas gracias por responder, mi pregunta es la siguiente: Este es el código de Pais y estados que tengo, lo obtuve de varias páginas. El da perfectamente, el problema es que yo quiero llamar a los paises y a los estados desde una base de datos  (estoy trabajando con Mysql) y la verdad no se como hacerlo, todos los foros me han respondido con términos que no entiendo porque soy novata en esto.
Yo defini una base de datos llamada PAISES y dos tablas paises y estados
paises: id_pais(key) pais y estados:id_estado(key) estado y id_pais.

Pero no se como hacerlo, realmente el código de arriba no lo entiendo mucho. Se como conectarme en una base.

Por favor ayudenme pero de una manera concisa, recuerden que soy novatisima. Pero necesito hacer esto.

Mi urgencia por hacerlo con una base de datos radica en que yo hice un diagrama entidad-relación que deberia respetar y necesito crear esas tablas.
Corrijanme si estoy equivocada de todas formas. Gracias de antemano.


<html>
   <head>
<script>
var estado = new Array
estado[1] = ["elige estado...","Amazonas","Anzoategui","Apure","Aragua","Barinas","Bolivar","Carabobo","Cojedes","Delta Amacuro","Dependencias Federales","Distrito Federal","Estado Nueva Esparta","Falcon","Guarico","Lara","Merida","Miranda","Monagas","Portuguesa","Sucre","Tachira","Trujillo","Yaracuy","Zulia"]
estado[2] = ["elige estado...","Amazonas","Antioquia","Arauca","Atlántico","Bogotá"]
estado[3] = ["elige estado...","Alabama","Colorado","Texas"]
function ponPaises(formu)
{   var elConti = formu.Pais.selectedIndex
   formu.Estado.length = estado[elConti].length
   for (i=0; i<formu.Estado.length; i++)
   {   formu.Estado.options.text = estado[elConti]
   }
}
</script>
   </head>
   <body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" alink="DarkOrange" link="DarkOliveGreen" vlink="#336600">
      <table width="564" height="1346" border="0" align="center" cellpadding="0" cellspacing="0">
         <tr>
            <td width="554" height="925" align="left" valign="top" bgcolor="#FFFFFF"><p><span class="Estilo33"><span class="Estilo28">    <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
                  <tr>
                     <td width="120"><form name="form1" method="post" action="pruebaplantilla31.php">
  <table width="267" border="1" align="center">
   <tr>
      <td width="51"><div align="right" class="Estilo5"><strong>País:</strong></div></td>
      <td width="217">
        <label for="Country" >
        <select name="Pais" onChange="ponPaises(this.form)">
          <option selected>elige pais...</option>
          <option>Venezuela</option>
          <option>Colombia</option>
          <option>Estados Unidos</option>
       
        </select>
      </label></td>
     </tr>
   <tr>
      <td><div align="right" class="Estilo5"><strong>Estado:</strong></div></td>
      <td><label for="Region" >
        <select name="Estado">
          <option></option>
        </select>
      </label></td>
     </tr>
   </table>
     </form></p>
    <form name="form2" method="post" action="">
    </form>                       
     </td>   </tr> </table></table>
</body>
</html>

Slimer

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #8 en: Domingo 13 de Marzo de 2005, 09:39 »
0
Hola Gaviotica:

Por lo que entiendo, tu quieres conectarte a una BD mysql para que en un Select te salga lo que contiene la BD.

Soy de los que piensa que para aprender necesitas "pistas" u "orientaciones" y que no te lo tienen que dar hecho, por lo que te lanzo lo siguiente.

(Ya estas conectada a tu BD mysql por lo que no te digo mas o menos como...)

Dentro del Select, en vez de enumerar las opciones, prueba con algo como esto:

Código: Text
  1.  
  2.  
  3. &#60;select name=&#34;pais&#34; id=&#34;selectPais&#34;&#62;
  4. &#60;option&#62; &#60;/option&#62; VACIO
  5. &#60;?
  6.      mysql_data_seek (&#036;result,0); // Con esto nos ponemos cada vez que entremos en la primera posición de la BD
  7.      while (&#036;row = mysql_fetch_array(&#036;result)) {
  8.           echo &#34;&#60;opcion value=&#34;.&#036;row[&#34;columna1&#34;].&#34;&#62;&#34;.&#036;row[&#34;valor1&#34;].&#34;&#60;/opcion&#62;&#34;; }
  9. ?&#62;
  10. &#60;/select&#62;
  11.  
  12.  
  13.  

De esta forma tienes resuelta la conexión en PHP a una BD.

Aquí hay algunos ejemplos (algunos sin depurar) pero que te pueden dar ideas (todos estos estan en el lado de JScript)

Código: Text
  1.  
  2. &#60;html&#62;
  3. &#60;head&#62;
  4. &#60;title&#62;Consulta de BD con JavaScript y PHP&#60;/title&#62;
  5. &#60;head&#62;
  6. &#60;script language=&#34;JavaScript&#34;&#62;
  7. function funciona() {
  8. numero = porcentajes.length;
  9. document.formulario.select1.length = numero;
  10.  
  11. for (i=0; i&#60;numero; i++){
  12.  document.formulario.select1.options[i].value = valor_por[i];
  13.  document.formulario.select1.options[i].text = porcentajes[i];
  14. }}&#60;/script&#62;
  15.  
  16. &#60;script language=&#34;JavaScript&#34;&#62;
  17. function tessto()                                               {    
  18. var valoracion = parseInt(document.formulario.select1[document.formulario.select1.selectedIndex].value);
  19. var restado = (100 - valoracion);
  20.   if ( valoracion != 100)                                           {
  21.   document.formulario.select2.length = numero;
  22.   for (i=0; i&#60;numero; i++){
  23. if (valor_por[i] &#60;= restado){
  24.  document.formulario.select2.options[i].value = valor_por[i];
  25.  document.formulario.select2.options[i].text = porcentajes[i];
  26. }}}}                                                        
  27. &#60;/script&#62;
  28.  
  29. &#60;/head&#62;
  30. &#60;body onLoad=&#34;funciona()&#34;&#62;
  31. &#60;?php
  32. &#036;javascript = &#34;&#60;script language=&#092;&#34;JavaScript&#092;&#34;&#62;&#092;n&#34;; //activamos Java dentro de PHP
  33. &#036;javascript .= &#34;   var porcentajes = new Array();&#092;n&#34;;  //Creamos el Array vacio
  34. &#036;javascript .= &#34; var valor_por = new Array();&#092;n&#34;;  //Creamos otro Array vacio
  35. include(&#34;conect.php&#34;);  //Incluimos un fichero
  36. &#036;link=Conectarse(); // Nos conectamos a la BD
  37. &#036;porcentajes=mysql_query(&#34;select * from porcentaje&#34;,&#036;link) or die (mysql_error()); // hacemos consulta y metemos valores en &#036;porc
  38.  
  39. &#036;contador = 0;
  40. while (&#036;elem = mysql_fetch_array(&#036;porcentajes)) {
  41.  &#036;javascript .=&#34;porcentajes[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['porcentaje_n'].&#34;;&#092;n&#34;; // asignamos valores al array. Estructura  Array[i] = valor
  42.  &#036;javascript .=&#34;valor_por[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['porcentaje_v'].&#34;;&#092;n&#34;;
  43.  &#036;contador++;                                  }
  44. &#036;javascript .= &#34;&#60;/script&#62;&#092;n&#34;;  //cerramos JavaScript
  45. echo &#036;javascript;
  46. ?&#62;
  47.  &#60;form name=&#34;formulario&#34;&#62;
  48.  &#60;select name=&#34;select1&#34; onchange= &#34;tessto()&#34;&#62;
  49.  &#60;!-- option value =&#34;-&#34;&#62;- !--&#62;
  50.  
  51.  &#60;/select&#62;
  52.  
  53.  &#60;select name=&#34;select2&#34;&#62;
  54.  &#60;/select&#62;
  55.  
  56.  &#60;select name=&#34;select3&#34;&#62;
  57.  &#60;/select&#62;
  58.  
  59.   &#60;select name=&#34;select4&#34;&#62;
  60.  &#60;/select&#62;
  61.  
  62.   &#60;select name=&#34;select5&#34;&#62;
  63.  &#60;/select&#62;
  64.  
  65.  &#60;input type=&#34;text&#34; name=&#34;texto&#34;&#62;
  66.  
  67.  &#60;/form&#62;
  68. &#60;/body&#62;
  69. &#60;/html&#62;
  70.  
  71.  
  72.  
  73.  


Citar
Tienes dos select (o tres o los que quieras), y quieres que depende de lo que elijas en la primera opcion (Pais en tu caso), en el segundo select ponga estado, o ciudad, (o lo que quieras,,, puedes encadenarlo a tu gusto...). Un ejemplo sería el siguiente, siendo el primer Select, para el Pais, y el segundo select para la ciudad.


CODE 

<form name="f1">
<select name=pais onchange="cambia_provincia()">
<option value="0" selected>Seleccione...
<option value="1">España
<option value="2">Argentina
<option value="3">Colombia
<option value="4">Francia
</select>

<select name=provincia>
<option value="-">-
</select>
</form>
 


Hasta aqui hemos creado el primer Select


CODE 

var provincias_1=new Array("-","Andalucía","Asturias","Baleares","Canarias","Castilla y León","Castilla-La Mancha","...")
var provincias_2=new Array("-","Salta","San Juan","San Luis","La Rioja","La Pampa","...")
var provincias_3=new Array("-","Cali","Santamarta","Medellin","Cartagena","...")
var provincias_4=new Array("-","Aisne","Creuse","Dordogne","Essonne","Gironde ","...")
 


Con esto creamos los arrays del segundo select


CODE 

function cambia_provincia(){
   var pais
   pais = document.f1.pais[document.f1.pais.selectedIndex].value
   if (pais != 0) {
     mis_provincias=eval("provincias_" + pais)
      num_provincias = mis_provincias.length
      document.f1.provincia.length = num_provincias
       for(i=0;i<num_provincias;i++){
         document.f1.provincia.options.value=mis_provincias
         document.f1.provincia.options.text=mis_provincias
      }
   }else{
      document.f1.provincia.length = 1
      document.f1.provincia.options[0].value = "-"
      document.f1.provincia.options[0].text = "-"
   }
   document.f1.provincia.options[0].selected = true
}
 


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


CODE 

<?php
while($row = mysql_fetch_array($result)) {
echo "<option value=".$row["valor"].">".$row["enunciado"]."</option>"; }
?>
 



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


CODE 

<?php
$javascript = "<script language=\"JavaScript\">\n";
$javascript .= "   var array_js = new Array();\n";
//aqui nos conectariamos a la base de datos,,, a tu gusto!!!!! Yo uso algo asi:
include("conexion_bd.php");
$link=Conexion();
$valores=mysql_query("select * from columna",$link) or die (mysql_error());

$contador = 0;
while ($elem = mysql_fetch_array($valores)) {
 $javascript .="columna[".$contador."] = ".$elem['columna2'].";\n";   
 $contador++;                                  }
$javascript .= "</script>\n";
echo $javascript;
?>
 




Aquí tienes varias ayudas... Ya me diras si te ayuda algo de esto...

Un saludo

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

Gaviotica

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #9 en: Lunes 14 de Marzo de 2005, 14:05 »
0
Cita de: "Slimer"
Hola Gaviotica:

Por lo que entiendo, tu quieres conectarte a una BD mysql para que en un Select te salga lo que contiene la BD.

Soy de los que piensa que para aprender necesitas "pistas" u "orientaciones" y que no te lo tienen que dar hecho, por lo que te lanzo lo siguiente.

(Ya estas conectada a tu BD mysql por lo que no te digo mas o menos como...)

Dentro del Select, en vez de enumerar las opciones, prueba con algo como esto:

Código: Text
  1.  
  2.  
  3. &#60;select name=&#34;pais&#34; id=&#34;selectPais&#34;&#62;
  4. &#60;option&#62; &#60;/option&#62; VACIO
  5. &#60;?
  6.      mysql_data_seek (&#036;result,0); // Con esto nos ponemos cada vez que entremos en la primera posición de la BD
  7.      while (&#036;row = mysql_fetch_array(&#036;result)) {
  8.           echo &#34;&#60;opcion value=&#34;.&#036;row[&#34;columna1&#34;].&#34;&#62;&#34;.&#036;row[&#34;valor1&#34;].&#34;&#60;/opcion&#62;&#34;; }
  9. ?&#62;
  10. &#60;/select&#62;
  11.  
  12.  
  13.  

De esta forma tienes resuelta la conexión en PHP a una BD.

Aquí hay algunos ejemplos (algunos sin depurar) pero que te pueden dar ideas (todos estos estan en el lado de JScript)

Código: Text
  1.  
  2. &#60;html&#62;
  3. &#60;head&#62;
  4. &#60;title&#62;Consulta de BD con JavaScript y PHP&#60;/title&#62;
  5. &#60;head&#62;
  6. &#60;script language=&#34;JavaScript&#34;&#62;
  7. function funciona() {
  8. numero = porcentajes.length;
  9. document.formulario.select1.length = numero;
  10.  
  11. for (i=0; i&#60;numero; i++){
  12.  document.formulario.select1.options[i].value = valor_por[i];
  13.  document.formulario.select1.options[i].text = porcentajes[i];
  14. }}&#60;/script&#62;
  15.  
  16. &#60;script language=&#34;JavaScript&#34;&#62;
  17. function tessto()                                               {    
  18. var valoracion = parseInt(document.formulario.select1[document.formulario.select1.selectedIndex].value);
  19. var restado = (100 - valoracion);
  20.   if ( valoracion != 100)                                           {
  21.   document.formulario.select2.length = numero;
  22.   for (i=0; i&#60;numero; i++){
  23. if (valor_por[i] &#60;= restado){
  24.  document.formulario.select2.options[i].value = valor_por[i];
  25.  document.formulario.select2.options[i].text = porcentajes[i];
  26. }}}}                                                        
  27. &#60;/script&#62;
  28.  
  29. &#60;/head&#62;
  30. &#60;body onLoad=&#34;funciona()&#34;&#62;
  31. &#60;?php
  32. &#036;javascript = &#34;&#60;script language=&#092;&#34;JavaScript&#092;&#34;&#62;&#092;n&#34;; //activamos Java dentro de PHP
  33. &#036;javascript .= &#34;   var porcentajes = new Array();&#092;n&#34;;  //Creamos el Array vacio
  34. &#036;javascript .= &#34; var valor_por = new Array();&#092;n&#34;;  //Creamos otro Array vacio
  35. include(&#34;conect.php&#34;);  //Incluimos un fichero
  36. &#036;link=Conectarse(); // Nos conectamos a la BD
  37. &#036;porcentajes=mysql_query(&#34;select * from porcentaje&#34;,&#036;link) or die (mysql_error()); // hacemos consulta y metemos valores en &#036;porc
  38.  
  39. &#036;contador = 0;
  40. while (&#036;elem = mysql_fetch_array(&#036;porcentajes)) {
  41.  &#036;javascript .=&#34;porcentajes[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['porcentaje_n'].&#34;;&#092;n&#34;; // asignamos valores al array. Estructura  Array[i] = valor
  42.  &#036;javascript .=&#34;valor_por[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['porcentaje_v'].&#34;;&#092;n&#34;;
  43.  &#036;contador++;                                  }
  44. &#036;javascript .= &#34;&#60;/script&#62;&#092;n&#34;;  //cerramos JavaScript
  45. echo &#036;javascript;
  46. ?&#62;
  47.  &#60;form name=&#34;formulario&#34;&#62;
  48.  &#60;select name=&#34;select1&#34; onchange= &#34;tessto()&#34;&#62;
  49.  &#60;!-- option value =&#34;-&#34;&#62;- !--&#62;
  50.  
  51.  &#60;/select&#62;
  52.  
  53.  &#60;select name=&#34;select2&#34;&#62;
  54.  &#60;/select&#62;
  55.  
  56.  &#60;select name=&#34;select3&#34;&#62;
  57.  &#60;/select&#62;
  58.  
  59.   &#60;select name=&#34;select4&#34;&#62;
  60.  &#60;/select&#62;
  61.  
  62.   &#60;select name=&#34;select5&#34;&#62;
  63.  &#60;/select&#62;
  64.  
  65.  &#60;input type=&#34;text&#34; name=&#34;texto&#34;&#62;
  66.  
  67.  &#60;/form&#62;
  68. &#60;/body&#62;
  69. &#60;/html&#62;
  70.  
  71.  
  72.  
  73.  


Citar
Tienes dos select (o tres o los que quieras), y quieres que depende de lo que elijas en la primera opcion (Pais en tu caso), en el segundo select ponga estado, o ciudad, (o lo que quieras,,, puedes encadenarlo a tu gusto...). Un ejemplo sería el siguiente, siendo el primer Select, para el Pais, y el segundo select para la ciudad.


CODE 

<form name="f1">
<select name=pais onchange="cambia_provincia()">
<option value="0" selected>Seleccione...
<option value="1">España
<option value="2">Argentina
<option value="3">Colombia
<option value="4">Francia
</select>

<select name=provincia>
<option value="-">-
</select>
</form>
 


Hasta aqui hemos creado el primer Select


CODE 

var provincias_1=new Array("-","Andalucía","Asturias","Baleares","Canarias","Castilla y León","Castilla-La Mancha","...")
var provincias_2=new Array("-","Salta","San Juan","San Luis","La Rioja","La Pampa","...")
var provincias_3=new Array("-","Cali","Santamarta","Medellin","Cartagena","...")
var provincias_4=new Array("-","Aisne","Creuse","Dordogne","Essonne","Gironde ","...")
 


Con esto creamos los arrays del segundo select


CODE 

function cambia_provincia(){
   var pais
   pais = document.f1.pais[document.f1.pais.selectedIndex].value
   if (pais != 0) {
     mis_provincias=eval("provincias_" + pais)
      num_provincias = mis_provincias.length
      document.f1.provincia.length = num_provincias
       for(i=0;i<num_provincias;i++){
         document.f1.provincia.options.value=mis_provincias
         document.f1.provincia.options.text=mis_provincias
      }
   }else{
      document.f1.provincia.length = 1
      document.f1.provincia.options[0].value = "-"
      document.f1.provincia.options[0].text = "-"
   }
   document.f1.provincia.options[0].selected = true
}
 


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


CODE 

<?php
while($row = mysql_fetch_array($result)) {
echo "<option value=".$row["valor"].">".$row["enunciado"]."</option>"; }
?>
 



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


CODE 

<?php
$javascript = "<script language=\"JavaScript\">\n";
$javascript .= "   var array_js = new Array();\n";
//aqui nos conectariamos a la base de datos,,, a tu gusto!!!!! Yo uso algo asi:
include("conexion_bd.php");
$link=Conexion();
$valores=mysql_query("select * from columna",$link) or die (mysql_error());

$contador = 0;
while ($elem = mysql_fetch_array($valores)) {
 $javascript .="columna[".$contador."] = ".$elem['columna2'].";\n";  
 $contador++;                                  }
$javascript .= "</script>\n";
echo $javascript;
?>
 




Aquí tienes varias ayudas... Ya me diras si te ayuda algo de esto...

Un saludo

     Slimer
Hola Muchas gracias por su ayuda. Estoy trabajando en eso pero todo esta saliendo bien.

Gaviotica

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Menus Desplegables Dinamicos
« Respuesta #10 en: Martes 15 de Marzo de 2005, 21:23 »
0
Cita de: "Gaviotica"
Cita de: "Slimer"
Hola Gaviotica:

Por lo que entiendo, tu quieres conectarte a una BD mysql para que en un Select te salga lo que contiene la BD.

Soy de los que piensa que para aprender necesitas "pistas" u "orientaciones" y que no te lo tienen que dar hecho, por lo que te lanzo lo siguiente.

(Ya estas conectada a tu BD mysql por lo que no te digo mas o menos como...)

Dentro del Select, en vez de enumerar las opciones, prueba con algo como esto:

Código: Text
  1.  
  2.  
  3. &#60;select name=&#34;pais&#34; id=&#34;selectPais&#34;&#62;
  4. &#60;option&#62; &#60;/option&#62; VACIO
  5. &#60;?
  6.      mysql_data_seek (&#036;result,0); // Con esto nos ponemos cada vez que entremos en la primera posición de la BD
  7.      while (&#036;row = mysql_fetch_array(&#036;result)) {
  8.           echo &#34;&#60;opcion value=&#34;.&#036;row[&#34;columna1&#34;].&#34;&#62;&#34;.&#036;row[&#34;valor1&#34;].&#34;&#60;/opcion&#62;&#34;; }
  9. ?&#62;
  10. &#60;/select&#62;
  11.  
  12.  
  13.  

De esta forma tienes resuelta la conexión en PHP a una BD.

Aquí hay algunos ejemplos (algunos sin depurar) pero que te pueden dar ideas (todos estos estan en el lado de JScript)

Código: Text
  1.  
  2. &#60;html&#62;
  3. &#60;head&#62;
  4. &#60;title&#62;Consulta de BD con JavaScript y PHP&#60;/title&#62;
  5. &#60;head&#62;
  6. &#60;script language=&#34;JavaScript&#34;&#62;
  7. function funciona() {
  8. numero = porcentajes.length;
  9. document.formulario.select1.length = numero;
  10.  
  11. for (i=0; i&#60;numero; i++){
  12.  document.formulario.select1.options[i].value = valor_por[i];
  13.  document.formulario.select1.options[i].text = porcentajes[i];
  14. }}&#60;/script&#62;
  15.  
  16. &#60;script language=&#34;JavaScript&#34;&#62;
  17. function tessto()                                               {    
  18. var valoracion = parseInt(document.formulario.select1[document.formulario.select1.selectedIndex].value);
  19. var restado = (100 - valoracion);
  20.   if ( valoracion != 100)                                           {
  21.   document.formulario.select2.length = numero;
  22.   for (i=0; i&#60;numero; i++){
  23. if (valor_por[i] &#60;= restado){
  24.  document.formulario.select2.options[i].value = valor_por[i];
  25.  document.formulario.select2.options[i].text = porcentajes[i];
  26. }}}}                                                        
  27. &#60;/script&#62;
  28.  
  29. &#60;/head&#62;
  30. &#60;body onLoad=&#34;funciona()&#34;&#62;
  31. &#60;?php
  32. &#036;javascript = &#34;&#60;script language=&#092;&#34;JavaScript&#092;&#34;&#62;&#092;n&#34;; //activamos Java dentro de PHP
  33. &#036;javascript .= &#34;   var porcentajes = new Array();&#092;n&#34;;  //Creamos el Array vacio
  34. &#036;javascript .= &#34; var valor_por = new Array();&#092;n&#34;;  //Creamos otro Array vacio
  35. include(&#34;conect.php&#34;);  //Incluimos un fichero
  36. &#036;link=Conectarse(); // Nos conectamos a la BD
  37. &#036;porcentajes=mysql_query(&#34;select * from porcentaje&#34;,&#036;link) or die (mysql_error()); // hacemos consulta y metemos valores en &#036;porc
  38.  
  39. &#036;contador = 0;
  40. while (&#036;elem = mysql_fetch_array(&#036;porcentajes)) {
  41.  &#036;javascript .=&#34;porcentajes[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['porcentaje_n'].&#34;;&#092;n&#34;; // asignamos valores al array. Estructura  Array[i] = valor
  42.  &#036;javascript .=&#34;valor_por[&#34;.&#036;contador.&#34;] = &#34;.&#036;elem['porcentaje_v'].&#34;;&#092;n&#34;;
  43.  &#036;contador++;                                  }
  44. &#036;javascript .= &#34;&#60;/script&#62;&#092;n&#34;;  //cerramos JavaScript
  45. echo &#036;javascript;
  46. ?&#62;
  47.  &#60;form name=&#34;formulario&#34;&#62;
  48.  &#60;select name=&#34;select1&#34; onchange= &#34;tessto()&#34;&#62;
  49.  &#60;!-- option value =&#34;-&#34;&#62;- !--&#62;
  50.  
  51.  &#60;/select&#62;
  52.  
  53.  &#60;select name=&#34;select2&#34;&#62;
  54.  &#60;/select&#62;
  55.  
  56.  &#60;select name=&#34;select3&#34;&#62;
  57.  &#60;/select&#62;
  58.  
  59.   &#60;select name=&#34;select4&#34;&#62;
  60.  &#60;/select&#62;
  61.  
  62.   &#60;select name=&#34;select5&#34;&#62;
  63.  &#60;/select&#62;
  64.  
  65.  &#60;input type=&#34;text&#34; name=&#34;texto&#34;&#62;
  66.  
  67.  &#60;/form&#62;
  68. &#60;/body&#62;
  69. &#60;/html&#62;
  70.  
  71.  
  72.  
  73.  


Citar
Tienes dos select (o tres o los que quieras), y quieres que depende de lo que elijas en la primera opcion (Pais en tu caso), en el segundo select ponga estado, o ciudad, (o lo que quieras,,, puedes encadenarlo a tu gusto...). Un ejemplo sería el siguiente, siendo el primer Select, para el Pais, y el segundo select para la ciudad.


CODE 

<form name="f1">
<select name=pais onchange="cambia_provincia()">
<option value="0" selected>Seleccione...
<option value="1">España
<option value="2">Argentina
<option value="3">Colombia
<option value="4">Francia
</select>

<select name=provincia>
<option value="-">-
</select>
</form>
 


Hasta aqui hemos creado el primer Select


CODE 

var provincias_1=new Array("-","Andalucía","Asturias","Baleares","Canarias","Castilla y León","Castilla-La Mancha","...")
var provincias_2=new Array("-","Salta","San Juan","San Luis","La Rioja","La Pampa","...")
var provincias_3=new Array("-","Cali","Santamarta","Medellin","Cartagena","...")
var provincias_4=new Array("-","Aisne","Creuse","Dordogne","Essonne","Gironde ","...")
 


Con esto creamos los arrays del segundo select


CODE 

function cambia_provincia(){
   var pais
   pais = document.f1.pais[document.f1.pais.selectedIndex].value
   if (pais != 0) {
     mis_provincias=eval("provincias_" + pais)
      num_provincias = mis_provincias.length
      document.f1.provincia.length = num_provincias
       for(i=0;i<num_provincias;i++){
         document.f1.provincia.options.value=mis_provincias
         document.f1.provincia.options.text=mis_provincias
      }
   }else{
      document.f1.provincia.length = 1
      document.f1.provincia.options[0].value = "-"
      document.f1.provincia.options[0].text = "-"
   }
   document.f1.provincia.options[0].selected = true
}
 


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


CODE 

<?php
while($row = mysql_fetch_array($result)) {
echo "<option value=".$row["valor"].">".$row["enunciado"]."</option>"; }
?>
 



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


CODE 

<?php
$javascript = "<script language=\"JavaScript\">\n";
$javascript .= "   var array_js = new Array();\n";
//aqui nos conectariamos a la base de datos,,, a tu gusto!!!!! Yo uso algo asi:
include("conexion_bd.php");
$link=Conexion();
$valores=mysql_query("select * from columna",$link) or die (mysql_error());

$contador = 0;
while ($elem = mysql_fetch_array($valores)) {
 $javascript .="columna[".$contador."] = ".$elem['columna2'].";\n";  
 $contador++;                                  }
$javascript .= "</script>\n";
echo $javascript;
?>
 




Aquí tienes varias ayudas... Ya me diras si te ayuda algo de esto...

Un saludo

     Slimer
Hola Muchas gracias por su ayuda. Estoy trabajando en eso pero todo esta saliendo bien.
Gracias por su ayuda anterior tengo una nueva pregunta:

Buenas mi pregunta es la siguiente:
Tengo dos tablas una llamada investigador que tiene los sig campos: id(key) Cedula apellido nombre mail pais estado direccion area codigo1
y una llamada proyectos que tiene id_proyecto(key) proyecto, proyecto_futuro ,area_proyecto y id

Mi problema se esta presentando porque no logro incluir el valor del id de investigador en proyectos, todo lo demas se me incluye, este es mi codigo:
Primero viene una pag que se llama formulario.
Este es el codigo de la pagina que procesa la info obtenida y la guarda en la base de datos

<?php
$Nombre=$_POST["Nombre"];
$Apellido=$_POST["Apellido"];
$Cedula=$_POST["Cedula"];
$Mail=$_POST["Mail"];
$Pais=$_POST["Pais"];
$Estado=$_POST["Estado"];
$Direccion=$_POST["Direccion"];
$Area=$_POST["Area"];
$Temario=$_POST["Temario"];
$proyecto=$_POST["proyecto"];
$proyecto_futuro=$_POST["proyecto_futuro"];
$area_proyecto=$_POST["area_proyecto"];

$id=$_GET["id"]; //(No se si debo hacerle un POST o un GET , yo creo que es un GET)

//Le hago un echo para ver los datos
echo "Nombre: $Nombre<br>";
echo "Apellido: $Apellido<br>";
echo "Cedula: $Cedula<br>";
echo "Mail: $Mail<br>";
echo "Pais: $Pais<br>";
echo "Estado: $Estado<br>";
echo "Direccion: $Direccion<br>";
echo "Area: $Area<br>";
echo "Temario: $Temario<br>";
echo "Proyecto: $proyecto<br>";
echo "Proyectos Futuros: $proyecto_futuro<br>";
echo "Area: $area_proyecto<br>";

Me conecto a la base de datos
if (!($enlace=mysql_connect("localhost","root","")))
die ("Fallo la conexion con el servidor");
mysql_select_db("prueba",$enlace);


$sentencia = "insert into investigador values ('$id','$Cedula','$Apellido','$Nombre','$Mail','$Pais','$Estado','$Direccion','$Area','$Temario')";

$sentencia1= "insert into proyectos values ('$id_proyecto','$proyecto','$proyecto_futuro','$area_proyecto','$id')";

//El valor de $id en la tabla proyectos no se me esta guardando.

mysql_query($sentencia,$enlace);
mysql_query($sentencia1,$enlace);

echo "<CENTER><B>Los datos fueron agregados exitosamente!!!!!</B></CENTER>";
mysql_close ($enlace);

?>

Porfa podrian ayudarme porque la verdad estoy un poquito trancada en esto.
¿Como guardo el valor del $id de la tabla investigadores en proyecto?
Chau y gracias de antemano.