Buenas miren cargo una serie de productos desde una BD de la siguiente forma:
<?php
/* .... */
while ($row = $stm->fetchAll(PDO::FETCH_ASSOC)) {
foreach($row as $producto){
?>
<div class="item col-xs-4 col-lg-4">
<div class="thumbnail">
<img class="group list-group-image" src="<?=$producto['img_producto']?>" alt="<?=$producto['nombre']?>" />
<div class="caption">
<h4 class="group inner list-group-item-heading">
<?=$producto['nombre']?></h4>
<p class="group inner list-group-item-text">
<?=$producto['descripcion']?></p>
<div class="row">
<div class="col-xs-12 col-md-6">
<p class="lead"><?=$producto['precio']?> €</p>
</div>
<?php
error_reporting(E_ALL ^ E_NOTICE);
session_start();
if($_SESSION['conectado']!=="si"){
?>
<div class="col-xs-12 col-md-6">
<p style="background:#FFD700;box-shadow: 1px 1px 5px #00288A;"class="group inner list-group-item-text">Para comprar <a style='color: black;' data-toggle="modal" href="#miModalIniSesion">Inicie Sesión</a> o <a style='color: black;' data-toggle="modal" href="#miModalReg">Registrese</a></p>
</div>
<?php }else if($_SESSION['conectado']=="si"){ ?>
<div id='content' class="col-xs-12 col-md-6">
<form id='formCarrito' method="post">
Cantidad: <input type="number" id='cantidad' name="cantidad" placeholder="0" style="width: 50px;margin-bottom: 2px;">
<input type="hidden" name="cod_producto" id='cod_producto' value="<?=$producto['id_producto']?>"><?=$producto['id_producto']?>
<input type='submit' id='addCarritoBtn' name='addCarrito' class="btn btn-success" value='Añadir al Carrito'>
<div id='response'></div>
</form>
</div>
<?php }?>
</div>
</div>
</div>
</div>
<?php
}
Alguien sabe como puedo hacer que dependiendo a que ítem pulses se envie esa cantidad por jQuery? por ahora tengo esto pero obviamente no funciona:
$('form').submit(function(){
var cantidad=$("#cantidad").val();
var cod=$("#cod_producto").val();
alert(cantidad+cod);
$.ajax({
type:'POST',
url:'php/Carrito.php',
data:{
id_producto:cod,
cantidad:cantidad
},
success: function(data){
alert(data);
document.getElementById('response').innerHTML=data;
}
});
});
Usa las etiquetas de codigo GeSHi para codigo PHP.
<?php
/*EL CODIGO PHP VA EN ETIQUETSA PHP*/
Nunca repitas el mismo ID en HTML.
Lo repites constantemente por cada producto y eso es lo que no lleva a que funcione. Usa los atributos de data-* para conseguir información adicional sobre algo. Usa clases o genera ids dinámicos y usa $(this) para acceder a ellos. El session_start siempre debe ir al principio de tu PHP antes incluso de hacer un echo (ya que envía cabeceras y las cabeceras van primero).
En general deberías repasar las funciones que usas. El bucle while es completamente innecesario, el if/elseif también. Puedes hacer un if/else...
<?php
error_reporting(E_ALL);
session_start();
$rows = $stm->fetchAll(PDO::FETCH_ASSOC);
if(!$rows){
die('No hay resultados');
}
foreach($rows as $producto){ ?>
<div class="item col-xs-4 col-lg-4">
<div class="thumbnail">
<img class="group list-group-image" src="<?=$producto['img_producto']?>" alt="<?=$producto['nombre']?>" />
<div class="caption">
<h4 class="group inner list-group-item-heading"><?=$producto['nombre']?></h4>
<p class="group inner list-group-item-text"><?=$producto['descripcion']?></p>
<div class="row">
<div class="col-xs-12 col-md-6">
<p class="lead"><?=$producto['precio']?> €</p>
</div>
<?php if($_SESSION['conectado']!=="si"){ ?>
<div class="col-xs-12 col-md-6">
<p style="background:#FFD700;box-shadow: 1px 1px 5px #00288A;" class="group inner list-group-item-text">
Para comprar
<a style='color: black;' data-toggle="modal" href="#miModalIniSesion">Inicie Sesión</a>
o <a style='color: black;' data-toggle="modal" href="#miModalReg">Registrese</a>
</p>
</div>
<?php } else { ?>
<div class='content' class="col-xs-12 col-md-6">
<form class='formCarrito' method="post">
Cantidad: <input type="number" name="cantidad" placeholder="0" style="width: 50px;margin-bottom: 2px;">
<input type="hidden" name="cod_producto" value="<?=$producto['id_producto']?>"><?=$producto['id_producto']?>
<input type='submit' name='addCarrito' class="btn btn-success" value='Añadir al Carrito'>
<div id='response'></div>
</form>
</div>
<?php }?>
</div>
</div>
</div>
</div>
<?php } ?>
$('form.formCarrito').submit(function(e){
e.preventDefault();
var cantidad = $(this).children('input[name=cantidad]').val() || 1; // Cantidad del producto elegida o 1 por defecto
var cod = $(this).children('input[name=cod_producto]').val();
$.ajax({
type:'POST',
url:'php/Carrito.php',
data:{
id_producto:cod,
cantidad:cantidad
},
success: function(data){
alert(data);
document.getElementById('response').innerHTML=data;
}
});
});
Saludos