Корзина товаров

Discussion in 'PHP' started by antras2007, 12 Nov 2014.

  1. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Доброго времени суток вам!!! Подскажите кто знает. Нужно сделать корзину товаров в интернет магазине на сессиях, целый день пробую ничего не выходит. Есть три файла:
    index.php
    PHP:
    <?php
    session_start
    ();
    ?>
    <!DOCTYPE html>
    <html>
    <head lang="ru">
        <meta charset="UTF-8">
        <meta name="keywords" content="Интернет магазин">
        <meta name="description" content="Тестовый интернет магазин">
        <meta name="robots" content="index, follow"/>
        <title>Интернет магазин</title>
        <link rel="stylesheet" type="text/css" href="css/style_index.css">
    </head>
    <header width="100%">
        <h1>Интернет магазин</h1>
    </header>
    <body>
    <nav role="navigation">
        <a href="index.php">home</a>
        <a href="admin/categories.php">categories</a>
        <a href="admin/goods.php">goods</a>
        <a href="admin/news.php">textcontent</a><br>
    </nav>
    <article id="form_admin">
        <form action="classes/admin.php" id="my_form" method="POST">
            <section class="field">
                <label for="login">Login</label>
                <input type="text" name="login" id="login">
            </section>
            <section class="field">
                <label for="password">Password</label>
                <input type="password" name="password" id="password">
            </section>
            <section class="field">
                <input type="submit" name="submit" value="Войти">
                <input type="submit" name="exit" value="Выйти"><br>
                <a href='#'>Товаров в корзине: </a>
            </section>
        </form>
    </article>
    <main role="main">
        <aside>
            <menu>
                <?php
                
    include "/classes/menu.php";
                
    ?>
            </menu>
        </aside>
        <article>
            <?php
            
    if(isset($_GET['id_good'])){
                include 
    "classes/fool_info_goods_and_basket.php";
            }else{
                include 
    "classes/content.php";
            }
            
    ?>
        </article>
    </main>
    </body>
    <footer>
        <p align="center">Суперпупер веб мастеринг <?php echo date("Y");?>&copy;</p>
    </footer>
    </html>

    content.php

    PHP:
    <?php
    include_once "connectdb.php";
    class 
    content{
        private 
    $mysqli;

        function 
    maincontent(){
            
    $this->mysqli connectdb::getInstance();

            if (isset(
    $_GET['id'])) {
                
    $id strip_tags($_GET['id']);

            }else{
                
    $query "select news from news order by id DESC";
                
    $result $this->mysqli->query($query);
                
    $texts = array();
                
    $i 0;
                while (
    $row mysqli_fetch_assoc($result)) {
                    
    $texts[$i]['news'] = $row['news'];
                    
    $i++;
                }

                foreach (
    $texts as $text) {
                    echo 
    "<section id='news'>";
                    echo 
    "<br>";
                    echo 
    $text['news'];
                    echo 
    "</section>";
                }
            }

            if(isset(
    $id)){
                
    $query "select * from goods where parent_category=".$id;
                
    $result $this->mysqli->query($query);
                
    $goods = array();
                
    $i 0;
                while(
    $row mysqli_fetch_assoc($result)){
                    
    $goods[$i]['id'] = $row['id'];
                    
    $goods[$i]['name'] = $row['name'];
                    
    $goods[$i]['filename'] = $row['filename'];
                    
    $goods[$i]['info'] = $row['info'];
                    
    $goods[$i]['price'] = $row['price'];
                    
    $i++;
                }

                foreach(
    $goods as $good){
                    
    $id_good $good['id'];
                    echo 
    "<section class = 'goods'>";
                    echo 
    "<a href='" "?id=" $id "&id_good=".$id_good."'><img style='width:150px;heigth:150px;' src=../images/".$good['filename']."></a>";
                    echo 
    "</section>";
                    echo 
    "<section class = 'info'>";
                    echo 
    "<a href='" "?id=" $id "&id_good=".$id_good."'><strong>".$good['name']."</strong></a> ";
                    echo 
    $good['info']." ";
                    echo 
    $good['price']."\$ ";
                    echo 
    "</section>";

                    echo 
    "<hr>";
                }

            }

        }
    }
    $content = new content();
    $content->maincontent();
    он выводит в область основного контента изображение товара, цену, информацию о товаре и т.д. Если нажать на изображение (оно в качестве ссылки), то подключается второй файл

    fool_info_goods_and_basket.php

    PHP:

    <?php
    include_once "connectdb.php";

    class 
    fool_info_goods{
        private 
    $mysqli;
        private 
    $id;
        private 
    $id_good;
        private 
    $goods_info;

        function 
    info_good(){
            
    $this->mysqli connectdb::getInstance();

            if(isset(
    $_GET['id'])){
                
    $this->id $_GET['id'];
            }

            if(isset(
    $_GET['id_good'])){
                
    $this->id_good $_GET['id_good'];
            }

            if(isset(
    $this->id_good)){
                
    $query "select * from goods where id=".$this->id_good;
                
    $result $this->mysqli->query($query);
                
    $this->goods_info = array();
                
    $i 0;
                while(
    $row mysqli_fetch_assoc($result)){
                    
    $this->goods_info[$i]['id'] = $row['id'];
                    
    $this->goods_info[$i]['name'] = $row['name'];
                    
    $this->goods_info[$i]['filename'] = $row['filename'];
                    
    $this->goods_info[$i]['info'] = $row['info'];
                    
    $this->goods_info[$i]['price'] = $row['price'];
                    
    $i++;
                }

                foreach(
    $this->goods_info as $good_info){
                    echo 
    "<section class = 'goods'>";
                    echo 
    "<img style='width:150px;heigth:150px;' src=../images/".$good_info['filename']."></a>";
                    echo 
    "</section>";
                    echo 
    "<section class = 'info'>";
                    echo 
    "<a href='#'><strong>".$good_info['name']."</strong></a> ";
                    echo 
    $good_info['info']." ";
                    echo 
    $good_info['price']."\$ ";
                    echo 
    "</section>";
                    echo 
    "<section class = 'basket'>";
                    echo 
    "<a href='" "?id=" $this->id "&id_good=".$this->id_good."&basket=".$this->id_good."'>Добавить в корзину</a>";
                    echo 
    "</section>";

                    echo 
    "<hr>";
                }

            }
        }

        function 
    add_to_basket(){

           }
    }

    $inf_good = new fool_info_goods();
    $inf_good->info_good();
    $inf_good->add_to_basket();
    он выводит всю информацию о товаре и в нем есть ссылка "Добавить в карзину";

    Вопрос заключается в том, как сделать при нажатии на "Добавить в корзину", что бы товар был помещен в корзину и остаться на этой же странице, затем вернуться назад выбрать другой товар нажать "Добавать в карзину" и т.д. Затем зайти в саму корзину и там были эти товары.

    Если кто знает подскажите пожалуйста, целый день долбаюсь, ничего не получается. Свой код со всеми добавлениями в корзину я убрал из кода показанного выше, дабы не сбивать вашу мысль.
     
  2. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    AJAX тебе в помощь.
     
    1 person likes this.
  3. SpRyt

    SpRyt Member

    Joined:
    18 Oct 2010
    Messages:
    45
    Likes Received:
    5
    Reputations:
    5
    Ну, что мне первое пришло в голову - это по клику "добавить товар в корзину" записывать его в спец табл БД для конкретного пользователя, а потом, когда пользователь запросит корзину, сделать выборку и отобразить все товары, которые он туда поместил.
    Если сделать по-сложнее, то, используя AJAX, помещать все в (виртуальную корзину) [сразу минус - если пользователь обновит страничку - вся корзину пропадет; может не подходить по дизайну (вопрос реализации)].
    И, наконец, красиво будет совместить эти два решения - самое нормальный выход из ситуации.
    PS: Если есть вопросы - пиши...
     
    1 person likes this.
  4. 1nf3c7ed

    1nf3c7ed Member

    Joined:
    8 Mar 2014
    Messages:
    25
    Likes Received:
    5
    Reputations:
    1
    Создаешь поле в куках с помощью jQuery и туда пишешь id товара к примеру через разделитель ":" при нажатии на корзине. Далее при заходе в корзину в $_COOKIE переменно парсите и все.
     
    1 person likes this.