Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] select encadenado

Estas en el tema de select encadenado en el foro de Javascript en Foros del Web. Buenas tardes, hace un tiempo encontré el siguiente código: index.php @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php //hug0   //Conexion con base de datos   ...
  #1 (permalink)  
Antiguo 19/01/2015, 17:02
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
select encadenado

Buenas tardes, hace un tiempo encontré el siguiente código:
index.php
Código PHP:
Ver original
  1. <?php
  2. //hug0
  3.   //Conexion con base de datos
  4.   function conMysql(){
  5.         $conn= mysqli_connect("localhost","root","admin","pip_pruebas");
  6.     if (!$conn){  
  7.       print_r (mysqli_connect_error());  
  8.       return false;      
  9.     }else{
  10.             $conn->set_charset("utf8");
  11.       return $conn;
  12.     }
  13.   }
  14. ?>
  15. <!DOCTYPE html>
  16. <html>
  17.   <head>
  18.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  19.     <title>Garabatos Linux</title>
  20.   </head>  
  21.  
  22.   <script type="text/javascript">
  23.     //FUNCION AJAX PARA LLAMAR LOS DATOS DEL SEGUNDO COMBO
  24.     function getCombo2(id_combo1){ //variable que espera la funcion
  25.             var xmlhttp;
  26.  
  27.             if (window.XMLHttpRequest){// codigo for IE7+, Firefox, Chrome, Opera, Safari
  28.                 xmlhttp=new XMLHttpRequest();
  29.             }else{// codigo for IE6, IE5
  30.                 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  31.       }
  32.  
  33.       //funcion que se llama cada vez que cambia la propiedad readyState
  34.             xmlhttp.onreadystatechange=function(){
  35.         //readyState 4: peticion finalizada y respuesta lista
  36.         //status 200: OK
  37.         if (xmlhttp.readyState===4 && xmlhttp.status===200){
  38.           //Pasar la respuesta html a div_combo2
  39.                     document.getElementById("div_combo2").innerHTML=xmlhttp.responseText;
  40.                 }
  41.             };
  42.  
  43.       /* open(metodo, url, asincronico)
  44.        * metodo: post o get
  45.        * url: localizacion del archivo en el servidor
  46.        * asincronico: comunicacion asincronica true o false.
  47.       */
  48.             xmlhttp.open("POST","get_combo2.php",true);
  49.  
  50.       //establece el header para la respuesta
  51.             xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  52.  
  53.       //enviamos las variables al archivo get_combo2.php
  54.             xmlhttp.send("id_combo1=" + id_combo1);        
  55.         }
  56.   </script>
  57.   <body>
  58.     <?php
  59.       //conectamos con mysql
  60.       $conn=  conMysql();    
  61.       if(!$conn){
  62.         die("<br/>Sin conexi&oacute;n.");
  63.       }
  64.  
  65.       //cargamos la info del primer combo con este sql
  66.       $sql="select * from combo1";
  67.  
  68.       $query= mysqli_query($conn, $sql);
  69.       mysqli_close($conn);
  70.  
  71.     ?>
  72.     <!--cada vez que cambia de opcion dispara la funcion getCombo2
  73.     y envia el valor actual de la seleccion-->
  74.     <select id="combo1" style="width: 120px;" onchange="getCombo2(this.value);">
  75.       <option>- seleccione -</option>
  76.       <?php      
  77.         //llenamos el combo con la informacion
  78.         while ($row = mysqli_fetch_array($query)) {  
  79.           echo "<option value='{$row['id']}'>{$row['nombre']}</option>";
  80.         }        
  81.       ?>
  82.     </select>
  83.  
  84.     <!-- div para el segundo combo -->
  85.     <!--
  86.       dibujamos un select vacio solo para "reservar" el espacio
  87.       que ocupará el verdadero combo2.
  88.       La etiqueta div con su id es importante porque en el
  89.       javascript de arriba estamos indicando que sustituya el contenido
  90.       de este div especificamente.
  91.     -->
  92.     <div id="div_combo2" style="display: inline-table;">
  93.       <select style="width: 120px;">
  94.         <option></option>
  95.       </select>
  96.     </div>
  97.     <!-- fin: div para el segundo combo -->
  98.   </body>
  99. </html>

y get_combo2.php
Código PHP:
Ver original
  1. <?php
  2. //hug0
  3.   //Conexion con base de datos
  4.   function conMysql(){
  5.         $conn= mysqli_connect("localhost","root","admin","pip_pruebas");
  6.     if (!$conn){  
  7.       print_r (mysqli_connect_error());  
  8.       return false;      
  9.     }else{
  10.             $conn->set_charset("utf8");
  11.       return $conn;
  12.     }
  13.   }
  14.  
  15. //conexion con mysql
  16. $conn=  conMysql();    
  17. if(!$conn){
  18.   die("<br/>Sin conexi&oacute;n.");
  19. }
  20.  
  21. //recibimos la variable enviada desde ajax
  22. $id_combo1=$_POST["id_combo1"];
  23.  
  24. //hacemos el query para obtener los datos segun la
  25. //variable obtenida
  26. $sql="select * from combo2 where id_combo1=$id_combo1";
  27.  
  28. //ejecutamos el query
  29. $query= mysqli_query($conn, $sql);
  30. mysqli_close($conn);
  31.  
  32. ?>
  33. <!--Este es el verdadero combo2 que mostramos con los datos cargados-->
  34. <select id="combo2" style="width: 120px;">
  35. <option>- seleccione -</option>
  36. <?php      
  37.   while ($row = mysqli_fetch_array($query)) {  
  38.     echo "<option ='{$row['id']}'>{$row['nombre']}</option>";
  39.   }        
  40. ?>
  41. </select>
venia junto con una pequeña base de datos, la he creado y funciona todo bien, el problema es cuando cambio las consultas al mysql, el primer php cambio:

Código PHP:
Ver original
  1. $sql="select * from combo1";
por
Código PHP:
Ver original
  1. $sql="select * from productos where tipo=3";
y en el segundo php cambio:
Código PHP:
Ver original
  1. $sql="select * from combo2 where id_combo1=$id_combo1";
por
Código PHP:
Ver original
  1. $sql="select distinct(nombre),id from cuentas_corrientes,proveedores where id_proveedor=id and producto='$id_combo1' order by nombre asc";

ambas consultas funcionan bien si las ejecuto en el MySql query browser, pero al ejecutarlas con todo el código no funciona, y tampoco me da error, que puede estar mal??

no esta mal aclarar que también he cambiado los datos para realizar la conexión a mysql y también he modificado la ultima porcion de codigo php del segundo archivo, quedando asi:

Código PHP:
Ver original
  1. $row = mysqli_fetch_row($query);
  2. if($afe>1){
  3.     echo "<option ='$row[1]'>$row[0]</option>";
  4. }else{
  5.     echo "<option='2'>aaaaaaaaaaaa</option>";
  6. }
con la intencion de ver si al menos me muestra un opcion en el select en caso que la consula devuelta algun error, pero ni asi...
  #2 (permalink)  
Antiguo 20/01/2015, 08:02
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: select encadenado

disculpen si el problema no es de javascript, pero la verdad que no se que podría ser, si no es js por favor avísenme así lo posteo en el foro correcto! gracias
  #3 (permalink)  
Antiguo 20/01/2015, 09:33
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: select encadenado

Solucionado, no me di cuenta que falta el atributo value en el option del select

Etiquetas: ajax, funcion, html, php, select, valor
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 22:34.