index.php
Código PHP:
Ver original
<?php //hug0 //Conexion con base de datos function conMysql(){ if (!$conn){ return false; }else{ $conn->set_charset("utf8"); return $conn; } } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Garabatos Linux</title> </head> <script type="text/javascript"> //FUNCION AJAX PARA LLAMAR LOS DATOS DEL SEGUNDO COMBO function getCombo2(id_combo1){ //variable que espera la funcion var xmlhttp; if (window.XMLHttpRequest){// codigo for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else{// codigo for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } //funcion que se llama cada vez que cambia la propiedad readyState xmlhttp.onreadystatechange=function(){ //readyState 4: peticion finalizada y respuesta lista //status 200: OK if (xmlhttp.readyState===4 && xmlhttp.status===200){ //Pasar la respuesta html a div_combo2 document.getElementById("div_combo2").innerHTML=xmlhttp.responseText; } }; /* open(metodo, url, asincronico) * metodo: post o get * url: localizacion del archivo en el servidor * asincronico: comunicacion asincronica true o false. */ xmlhttp.open("POST","get_combo2.php",true); //establece el header para la respuesta xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //enviamos las variables al archivo get_combo2.php xmlhttp.send("id_combo1=" + id_combo1); } </script> <body> <?php //conectamos con mysql $conn= conMysql(); if(!$conn){ } //cargamos la info del primer combo con este sql $sql="select * from combo1"; ?> <!--cada vez que cambia de opcion dispara la funcion getCombo2 y envia el valor actual de la seleccion--> <select id="combo1" style="width: 120px;" onchange="getCombo2(this.value);"> <option>- seleccione -</option> <?php //llenamos el combo con la informacion echo "<option value='{$row['id']}'>{$row['nombre']}</option>"; } ?> </select> <!-- div para el segundo combo --> <!-- dibujamos un select vacio solo para "reservar" el espacio que ocupará el verdadero combo2. La etiqueta div con su id es importante porque en el javascript de arriba estamos indicando que sustituya el contenido de este div especificamente. --> <div id="div_combo2" style="display: inline-table;"> <select style="width: 120px;"> <option></option> </select> </div> <!-- fin: div para el segundo combo --> </body> </html>
y get_combo2.php
Código PHP:
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:Ver original
<?php //hug0 //Conexion con base de datos function conMysql(){ if (!$conn){ return false; }else{ $conn->set_charset("utf8"); return $conn; } } //conexion con mysql $conn= conMysql(); if(!$conn){ } //recibimos la variable enviada desde ajax $id_combo1=$_POST["id_combo1"]; //hacemos el query para obtener los datos segun la //variable obtenida $sql="select * from combo2 where id_combo1=$id_combo1"; //ejecutamos el query ?> <!--Este es el verdadero combo2 que mostramos con los datos cargados--> <select id="combo2" style="width: 120px;"> <option>- seleccione -</option> <?php echo "<option ='{$row['id']}'>{$row['nombre']}</option>"; } ?> </select>
Código PHP:
por Ver original
$sql="select * from combo1";
Código PHP:
y en el segundo php cambio:Ver original
$sql="select * from productos where tipo=3";
Código PHP:
por Ver original
$sql="select * from combo2 where id_combo1=$id_combo1";
Código PHP:
Ver original
$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:
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... Ver original
if($afe>1){ echo "<option ='$row[1]'>$row[0]</option>"; }else{ echo "<option='2'>aaaaaaaaaaaa</option>"; }