Hola gente como va? Tengo una lista de productos que se actualiza dependiendo de un select. Esto lo hago recogiendo los datos del select en tiempo real y con un archivo php cargo los datos y dsp con ajax los devuelvo.
El problema que tengo es que la lista de productos se genera con un foreach y el codigo funciona bien pero solo con el primer producto, con los demas no funciona. ¿Como podria hacer?
Si selecciono el segundo, tercero o cuarto se actualiza el primero nomas, en vez de actualizarse donde corresponde.
Dejo los codigos que use:
Código Javascript
:
Ver original<script type="text/javascript">
function showUser(str)
{
if (str=="")
{
document.getElementById("cargarproducto").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("cargarproducto").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","catalog/model/catalog/obtendatos.php?q="+str,true);
xmlhttp.send();
}
</script>
Código HTML:
Ver original<?php
$counter=0;
foreach ($products as $product) {
if ($counter == 0 ) $xclass = 'alpha';
else if (($counter+12) % 12 == 0 ) $xclass = 'alpha4 alpha3';
else if (($counter+4) % 4 == 0 ) $xclass = 'alpha4';
else if (($counter+3) % 3 == 0 ) $xclass = 'alpha3';
else $xclass = '';
if (($counter+2) % 2 == 0 ) $xclass .= ' odd';
?>
<div class="grid-box <?php echo $xclass; ?>">
<?php if ($product['price'] && $product['special']) { ?>
<?php } ?>
<?php if ($product['thumb']) { ?>
<a href="<?php echo $product['href']; ?>">
<img src="<?php echo $product['thumb']; ?>" title="
<?php echo $product['name']; ?>" alt="
<?php echo $product['name']; ?>" />
</a> <?php } ?>
<a href="<?php echo $product['href']; ?>">
<?php echo $product['name']; ?></a><br />
<form id="form1" name="form1" method="GET" action=""> <select name="users" onchange="showUser(this.value)"> <?php $eliminar = $product['model'];
$terms = substr($eliminar, 0, 9);
$modelo_query = $this->db->query("SELECT * FROM product WHERE model LIKE '%" . $terms . "%'");
$modelos = array();
if ($modelo_query->num_rows > 0) {
foreach ($modelo_query->rows as $result) {
$modelos[] = array('modelo' => $result['model'],);?>
<option value="<?php echo $result['model']; ?>">
<?php echo $result['model']; ?></option> <?php }
} ?>
<div class="description"><?php echo $product['description']; ?></div> <div id="cargarproducto"></div> <?php } ?>
obtendatos.php
Código PHP:
Ver original<?php
require_once('../../../config.php');
require_once(DIR_SYSTEM . 'startup.php');
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$q=$_GET["q"];
$GroupId = 44;
$resultado = mysql_query("SELECT * FROM product WHERE model LIKE '%" . $q . "%'"); {
$special_query = mysql_query("SELECT * FROM product_special WHERE product_id LIKE '%" . $row['product_id'] . "%' AND customer_group_id LIKE '%" . $GroupId . "%'"); if ($row['quantity'] > 0) {
$disponible = 7;
$stock_query = mysql_query("SELECT * FROM stock_status WHERE stock_status_id LIKE '%" . $disponible . "%'"); $rstock = $stock['name'];
}
if ($row['price']) {
echo '<div class="price">';
if (!$row_s['price']) {
echo '<span>';
echo 'Precio: ';
echo '</span>';
echo $row['price'];
} else {
echo '<span>';
echo 'Precio: ';
echo '</span>';
echo '<span class="price-new">';
echo $row_s['price'];
echo '</span>';
}
echo '</div>';
}
echo '<div class="actions">';
echo '<div class="cart">';
if ($row['price']) {
echo $rstock;
echo '<br>';
}
echo 'Cantidad: ';
echo '<input type="text" name="quantity" value="" class="input-mini" id="quantity-'.$row['product_id'].'">';
if ($rstock !== "Sin disponibilidad") {
echo '<br><input id="boton" name="boton" type="button" value="Añadir a la cesta" onclick="addQtyToCart(';
echo "'";
echo $row['product_id'];
echo "'";
echo ');" class="btn btn-cart btn-small" />';
}
echo '</div>';
echo '</div>';
}
?>