Obtener id dinámico en jQuery

Iniciado por Arm144, 30 Mayo 2017, 23:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Arm144

Buenas miren cargo una serie de productos desde una BD de la siguiente forma:
Código (php) [Seleccionar]
<?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:
Código (javascript) [Seleccionar]

$('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;
}
});
});

LaThortilla (Effort)

Usa las etiquetas de codigo GeSHi para codigo PHP.
Código (php) [Seleccionar]

<?php
/*EL CODIGO PHP VA EN ETIQUETSA PHP*/




#!drvy

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...

Código (php) [Seleccionar]
<?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 ?>



Código (javascript) [Seleccionar]
$('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