За последние 24 часа нас посетил 17991 программист и 1613 роботов. Сейчас ищут 897 программистов ...

Выбирается неправильное значение из базы данных.

Тема в разделе "PHP для новичков", создана пользователем Pyroman, 20 май 2012.

  1. Pyroman

    Pyroman Активный пользователь

    С нами с:
    20 май 2012
    Сообщения:
    11
    Симпатии:
    0
    У меня есть скрипт магазина и в нём следующий код:
    Код (Text):
    1. <?php print '<center>
    2. <table class="table ipb_table" border="0" cellpadding="2" cellspacing="3">
    3. <tr align="center" bordercolor="red">
    4. <td class="table ipb_table" width="100"><font color = "#0A6E0B"><strong>Товар</strong></font></td>
    5. <td class="table ipb_table" width="50"><font color = "#0A6E0B"><strong>ID</strong></font></td>
    6. <td class="table ipb_table" width="100"><font color = "#0A6E0B"><strong>Название</strong></font></td>
    7. <td class="table ipb_table" width="100"><font color = "#0A6E0B"><strong>Цена</strong></font></td>
    8. <td class="table ipb_table" width="100"><font color = "#0A6E0B"><strong>Количество</strong></font></td>
    9. <td class="table ipb_table" width="100"><font color = "#0A6E0B"><strong>Купить</strong></font></td>
    10. </tr>';
    11. while($shop = mysql_fetch_assoc($result2)) {
    12.     print '<tr align="center">
    13.             <td><strong><img src="'.$picdir.$shop["item_id"].'.png'.'"></strong></td>
    14.             <td><strong>' . $shop["item_id"] . '</strong></td>
    15.             <td><strong>' . $shop["name"] . '</strong></td>
    16.             <td><strong>' . $shop["price"] . ' руб.</strong></td>
    17.             <td><strong>' . $shop["stack"] . ' шт.</strong></td>
    18.             <td><strong>
    19. <form action="'.$faction.'" method="post">
    20. Введите количество:
    21. <p><INPUT SIZE="1" MAXLENGTH="3" TYPE="TEXT" ID="count" NAME="count" VALUE="1"></p>
    22. <INPUT TYPE="HIDDEN" NAME="nazvanie" ID="nazvanie" VALUE ="' . $shop["name"] . '">
    23. <INPUT TYPE="HIDDEN" NAME="icount" ID="icount" VALUE ="' . $shop["stack"] . '">
    24. <INPUT TYPE="HIDDEN" NAME="iprice" ID="iprice" VALUE ="' . $shop["price"] . '">
    25. <INPUT TYPE="HIDDEN" NAME="username10" ID="username10" VALUE ="'.$username.'">
    26. <p><button class="ipsButton" type="button" id="buy3" value="' . $shop["item_id"] . '" onClick="buy1();">Купить</button></p>';
    27. if($username == 1 || $username == 2){
    28. print '<p><button class="ipsButton" value="' . $shop["item_id"] . '" name="del" type="submit">Удалить</button></p><br>';
    29. print '<p>Новая цена: &nbsp; <INPUT TYPE="text" NAME="price_new" SIZE="5" MAXLENGTH="5"><INPUT TYPE="HIDDEN" NAME="edit_id" value="' . $shop["item_id"] . '"></p><br>
    30. <p><INPUT class="ipsButton" TYPE="submit" name="submit_edit"  VALUE="Изменить"></p>';
    31. }
    32. print '</form></strong></td>
    33.         </tr>';
    34. }
    35. print "</table></center>"; ?>
    Проблема в следующем: При нажатии на купить, он берёт данные только первого товара независимо от того, какой выбран. При нажатии на купить выполняется следующий скрипт:
    Код (Text):
    1. <script type="text/javascript" src="/jquery.js"></script>
    2. <script type="text/javascript">
    3.         function buy1() {
    4.    
    5.     var username10 = $('#username10').val();
    6.     var nazvanie = $('#nazvanie').val();
    7.     var icount = $('#icount').val();
    8.     var iprice = $('#iprice').val();
    9.     var count = $('#count').val();
    10.     var buy4 = $('#buy3').val();
    11.    
    12.     $.ajax({
    13.         type: "POST",
    14.         data: "username10="+username10+"&nazvanie="+nazvanie+"&icount="+icount+"&iprice="+iprice+"&count="+count+"&buy0="+buy4,
    15.         url: 'engine/modules/shop/pokupka.php',
    16.         success: function(data) {
    17.             alert(data);
    18.         }
    19.     });
    20. }
    21.  
    22. </script>
    Какой товар не выбирай, все данные берутся именно от первого.
    Но если использовать такой код у кнопки (без AJAX):
    Код (Text):
    1. <p><button class="ipsButton" value="' . $shop["item_id"] . '" name="buy" type="submit">Купить</button></p>
    , то всё нормально.
    Как это можно исправить? Спасибо.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    offtopic: чтобы код в сообщении был с подсветкой синтаксиса, можно указать язык, типа [ code=php ] ... [ /code ]

    в варианте JS не вижу item_id, наверное в этом проблема ) вникать глубже ломает. пользуй firebug, ставь alert-ы в коде, в общем отлаживай
     
  3. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    херасе, и ты молчал про эту фишку? [​IMG]
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Код (PHP):
    1. // деньги класть сюда
    2. $wallet += 100;
    3.  
     
  5. Pyroman

    Pyroman Активный пользователь

    С нами с:
    20 май 2012
    Сообщения:
    11
    Симпатии:
    0
    Код (PHP):
    1. <button class="ipsButton" type="button" id="buy3" value="' . $shop["item_id"] . '" onClick="buy1();">Купить</button
    Код (Text):
    1. var buy4 = $('#buy3').val();
    Вот оттуда берётся значение.
     
  6. Pyroman

    Pyroman Активный пользователь

    С нами с:
    20 май 2012
    Сообщения:
    11
    Симпатии:
    0
    Мне тут посоветовали использовать классы. Проблема в том, что создаётся много элементов и у всех одинаковый ID. Может кто-то помочь с кодом? Спасибо.
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    это верно, id элемента DOM лучше делать уникальным ))) делай для каждого товара уникальный id, а внутри элемента с товаром находи элементы по классу.
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. onClick="buy1(this)" 
    ?