Bom dia,
Estou a ter um problema ao fazer uma listagem de produtos vindos de uma base de dados, cuja resultado da listagem é um dos campos ser um input para adicionar determinadas quantidades daquele produto ao carrinho de compras. A ideia é no input com class="quantidade_requisitada", antes de submeter testar com jquery se o campo está vazio, e se o valor introduzido é superior ao valor em stock - input cuja class="quantidade_stock". A seguir o código da listagem e do jquery.
Lista produtos:
[CODE\]
$lista_produtos = listar_produtos();
$num_rows_prod = mysql_query($lista_produtos);
while($row = mysql_fetch_row($num_rows_prod)){
$id_produto = $row[0];
$taxa_iva = $row[1];
$nome = $row[2];
$descricao = $row[3];
$quantidade = $row[4];
$preco = $row[5];
$imagem = $row[6];
?>
<div class="produto">
<div class="imagem_produto">
<a href="cliente.php?comentarios_produto=true&p=<?php echo $id_produto; ?>"><img src="../imagens/imagens_produtos/<?php echo $imagem; ?>" style="border-style:none" width="210" height="160" border="10" /></a>
</div>
<?php echo "Nome:" . $nome; ?></br>
<?php echo "Preço:" . $preco . "€"; ?></br>
<font color="blue"><?php echo "Taxa iva:" . $taxa_iva . "%"; ?></br></font>
<?php echo "Stock:" . $quantidade . " Un"; ?>
</br>
<hr>
</br>
<div align="center">
<form action="produtos_carrinho_wishlist.php?apc=true&id_utilizador=<?php echo $_SESSION['id_utilizador']; ?>&id_produto=<?php echo $id_produto; ?>" method="POST">
<?php
echo "<sup>+</sup>" . '<a href="produtos_carrinho_wishlist.php?apw=true&id_utilizador=' . $_SESSION['id_utilizador'] . '&id_produto=' . $id_produto . '"><img src="../imagens/wishlist.png" width="25px" height="20px"/></a>';
if($quantidade == 0){
?>
<sup><input type="text" readonly="true" name="quantidade" id="valor_quantidade" />+</sup>
<?php
}else{
?>
<input type="hidden" class="quantidade_stock" value="<?php echo $quantidade; ?>"/>
<sup><input type="text" class="quantidade_requisitada" value="" name="quantidade" id="valor_quantidade" />+</sup>
<?php
}
?>
<input type="image" class="adiciona_carrinho" src="../imagens/carrinho.png" width="25px" height="20px" alt="Submit" >
</form>
</div>
</div>
<?php
}
?>
</div>
[/CODE\]
jquery:
[CODE\]
$(".adiciona_carrinho").click(function(){
var quantidade_stock = $('.quantidade_stock').val();
var quantidade_requisitada = $('.quantidade_requisitada').val();
if(quantidade_requisitada === ""){
if(!alert ("Campo vazio!!")){
return false;
}
}
var qtd_stock = parseInt(quantidade_stock);
var qtd_requisitada = parseInt(quantidade_requisitada);
if(qtd_requisitada > qtd_stock){
if(!alert("Quantidade requisitada maior que quantidade em stock!")){
return false;
}
}
});
[/CODE\]
Para o primeiro produto, funciona tudo direito. Mas para os restantes produtos não, e aparentemente o input do tipo image, com class="adicionar_carrinho", dos restantes produtos apenas lê o campo de input text com class="quantidade_requisitida", do primeiro produto.
Para os restantes produtos, o input class="quantidade_requisitada", seja vazio, maior ou menor que a quantidade em stock, class="quantidade_stock", dá sempre origem a um dos alert(). Excepto se também preencher o input class="quantidade_requsitada" do primeiro produto.
Desde já obrigado pela ajuda.
Estou a ter um problema ao fazer uma listagem de produtos vindos de uma base de dados, cuja resultado da listagem é um dos campos ser um input para adicionar determinadas quantidades daquele produto ao carrinho de compras. A ideia é no input com class="quantidade_requisitada", antes de submeter testar com jquery se o campo está vazio, e se o valor introduzido é superior ao valor em stock - input cuja class="quantidade_stock". A seguir o código da listagem e do jquery.
Lista produtos:
[CODE\]
$lista_produtos = listar_produtos();
$num_rows_prod = mysql_query($lista_produtos);
while($row = mysql_fetch_row($num_rows_prod)){
$id_produto = $row[0];
$taxa_iva = $row[1];
$nome = $row[2];
$descricao = $row[3];
$quantidade = $row[4];
$preco = $row[5];
$imagem = $row[6];
?>
<div class="produto">
<div class="imagem_produto">
<a href="cliente.php?comentarios_produto=true&p=<?php echo $id_produto; ?>"><img src="../imagens/imagens_produtos/<?php echo $imagem; ?>" style="border-style:none" width="210" height="160" border="10" /></a>
</div>
<?php echo "Nome:" . $nome; ?></br>
<?php echo "Preço:" . $preco . "€"; ?></br>
<font color="blue"><?php echo "Taxa iva:" . $taxa_iva . "%"; ?></br></font>
<?php echo "Stock:" . $quantidade . " Un"; ?>
</br>
<hr>
</br>
<div align="center">
<form action="produtos_carrinho_wishlist.php?apc=true&id_utilizador=<?php echo $_SESSION['id_utilizador']; ?>&id_produto=<?php echo $id_produto; ?>" method="POST">
<?php
echo "<sup>+</sup>" . '<a href="produtos_carrinho_wishlist.php?apw=true&id_utilizador=' . $_SESSION['id_utilizador'] . '&id_produto=' . $id_produto . '"><img src="../imagens/wishlist.png" width="25px" height="20px"/></a>';
if($quantidade == 0){
?>
<sup><input type="text" readonly="true" name="quantidade" id="valor_quantidade" />+</sup>
<?php
}else{
?>
<input type="hidden" class="quantidade_stock" value="<?php echo $quantidade; ?>"/>
<sup><input type="text" class="quantidade_requisitada" value="" name="quantidade" id="valor_quantidade" />+</sup>
<?php
}
?>
<input type="image" class="adiciona_carrinho" src="../imagens/carrinho.png" width="25px" height="20px" alt="Submit" >
</form>
</div>
</div>
<?php
}
?>
</div>
[/CODE\]
jquery:
[CODE\]
$(".adiciona_carrinho").click(function(){
var quantidade_stock = $('.quantidade_stock').val();
var quantidade_requisitada = $('.quantidade_requisitada').val();
if(quantidade_requisitada === ""){
if(!alert ("Campo vazio!!")){
return false;
}
}
var qtd_stock = parseInt(quantidade_stock);
var qtd_requisitada = parseInt(quantidade_requisitada);
if(qtd_requisitada > qtd_stock){
if(!alert("Quantidade requisitada maior que quantidade em stock!")){
return false;
}
}
});
[/CODE\]
Para o primeiro produto, funciona tudo direito. Mas para os restantes produtos não, e aparentemente o input do tipo image, com class="adicionar_carrinho", dos restantes produtos apenas lê o campo de input text com class="quantidade_requisitida", do primeiro produto.
Para os restantes produtos, o input class="quantidade_requisitada", seja vazio, maior ou menor que a quantidade em stock, class="quantidade_stock", dá sempre origem a um dos alert(). Excepto se também preencher o input class="quantidade_requsitada" do primeiro produto.
Desde já obrigado pela ajuda.
Última edição: