За последние 24 часа нас посетили 17098 программистов и 1627 роботов. Сейчас ищут 1808 программистов ...

Не могу вывести товар из БД в корзине

Тема в разделе "JavaScript и AJAX", создана пользователем Атолий, 29 янв 2018.

  1. Атолий

    Атолий Новичок

    С нами с:
    29 янв 2018
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте
    Есть простенький интернет-магазин. Товары записаны в файле, tovar.json. Вывод товара на страницу вот (часть кода):
    Код:

    var cart = {};
    function init() {
    $.getJSON("tovar.json", goodsOut);
    }
    function goodsOut(data) {
    var out='';
    for (var key in data) {
    out +='<div class="cart">';
    out +='<p class="name">'+data[key].name+'</p>';
    out += '<img src="images/'+data[key].img+'" alt="">';
    out +='<div class="cost">'+data[key].cost+'</div>';
    out +='<button class="add-to-cart">Добавить в корзину</button>';
    out +='</div>';.........

    Добавление в корзину и вывод вот (часть кода)
    Код (Text):
    1.  
    2.  
    3. var cart = {};
    4. function loadCart() {
    5.     //проверяю есть ли в localStorage запись cart
    6.     if (localStorage.getItem('cart')) {
    7.         // если есть - расширфровываю и записываю в переменную cart
    8.         cart = JSON.parse(localStorage.getItem('cart'));
    9.             showCart();
    10.         }
    11.     else {
    12.         $('.main-cart').html('Корзина пуста!');
    13.     }
    14. }
    15.  
    16. function showCart() {
    17.     //вывожу корзину
    18.     if (!isEmpty(cart)) {
    19.         $('.main-cart').html('Корзина пуста!');
    20.     }
    21.     else {
    22.         $.getJSON('tovar.json', function (data) {
    23.             var goods = data;
    24.             var out = '';
    25.             for (var id in cart) {
    26.                out +='<div class="cart">';
    27.                 out += `<button data-id="${id}" class="del-goods">Убрать из корзины</button><br><br>`;
    28.                 out += `<img src="images\\${goods[id].img}"><br>`;
    29.                 out += ` ${goods[id].name  }<br>`;
    30.                 out += ` ${cart[id]  } шт <br><br>`;
    31.                 out += `Сумма `;
    32.                 out += cart[id]*goods[id].cost;
    33.                 out += ` руб <br><br>`;
    34.                 out += `<button data-id="${id}" class="plus-goods">+</button>`;
    35.                 out += `<button data-id="${id}" class="minus-goods">-</button>`;
    36.                 out += '<br>';
    37.                 out +='</div>';.......
    Начал переделывать под БД. В первом коде вывод из бд сделал, все нормально, все выводится
    Код (Text):
    1.  
    2.  
    3. var cart = {};
    4. function init() {
    5.     $.post(
    6.         "md/core.php",{
    7.         "action" : "LoadGoods"
    8.         },
    9.         goodsOut
    10.     );
    11. }
    12. function goodsOut(data) {
    13.     var out='';
    14.     for (var key in data) {..........
    А в корзине товар не выводится, помогите разобраться. Мне кажется все дело в строке
    Код (Text):
    1. $.getJSON('tovar.json', function (data)
    , но как ее переделать...тут и застрял
     
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Атолий ну так в чём именно проблемма? товар не добавляется в корзину или не выводится?
     
  3. Атолий

    Атолий Новичок

    С нами с:
    29 янв 2018
    Сообщения:
    5
    Симпатии:
    0
    товар добавляется в бд, а в корзине не выводится
     
  4. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Атолий запрос в бд и обработчик где?
     
  5. Атолий

    Атолий Новичок

    С нами с:
    29 янв 2018
    Сообщения:
    5
    Симпатии:
    0
    Код (Text):
    1.  
    2. var cart = {}; // корзина
    3.  
    4. function init() {
    5.     //считываем файл goods.json
    6.     $.getJSON("tovar.json", goodsOut);
    7. }
    8.  
    9. function goodsOut(data) {
    10.     // вывод на страницу
    11.     //data=JSON.parse(data);
    12.     console.log(data);
    13.     var out='';
    14.     for (var key in data) {
    15.          out +='<div class="cart">';
    16.          out +='<p class="name">'+data[key].name+'</p>';
    17.          out += '<img src="images/'+data[key].img+'" alt="">';
    18.          out +='<div class="cost">'+data[key].cost+'</div>';
    19.          out +='<button class="add-to-cart">Добавить в корзину</button>';
    20.          out +='</div>';
    21.     }
    22.     $('.goods-out').html(out);
    23.     $('.add-to-cart').on('click', addToCart);
    24. }
    25.  
    26. function addToCart() {
    27.     //добавляем товар в корзину
    28.     var id = $(this).attr('data-id');
    29.     // console.log(id);
    30.     if (cart[id]==undefined) {
    31.         cart[id] = 1; //если в корзине нет товара - делаем равным 1
    32.     }
    33.     else {
    34.         cart[id]++; //если такой товар есть - увеличиваю на единицу
    35.     }
    36.     showMiniCart();
    37.     saveCart();
    38. }
    39.  
    40. function saveCart() {
    41.     //сохраняю корзину в localStorage
    42.     localStorage.setItem('cart', JSON.stringify(cart)); //корзину в строку
    43. }
    44.  
    45. function showMiniCart() {
    46.     //показываю мини корзину
    47.     var out="";
    48.     for (var key in cart) {
    49.         out += key +' количество '+ cart[key]+'<br>';
    50.     }
    51.     $('.mini-cart').html(out);
    52. }
    53.  
    54. function loadCart() {
    55.     //проверяю есть ли в localStorage запись cart
    56.     if (localStorage.getItem('cart')) {
    57.         // если есть - расшифровываю и записываю в переменную cart
    58.         cart = JSON.parse(localStorage.getItem('cart'));
    59.         showMiniCart();
    60.     }
    61. }
    62.  
    63. $(document).ready(function () {
    64.     init();
    65.     loadCart();
    66. });
    67. {/code]
    68.  
    69. это первый файл main.js, выводит товар на страницу index.html, при нажатии на кнопку "Добавить в корзину" добавляет товар и сохраняет в localStorage.  Второй файл cart.js
    70.  
    71. [code]
    72. var cart = {};
    73. function loadCart() {
    74.     //проверяю есть ли в localStorage запись cart
    75.     if (localStorage.getItem('cart')) {
    76.         // если есть - расширфровываю и записываю в переменную cart
    77.         cart = JSON.parse(localStorage.getItem('cart'));
    78.             showCart();
    79.         }
    80.     else {
    81.         $('.main-cart').html('Корзина пуста!');
    82.     }
    83. }
    84.  
    85. function showCart() {
    86.     //вывод корзины
    87.     if (!isEmpty(cart)) {
    88.         $('.main-cart').html('Корзина пуста!');
    89.     }
    90.     else {
    91.         $.getJSON('tovar.json', function (data) {
    92.             var goods = data;
    93.             var out = '';
    94.             for (var id in cart) {
    95.                out +='<div class="cart">';
    96.                 out += `<button data-id="${id}" class="del-goods">Убрать из корзины</button><br><br>`;
    97.                 out += `<img src="images\\${goods[id].img}"><br>`;
    98.                 out += ` ${goods[id].name  }<br>`;
    99.                 out += ` ${cart[id]  } шт <br><br>`;
    100.                 out += `Сумма `;
    101.                 out += cart[id]*goods[id].cost;
    102.                 out += ` руб <br><br>`;
    103.                 out += `<button data-id="${id}" class="plus-goods">+</button>`;
    104.                 out += `<button data-id="${id}" class="minus-goods">-</button>`;
    105.                 out += '<br>';
    106.                 out +='</div>';
    107.             }
    108.             $('.main-cart').html(out);
    109.             $('.del-goods').on('click', delGoods);
    110.             $('.plus-goods').on('click', plusGoods);
    111.             $('.minus-goods').on('click', minusGoods);
    112.         });
    113.     }
    114. }
    115.  
    116. function delGoods() {
    117.     //удаляем товар из корзины
    118.     var id = $(this).attr('data-id');
    119.     delete cart[id];
    120.     saveCart();
    121.     showCart();
    122. }
    123. function plusGoods() {
    124.     //добавляет товар в корзине
    125.     var id = $(this).attr('data-id');
    126.     cart[id]++;
    127.     saveCart();
    128.     showCart();
    129. }
    130. function minusGoods() {
    131.     //уменьшаем товар в корзине
    132.     var id = $(this).attr('data-id');
    133.     if (cart[id]==1) {
    134.         delete cart[id];
    135.     }
    136.     else {
    137.         cart[id]--;
    138.     }
    139.     saveCart();
    140.     showCart();
    141. }
    142.  
    143. function saveCart() {
    144.     //сохраняю корзину в localStorage
    145.     localStorage.setItem('cart', JSON.stringify(cart)); //корзину в строку
    146. }
    147.  
    148. function isEmpty(object) {
    149.     //проверка корзины на пустоту
    150.     for (var key in object)
    151.     if (object.hasOwnProperty(key)) return true;
    152.     return false;
    153. }
    154.  
    155. function sendEmail() {
    156.     var ename = $('#ename').val();
    157.     var email = $('#email').val();
    158.     var ephone = $('#ephone').val();
    159.     if (ename!='' && email!='' && ephone!='') {
    160.         if (isEmpty(cart)) {
    161.             $.post(
    162.                 "core/mail.php",
    163.                 {
    164.                     "ename" : ename,
    165.                     "email" : email,
    166.                     "ephone" : ephone,
    167.                     "cart" : cart
    168.                 },
    169.                 function(data){
    170.                     if (data==1) {
    171.                         document.location.replace ("cart.html");
    172.                         alert('Заказ отправлен');
    173.                
    174.                     }
    175.                     else {
    176.                         alert('Повторите заказ');
    177.                     }
    178.                 }
    179.             );
    180.         }
    181.         else {
    182.             alert('Корзина пуста');
    183.         }
    184.     }
    185.     else {
    186.         alert('Заполните поля');
    187.     }
    188.  
    189. }
    190.  
    191.  
    192. $(document).ready(function () {
    193.    loadCart();
    194.    $('.send-email').on('click', sendEmail);
    195.  
    196.     // отправить письмо с заказом
    197. });  
    выводит товар в самой корзине на странице cart.html( с функциями : убавить, прибавить, удалить и отправить по емейл).Пока товар выводился из файла, все работало, но как только я подключился к БД, заменив выделенный код на
    Код (Text):
    1.  
    2. function init() {
    3.     //считываем данные из БД
    4.     $.post(
    5.         "core.php",{
    6.         "action" : "LoadGoods"
    7.         },
    8.         goodsOut
    9.     );
    10. }
    (файл core.php выглядит так
    Код (Text):
    1.  
    2. <?php
    3. $action = $_POST['action'];
    4.  
    5. require_once 'function.php';
    6.  
    7. switch ($action) {
    8.     case 'init':
    9.         init();
    10.         break;
    11.     case "selectOneGoods":
    12.         selectOneGoods();
    13.         break;
    14.     case 'updateGoods':
    15.         updateGoods();
    16.         break;
    17.     case 'newGoods':
    18.         newGoods();
    19.         break;
    20. }

    )
    то перестала работать корзина, то есть товар из БД на выводится в index.html, а cart.html пустая страница

    запрос в БД и функции в файле function.php
    Код (Text):
    1.  
    2. <?php
    3. $servername = "localhost";
    4. $username = "root";
    5. $password = "";
    6. $dbname = "eshop";
    7.  
    8. function connect(){
    9.     $conn = mysqli_connect("localhost", "root", "", "eshop");
    10.     if (!$conn) {
    11.         die("Connection failed: " . mysqli_connect_error());
    12.     }
    13.     return $conn;
    14. }
    15.  
    16. function init(){
    17.     //вывожу список товаров
    18.     $conn = connect();
    19.     $sql = "SELECT id, name FROM goods";
    20.     $result = mysqli_query($conn, $sql);
    21.  
    22.     if (mysqli_num_rows($result) > 0) {
    23.         $out = array();
    24.         while($row = mysqli_fetch_assoc($result)) {
    25.             $out[$row["id"]] = $row;
    26.         }
    27.         echo json_encode($out);
    28.     } else {
    29.         echo "0";
    30.     }
    31.     mysqli_close($conn);
    32. }
    33. function selectOneGoods(){
    34.     $conn = connect();
    35.     $id=$_POST["gid"];
    36.     $sql = "SELECT * FROM goods WHERE id='$id'";
    37.     $result = mysqli_query($conn, $sql);
    38.  
    39.     if (mysqli_num_rows($result) > 0) {
    40.         $row = mysqli_fetch_assoc($result);
    41.         echo json_encode($row);
    42.     } else {
    43.         echo "0";
    44.     }
    45.     mysqli_close($conn);
    46. }
    47. function updateGoods(){
    48.     $conn = connect();
    49.     $id=$_POST['id'];
    50.     $name=$_POST['gname'];
    51.     $cost=$_POST['gcost'];
    52.     $descr=$_POST['gdescr'];
    53.     $ord=$_POST['gorder'];
    54.     $img=$_POST['gimg'];
    55.     $sql="UPDATE goods SET name='$name', cost='$cost', description='$descr', ord='$ord', img='$img'  WHERE id='$id'";
    56.  
    57. if (mysqli_query($conn, $sql)) {
    58.     echo "Yes ov";
    59. } else {
    60.     echo "Error updating record: " . mysqli_error($conn);
    61. }
    62.     mysqli_close($conn);
    63.  
    64. }
    65. function newGoods(){
    66.     $conn = connect();
    67.     $name=$_POST['gname'];
    68.     $cost=$_POST['gcost'];
    69.     $descr=$_POST['gdescr'];
    70.     $ord=$_POST['gorder'];
    71.     $img=$_POST['gimg'];
    72.     $sql = "INSERT INTO goods (name, cost, description, ord, img)
    73. VALUES ('$name', '$cost', '$descr', '$ord', '$img')";
    74.  
    75. if (mysqli_query($conn, $sql)) {
    76.     echo "O Yes";
    77. } else {
    78.     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    79. }
    80.  
    81.     mysqli_close($conn);
    82.  
    83. }
    84.  
    85. function LoadGoods() {
    86.     $conn = connect();
    87.     $sql = "SELECT * FROM goods";
    88.     $result = mysqli_query($conn, $sql);
    89.     if (mysqli_num_rows($result) > 0) {
    90.         $row = array();
    91.     while($row=mysqli_fetch_assoc($result)){
    92.         $out[$row["id"]]=$row;
    93.     }
    94.         echo json_encode($out);
    95.     } else {
    96.         echo "0";
    97.     }
    98.     mysqli_close($conn);
    99.  
    100. }
     
    #5 Атолий, 29 янв 2018
    Последнее редактирование: 29 янв 2018
  6. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    только вот в коре.пхп нет case 'loadsgood'
     
  7. Атолий

    Атолий Новичок

    С нами с:
    29 янв 2018
    Сообщения:
    5
    Симпатии:
    0
    Есть, прошу прощения ,не все скопировал, иначе бы товар не выводился из БД Я думаю все дело вот в этой строке $.getJSON('tovar.json', function (data) в файле cart.js, данные о товаре считываются из файла, а как сделать из БД?
     
  8. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    так в этом же и проблема была?
     
  9. Атолий

    Атолий Новичок

    С нами с:
    29 янв 2018
    Сообщения:
    5
    Симпатии:
    0
    На главную страницу весь товар из Базы выводится, а при заказе , в корзину не выводится.
    --- Добавлено ---
    Код (Text):
    1.  
    2. var cart = {};
    3. function init() {
    4. $.getJSON("tovar.json", goodsOut);
    5. }
    вот вывод товара на главную страницу из файла
    Код (Text):
    1.  
    2. var cart = {};
    3. function init() {
    4. //$.getJSON("tovar.json", goodsOut);
    5. [LIST=1]
    6. [*] $.post(
    7. [*]        "md/core.php",{
    8. [*]        "action" : "LoadGoods"
    9. [*]        },
    10. [*]        goodsOut
    11. [*]    );
    12. [/LIST]
    13.  
    14. }
    то же самое, только из БД, все работает, все выводится.
    Далее - вывод товара на страницу корзины. Вот в этой строке $.getJSON('tovar.json', function (data) , как я понимаю, тоже используется файл tovar.json. Я думаю, что все дело в этом.

    Код (Text):
    1.  
    2. [LIST=1]
    3. [*][code]
    4. [*]var cart = {};
    5. [*]function loadCart() {
    6. [*]    //проверяю есть ли в localStorage запись cart
    7. [*]    if (localStorage.getItem('cart')) {
    8. [*]        // если есть - расширфровываю и записываю в переменную cart
    9. [*]        cart = JSON.parse(localStorage.getItem('cart'));
    10. [*]            showCart();
    11. [*]        }
    12. [*]    else {
    13. [*]        $('.main-cart').html('Корзина пуста!');
    14. [*]    }
    15. [*]}
    16. [*]
    17.  
    18. [*]function showCart() {
    19. [*]    //вывод корзины
    20. [*]    if (!isEmpty(cart)) {
    21. [*]        $('.main-cart').html('Корзина пуста!');
    22. [*]    }
    23. [*]    else {
    24. [*]        $.getJSON('tovar.json', function (data) {
    25. [*]            var goods = data;
    26. [*]            var out = '';
    27. [*]            for (var id in cart) {
    28. [*]               out +='<div class="cart">';
    29. [*]                out += `<button data-id="${id}" class="del-goods">Убрать из корзины</button><br><br>`;
    30. [*]                out += `<img src="images\\${goods[id].img}"><br>`;
    31. [*]                out += ` ${goods[id].name  }<br>`;
    32. [*]                out += ` ${cart[id]  } шт <br><br>`;
    33. [*]                out += `Сумма `;
    34. [*]                out += cart[id]*goods[id].cost;
    35. [*]                out += ` руб <br><br>`;
    36. [*]                out += `<button data-id="${id}" class="plus-goods">+</button>`;
    37. [*]                out += `<button data-id="${id}" class="minus-goods">-</button>`;
    38. [*]                out += '<br>';
    39. [*]                out +='</div>';
    40. [*]            }
    41. [/LIST]
     
  10. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Атолий лан, взаимодействия явы и пыха мне плохо знакомы. но исходя из темы полагаю, что твоя ошибка в формате данных