elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Obtener id dinámico en jQuery
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener id dinámico en jQuery  (Leído 5,481 veces)
Arm144

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Obtener id dinámico en jQuery
« en: 30 Mayo 2017, 23:17 pm »

Buenas miren cargo una serie de productos desde una BD de la siguiente forma:
Código
  1. <?php
  2. /* .... */
  3.  
  4. while ($row = $stm->fetchAll(PDO::FETCH_ASSOC)) {
  5.   foreach($row as $producto){
  6. ?>
  7. <div class="item  col-xs-4 col-lg-4">
  8. <div class="thumbnail">
  9. <img class="group list-group-image" src="<?=$producto['img_producto']?>" alt="<?=$producto['nombre']?>" />
  10. <div class="caption">
  11. <h4 class="group inner list-group-item-heading">
  12. <?=$producto['nombre']?></h4>
  13. <p class="group inner list-group-item-text">
  14. <?=$producto['descripcion']?></p>
  15. <div class="row">
  16. <div class="col-xs-12 col-md-6">
  17. <p class="lead"><?=$producto['precio']?> €</p>
  18. </div>
  19. <?php
  20. error_reporting(E_ALL ^ E_NOTICE);
  21. if($_SESSION['conectado']!=="si"){
  22. ?>
  23. <div class="col-xs-12 col-md-6">
  24. <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>
  25. </div>
  26. <?php }else if($_SESSION['conectado']=="si"){ ?>
  27. <div id='content' class="col-xs-12 col-md-6">
  28. <form id='formCarrito' method="post">
  29. Cantidad: <input type="number" id='cantidad' name="cantidad" placeholder="0" style="width: 50px;margin-bottom: 2px;">
  30. <input type="hidden" name="cod_producto" id='cod_producto' value="<?=$producto['id_producto']?>"><?=$producto['id_producto']?>
  31. <input type='submit' id='addCarritoBtn' name='addCarrito' class="btn btn-success" value='Añadir al Carrito'>
  32. <div id='response'></div>
  33. </form>
  34. </div>
  35. <?php }?>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. <?php
  41. }

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
  1. $('form').submit(function(){
  2. var cantidad=$("#cantidad").val();
  3. var cod=$("#cod_producto").val();
  4. alert(cantidad+cod);
  5. $.ajax({
  6. type:'POST',
  7. url:'php/Carrito.php',
  8. data:{
  9. id_producto:cod,
  10. cantidad:cantidad
  11. },
  12. success: function(data){
  13. alert(data);
  14. document.getElementById('response').innerHTML=data;
  15. }
  16. });
  17. });
  18.  


« Última modificación: 31 Mayo 2017, 17:10 pm por #!drvy » En línea

LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
Re: Obtener id dinámico en jQuery
« Respuesta #1 en: 31 Mayo 2017, 05:17 am »

Usa las etiquetas de codigo GeSHi para codigo PHP.
Código
  1. <?php
  2. /*EL CODIGO PHP VA EN ETIQUETSA PHP*/
  3.  
  4.  



En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Obtener id dinámico en jQuery
« Respuesta #2 en: 31 Mayo 2017, 19:10 pm »

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
  1. <?php
  2.  
  3. $rows = $stm->fetchAll(PDO::FETCH_ASSOC);
  4.  
  5. if(!$rows){
  6.    die('No hay resultados');
  7. }
  8.  
  9. foreach($rows as $producto){  ?>
  10.    <div class="item col-xs-4 col-lg-4">
  11.  
  12.        <div class="thumbnail">
  13.            <img class="group list-group-image" src="<?=$producto['img_producto']?>" alt="<?=$producto['nombre']?>" />
  14.            <div class="caption">
  15.                <h4 class="group inner list-group-item-heading"><?=$producto['nombre']?></h4>
  16.                <p class="group inner list-group-item-text"><?=$producto['descripcion']?></p>
  17.  
  18.                <div class="row">
  19.                    <div class="col-xs-12 col-md-6">
  20.                        <p class="lead"><?=$producto['precio']?> €</p>
  21.                    </div>
  22.  
  23.                    <?php if($_SESSION['conectado']!=="si"){ ?>
  24.  
  25.                    <div class="col-xs-12 col-md-6">
  26.                        <p style="background:#FFD700;box-shadow: 1px 1px 5px #00288A;" class="group inner list-group-item-text">
  27.                            Para comprar
  28.                            <a style='color: black;' data-toggle="modal" href="#miModalIniSesion">Inicie Sesión</a>
  29.                            o <a style='color: black;' data-toggle="modal" href="#miModalReg">Registrese</a>
  30.                        </p>
  31.                    </div>
  32.  
  33.                    <?php } else { ?>
  34.  
  35.                    <div class='content' class="col-xs-12 col-md-6">
  36.                        <form class='formCarrito' method="post">
  37.                            Cantidad: <input type="number" name="cantidad" placeholder="0" style="width: 50px;margin-bottom: 2px;">
  38.                            <input type="hidden" name="cod_producto" value="<?=$producto['id_producto']?>"><?=$producto['id_producto']?>
  39.                            <input type='submit' name='addCarrito' class="btn btn-success" value='Añadir al Carrito'>
  40.                            <div id='response'></div>
  41.                        </form>
  42.                    </div>
  43.  
  44.                    <?php }?>
  45.  
  46.                </div>
  47.  
  48.            </div>
  49.  
  50.        </div>
  51.  
  52.    </div>
  53. <?php } ?>


Código
  1. $('form.formCarrito').submit(function(e){
  2.    e.preventDefault();
  3.    var cantidad = $(this).children('input[name=cantidad]').val() || 1; // Cantidad del producto elegida o 1 por defecto
  4.    var cod = $(this).children('input[name=cod_producto]').val();
  5.  
  6.    $.ajax({
  7.        type:'POST',
  8.        url:'php/Carrito.php',
  9.        data:{
  10.            id_producto:cod,
  11.            cantidad:cantidad
  12.        },
  13.  
  14.        success: function(data){
  15.            alert(data);
  16.            document.getElementById('response').innerHTML=data;
  17.        }
  18.    });
  19. });

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
jquery cambio dinamico contenido con PHP
PHP
Carlosnuel 4 7,007 Último mensaje 13 Diciembre 2009, 02:30 am
por Carlosnuel
Autocomplete Dinamico con Jquery, PHP y MySQL
PHP
Devilboy.Devil 7 18,197 Último mensaje 8 Junio 2011, 10:32 am
por Kase
Ayuda con JQuery-backstretch necesito un fondo dinamico
Desarrollo Web
mylo-cordoba 0 2,857 Último mensaje 7 Octubre 2011, 15:18 pm
por mylo-cordoba
select dinamico en cargado con Jquery
Desarrollo Web
01munrra 0 2,113 Último mensaje 29 Agosto 2012, 00:51 am
por 01munrra
select dinamico en jquery
Desarrollo Web
kakashi20 2 2,758 Último mensaje 16 Junio 2013, 14:37 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines