AJAX - Combos Dependientes

   
Vista:

Combos Dependientes

Publicado por Nicolas (1 intervención) el 07/01/2009 03:35:29
Hola, les cuento mi problema...

Tengo una tabla "marcas" con "id" y "nombre", y dsp tengo otra tabla "productos" que tiene "idmarca" "idproductos" y "productos" como campos...

ahora bien este es el codigo php con el que quiero que el usuario al seleccionar una "marca" me devuelva todos los posibles productos

el archivo "a" :

[QUOTE]
<p><label for="actividad">Actividad:</label>
<select name="Actividades" onchange="javascript:cargarCombo('www.homeoleoyarte.com.ar/b.php', 'Actividades', 'Div_Subactividades')" id="Actividades">

<?php

$dbhost="localhost";
$dbuser="user";
$dbpass="pass";
$dbname="nombre base de datos";
$query = "SELECT * FROM marcas";

$conID=mysql_connect($dbhost,$dbuser,$dbpass) or die("Error al conectar a la base de datos".mysql_error());

mysql_select_db($dbname, $conID);

$result=mysql_query($query);

$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$Id = mysql_result($result,$i,"id");
$Actividad = mysql_result($result,$i,"nombre");
?>
<option value=<? echo $Id; ?>>
<? echo $Actividad ?>
</option>
<?
$i++;
}
?>
</select>
</p>
<p>
<div id="Div_Subactividades">

<label for="SubActividad">SubActividad:</label>
<select name="SubActividades" id="SubActividades" class="select">
</select>
</div>
</p>

<script type="text/javascript">
var peticion = false;
var testPasado = false;
try {
peticion = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
peticion = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
peticion = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
peticion = false;
}
}
}
if (!peticion)
alert("ERROR AL INICIALIZAR!");

function cargarCombo (url, comboAnterior, element_id) {
//Obtenemos el contenido del div
//donde se cargaran los resultados
var element = document.getElementById(element_id);
//Obtenemos el valor seleccionado del combo anterior
var valordepende = document.getElementById(comboAnterior)
var x = valordepende.value
//construimos la url definitiva
//pasando como parametro el valor seleccionado
var fragment_url = url+'?Id='+x;
element.innerHTML = '<img src="Imagenes/loading.gif" />';
//abrimos la url
peticion.open("GET", fragment_url);
peticion.onreadystatechange = function() {
if (peticion.readyState == 4) {
//escribimos la respuesta
element.innerHTML = peticion.responseText;
}
}
peticion.send(null);
}
</script>

[/QUOTE]

y el archivo "B" :

[QUOTE]<?
$IdActividad = $_REQUEST['Id'];
?>

<label for="SubActividad">SubActividad:</label>
<select name="SubActividades" id="SubActividades" class="select">

<?php

$dbhost="localhost";
$dbuser="nombre";
$dbpass="pass";
$dbname="nombre de la db";
$query = "SELECT * FROM marcas";

$conID=mysql_connect($dbhost,$dbuser,$dbpass) or die("Error al conectar a la base de datos".mysql_error());

mysql_select_db($dbname, $conID);

$query = "SELECT * FROM productos WHERE idmarca=$idmarca";
$result=mysql_query($query);
$num= mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$idproducto = mysql_result($result,$i,"idproducto");
$producto = mysql_result($result,$i,"SubActividad");
?>
<option value=<? echo $idproducto; ?>>
<? echo htmlentities($SubActividad) ?>
</option>
<?
$i++;
}
?>
</select>
[/QUOTE]

como tirar error no me tira nada, pero tengo los menus, sin datos adentro :S como si pasara por la base de datos y no sacara nada

EDITO: Ahora como figura el codigo aca arriba, funciona la "primera" parte del script.. es decir me aparecen las marcas pero cuando selecciono una para q me devuelva en otro select sigo en la nada, esta vacio totalmente :S

tiene que haber un error en la query se me hace pero no se..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder