Buenas tardes, hace un tiempo encontré el siguiente código:
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){
die("<br/>Sin conexión."); }
//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:
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){
die("<br/>Sin conexión."); }
//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>
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:
por
Código PHP:
Ver original$sql="select * from productos where tipo=3";
y en el segundo php cambio:
Código PHP:
Ver original$sql="select * from combo2 where id_combo1=$id_combo1";
por
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:
Ver originalif($afe>1){
echo "<option ='$row[1]'>$row[0]</option>";
}else{
echo "<option='2'>aaaaaaaaaaaa</option>";
}
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...