Programación Web y Scripting > JavaScript

 Menu Desplegable De Paises Y Ciudades

<< < (2/3) > >>

tuxie:
hola otra vez.

 :(  tengo un nuevo problema con lo de los menus. tengo los siguientes menus en mi form:


 <td><select name="pais" id="pais" onChange="OnChange()">
          <option  selected value="0">seleccione...
  <?
  while($result){
 ?>
   <option value="<? echo $result[id_pais]; ?>" ><? echo $result[pais]; ?>
          <?
     $result=mysql_fetch_array($con);
        }//while
           ?></option>
        </select> </td>

    </tr>

    <tr>

      <td>Estado</td>
 
      <td><select name="estado" id="estado" onChange="CambiaCiudad()">
     <option value="-">-

        </select></td>

    </tr>

    <tr>

      <td>Ciudad</td>

      <td>
<select name="ciudad">
          <option value="-" selected>-</option>
         
        </select></td>


Y esta es la funcion del menu "PAIS":

<script language="JavaScript" >

function OnChange(){
   sel_type_index = document.alta.pais.selectedIndex;

      sel_type_value = document.alta.pais[sel_type_index].value;
             for(a = document.alta.estado.length - 1; a > 0; a--)

   document.alta.estado.options[a]   = null;

   <?
   cerrar();
   $db2 = mysql_pconnect($host1,$dbuser1,$dbpws1 );
   mysql_select_db($dbname1,$db2);
   $es1=mysql_query("select id_estado from estado");
   $es=mysql_num_rows($es1);
   for ($n=1;$n<=$es;$n++){
      $estado=mysql_query("select * from estado where id_pais='$n'");
              echo "if(sel_type_value==\"".$n."\"){\n";   
         $a=1;
   while($estado1=mysql_fetch_row($estado)){
                              echo "document.alta.estado.options[$a]= new Option(\"$estado1[2]\",\"$estado1[3]\");\n";
$a++;
  }
  echo "}\n";
}
?>


  return true;

}

</script>
      
Y la del menu ESTADO:

<script language="JavaScript">

function CambiaCiudad(){

      sel_type_index = document.alta.estado.selectedIndex;

     sel_type_value = document.alta.estado[sel_type_index].value;
              
            for(i = document.alta.ciudad.length - 1; i > 0; i--)

   document.alta.ciudad.options   = null;

<?
cerrar();
$db1 = mysql_pconnect($host1,$dbuser1,$dbpws1 );
mysql_select_db($dbname1,$db1);
$il1=mysql_query("select valor from ciudad");

// 'valor' es una cadena de 3 caracteres para diferenciar al estado o provincia.  
//ejemplo:Jalisco=JAL, Baja California Sur = BCS, etc.

$ciu=mysql_fetch_row($il1);
//for ($ti=1;$ti<=$il;$ti++){
while($ciu!=""){
   $ciudad=mysql_query("select * from ciudad where valor='$ciu[3]'");
   echo "select * from ciudad where valor='$ciu[3]'\n";
   echo "if(sel_type_value==\"".$ciu[3]."\"){\n";   
   $o=1;
           while($ciudad1=mysql_fetch_row($ciudad)){
           echo "document.alta.ciudad.options[$o]= new Option(\"$ciudad1[2]\");\n";
   $o++;
   }
   echo "}\n";
         }
?>
      

      return true;

      }      

</script>


Tengo que manejar forzosamente la cadena de valor en lugar del id de la tabla, pero al cargar la pagina entra a un ciclo infinito y al detener la carga examino el codigo fuente y me da lo que sigue:



function OnChange(){

      //alert(estado);

      sel_type_index = document.alta.pais.selectedIndex;

      sel_type_value = document.alta.pais[sel_type_index].value;
      //alert (sel_type_value);
      for(a = document.alta.estado.length - 1; a > 0; a--)

         document.alta.estado.options[a]   = null;

      if(sel_type_value=="1"){
document.alta.estado.options[1]= new Option("Jalisco","JAL");
document.alta.estado.options[2]= new Option("Chihuahua","CHU");
document.alta.estado.options[3]= new Option("Aguascalientes","AGU");
document.alta.estado.options[4]= new Option("Baja Calif. Nte","BCN");
document.alta.estado.options[5]= new Option("Baja Calif. Sur","BCS");
document.alta.estado.options[6]= new Option("Campeche","CAM");
document.alta.estado.options[7]= new Option("Chiapas","CPS");
document.alta.estado.options[8]= new Option("Coahuila","COA");
document.alta.estado.options[9]= new Option("Colima","COL");
document.alta.estado.options[10]= new Option("D.F.","DFE");
document.alta.estado.options[11]= new Option("Durango","DGO");
document.alta.estado.options[12]= new Option("Edo. de Mexico","EDM");
document.alta.estado.options[13]= new Option("Guanajuato","GTO");
document.alta.estado.options[14]= new Option("Guerrero","GRO");
document.alta.estado.options[15]= new Option("Hidalgo","HDG");
document.alta.estado.options[16]= new Option("Michoacan","MCH");
document.alta.estado.options[17]= new Option("Morelos","MOR");
document.alta.estado.options[18]= new Option("Nayarit","NAY");
document.alta.estado.options[19]= new Option("Nuevo León","NLN");
document.alta.estado.options[20]= new Option("Oaxaca","OXA");
document.alta.estado.options[21]= new Option("Puebla","PBL");
document.alta.estado.options[22]= new Option("Queretaro","QRT");
document.alta.estado.options[23]= new Option("Quintana Roo","QRO");
document.alta.estado.options[24]= new Option("San Luís Potosí","SLP");
document.alta.estado.options[25]= new Option("Sinaloa","SNL");
document.alta.estado.options[26]= new Option("Sonora","SON");
document.alta.estado.options[27]= new Option("Tabasco","TAB");
document.alta.estado.options[28]= new Option("Tamaulipas","TAM");
document.alta.estado.options[29]= new Option("Tlaxcala","TLX");
document.alta.estado.options[30]= new Option("Veracruz","VER");
document.alta.estado.options[31]= new Option("Yucatán","YUC");
document.alta.estado.options[32]= new Option("Zacatecas","ZAC");
}
if(sel_type_value=="2"){
document.alta.estado.options[1]= new Option("California","");
}
if(sel_type_value=="3"){
}
if(sel_type_value=="4"){
}
if(sel_type_value=="5"){
}
if(sel_type_value=="6"){
}
if(sel_type_value=="7"){
}
if(sel_type_value=="8"){
}
if(sel_type_value=="9"){
}
if(sel_type_value=="10"){
}
if(sel_type_value=="11"){
}
if(sel_type_value=="12"){
}
if(sel_type_value=="13"){
}
if(sel_type_value=="14"){
}
if(sel_type_value=="15"){
}
if(sel_type_value=="16"){
}
if(sel_type_value=="17"){
}
if(sel_type_value=="18"){
}
if(sel_type_value=="19"){
}
if(sel_type_value=="20"){
}
if(sel_type_value=="21"){
}
if(sel_type_value=="22"){
}
if(sel_type_value=="23"){
}
if(sel_type_value=="24"){
}
if(sel_type_value=="25"){
}
if(sel_type_value=="26"){
}
if(sel_type_value=="27"){
}
if(sel_type_value=="28"){
}
if(sel_type_value=="29"){
}
if(sel_type_value=="30"){
}
if(sel_type_value=="31"){
}
if(sel_type_value=="32"){
}
if(sel_type_value=="33"){
}
      

      return true;

      }
      
      
      function CambiaCiudad(){

      //alert(estado);

      sel_type_index = document.alta.estado.selectedIndex;

      sel_type_value = document.alta.estado[sel_type_index].value;
       // alert (sel_type_value);
         
      for(i = document.alta.ciudad.length - 1; i > 0; i--)

         document.alta.ciudad.options   = null;

      select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
select * from ciudad where valor=''
if(sel_type_value==""){
}
............
y asi sucesivamente. La funcion OnChange() parece que si funciona bien, pero la de cambiaciudad() no me toma ningun valor. les agradeceria mucho si me ayudaran. hasta luego.  :huh:

Slimer:
Hola Tuxie:

Lo primero comentarte que me pierdo un poco en tu codigo, y no veo algunos detalles, como,,,

select * from estado where id_pais='$n'"

donde defines la variable $n?
En otro sitio donde me pierdo es que no conozco la estructura de las tablas

Lo que parece estar claro, es que la "clave" de tu problema esta en la selección del estado, y que es en esa interrogación a la BD donde tienes problemas.

select * from estado where id_pais LIKE $n

Esta supongo recibirá el valor "valor" del pais que has elegido en el select.

Y despues, cuando hagas esa consulta (que no entiendo porque no te lo filtra correctamente)... simplemente tienes que mostrarlo con algo similar a esto...

<select name="estado"onChange="ciudad()">
<option value="" selected>
              <?    

   while($row = mysql_fetch_array($consultaBD)) {
    echo "<option value=".$row["valor_estado"].">".$row["estado"]."</option>";
     }
?>
</select>

Espero haberte ayudado aunque sea con alguna "luz", pero es que no "veo" el codigo (me faltan cosas).... Podrías adjuntar los archivos???

Un saludo

Slimer

Slimer:
Hola Tuxie:

He encontrado este enlace que a lo mejor te puede ayudar:

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

Espero que te ayude... y sino,,, ya sabes que lo que este en nuestra mano...

Un saludo

Slimer

tuxie:
Hola. Muchas gracias. en realidad mi problema era una verdadera tontería, estaba mandando el valor de $n como vacío por que era una variable a la q

tuxie:
Hola otra vez. el problema es que estaba asignando a $n el valor de un arreglo y no estaba designando que numero del registro queria mostrar  :P . una disculpa por la tonteria, pero crei que el problema estaba en javascript por que aun soy bastante inexperta. ya revise el url que me enviaste y me ha sido de mucha utilidad. de nuevo gracias y hasta luego   :lol: .

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa