За последние 24 часа нас посетили 18743 программиста и 1703 робота. Сейчас ищут 956 программистов ...

Вывод товара в корзине

Тема в разделе "PHP для новичков", создана пользователем arhat78, 11 июн 2014.

Статус темы:
Закрыта.
  1. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    Всем привет! В свободное от работы время изучаю PHP и тренируюсь в создании инет-магазина, и вот возник вопрос: добавляю в корзину ботинок Арт.10001 размер 20 из выпадающего списка, в корзине выводится этот ботинок с размером 20; затем добавляю этот же ботинок, но с размером 24 - а в корзине уже выводится этот последний ввод с размером 24. Вот как поменять код, какой применить принцип, чтобы в корзину добавлялся ботинок одного id, но с разными выбранными размерами? У размеров своя таблица в mysql, с id. Заранее благодарен

    Добавление товара в корзину:

    Код (Text):
    1. <form action="index.php" method="get">
    2.     <input type="hidden" name="view" value="add_to_cart">
    3.     <input type="hidden" name="id" value="<?=$product['id']?>">
    4.     <select name="size" >
    5.     <?PHP
    6.     $sql="SELECT * FROM sizes WHERE `sizes`.`id_boot`='$id' ";
    7.     echo $sql.'<br>';
    8.     $a=mysql_query($sql);
    9.     while ($b = mysql_fetch_array($a))
    10.     {
    11.           echo "<option  value='$b[2]' >  $b[2] </option>";
    12.     }
    13.     ?>
    14.     </select>
    15.     <input type="submit" value="Добавить в корзину">
    16.     </form>
    Это вывод в корзине:

    Код (Text):
    1. foreach ($_SESSION['cart'] as $id => $quantity): $product = get_product($id);
    2.  
    3.         $b['size'] = $_SESSION['cart_size'][$id];
    4.  
    5.         if (!empty($_GET['size'])) {echo $_GET['size'];}
    6.       ?>
    7.  
    8.       <tr>
    9.           <td align="center"><?=$product['title']; ?></td>
    10.           <td align="center">  <?=$b['size'];?> </td>
    11.           <td align="center">  <?=number_format($product['price'],2); ?> руб</td>
    12.           <td align="center"><input type="text" size="2" name="<?=$id; ?>" maxlength="2" value="<?=$quantity; ?>" /></td>
    13.           <td align="center">  <?=number_format($product['price'] * $quantity ,2); ?> руб</td>
    14.       </tr>
     
  2. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    1. добавление товара в корзину не вижу. есть форма добавления, но не код добавления.
    2. не тратьте время. изучайте битрикс (интернет магазин) еще какой либо по вкусу CMS и фигачьте сайты, смотрите как устроен тот же битрикс (написан школьниками для больших дядек)
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    arhat, вас с phpclub уже турнули за бестолковость, простите за прямоту. так вы здесь по новой всё затеваете!

    еще раз: чтобы не было мучений по поводу "тот же ботинок, но другого размера", сделайте им разные идентификаторы — "товарные позиции", они же SKU. что вам осталось непонятно после месяца обсуждений?
     
  4. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    Ты грубиян! ;) И каким же образом я прочитанное про SKU из Википедии могу применить в php-коде????? А также для этого мне нужно будет полностью менять структуру БД, переписывать половину кода. В нынешнем моём варианте пока нужно то поменять/подправить 4-6 строчек...
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Дело твоё. Очевидно 4-6 строчек никак не рождаются, так что можно переосмыслить и переписать всё )))

    Добавлено спустя 6 минут 39 секунд:
    Это размеры … ЧЕГО? Абстрактной универсальной обуви или всё-таки это размеры, применимые к конкретной модели? Если второе — считай, что SKU у тебя уже есть: Модель + Размер это товарная позиция, имеющая свой id.

    Структура данных это фундамент всего.
     
  6. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    artoodetoo, да - каждый размер привязан к определённому ботинку с помощью id_boot.
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Ну значит всё хорошо! В корзину надо добавлять size.id, он будет уникально идентифицировать ботинок определенного размера.
     
  8. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    Ну да, теоретически я это знаю, но вот как на практике это осуществить - пока не понимаю... :(
     
  9. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    пытайся. если мы напишем за тебя, ты ничему не научишся.
     
  10. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    Абсолютно согласен!
    Вот сейчас пытаюсь произвести некоторые действия......

    Вот попробовал добавить функцию id_size:

    Код (Text):
    1. function id_size($id)
    2.     {
    3.     db_connect();
    4.    
    5.     $query = ("SELECT id_boot FROM sizes   ");
    6.    
    7.     $result = mysql_query($query);
    8.    
    9.     $row = mysql_fetch_array($result);
    10.    
    11.     return $row;
    12.     }
    В case('add_to_cart') добавил:

    Код (Text):
    1. $id_size = $_GET['id_size'];
    и $id_size сюда:

    Код (Text):
    1. $add_item = add_to_cart($id, $size, $id_size);
    теперь получилось так:

    Код (Text):
    1. case('add_to_cart'):
    2.       $id = $_GET['id'];
    3.       $size = $_GET['size'];
    4.       $id_size = $_GET['id_size'];
    5.       $_SESSION['cart_size'][$id] = $size;
    6.       $add_item = add_to_cart($id, $size, $id_size);
    7.       $_SESSION['total_items'] = total_items($_SESSION['cart']);
    8.       $_SESSION['total_price'] = total_price($_SESSION['cart']);
    9.       header('Location:index.php?view=product&id='.$id);
    10.      break;
    Теперь пытаюсь как то всё это в выводе в корзине внедрить, но пока не получается......
     
  11. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Что, по твоему, делает функция id_size() ?
     
  12. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    Делаю выборку по id_boot из таблицы sizes. Теперь нужно это как то идентифицировать и связать с id товара в корзине, я так примерно представляю....
     
  13. artoodetoo

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

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

    для меня тема закрыта.
     
  14. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    Счастливчик! Для меня тема ещё как актуальна! Учиться, учиться и ещё раз учиться! Без ваших подсказок и разъяснений очень тяжело будет, но что делать - человек человеку волк ;)
     
  15. arhat78

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

    С нами с:
    11 июн 2014
    Сообщения:
    26
    Симпатии:
    0
    Аууууу, люди................!!! :)
     
  16. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    как-то всё сложно. тему клоуз
     
Статус темы:
Закрыта.