Доброго времени суток вам!!! Подскажите кто знает. Нужно сделать корзину товаров в интернет магазине на сессиях, целый день пробую ничего не выходит. Есть три файла: 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");?>©</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(); он выводит всю информацию о товаре и в нем есть ссылка "Добавить в карзину"; Вопрос заключается в том, как сделать при нажатии на "Добавить в корзину", что бы товар был помещен в корзину и остаться на этой же странице, затем вернуться назад выбрать другой товар нажать "Добавать в карзину" и т.д. Затем зайти в саму корзину и там были эти товары. Если кто знает подскажите пожалуйста, целый день долбаюсь, ничего не получается. Свой код со всеми добавлениями в корзину я убрал из кода показанного выше, дабы не сбивать вашу мысль.
Ну, что мне первое пришло в голову - это по клику "добавить товар в корзину" записывать его в спец табл БД для конкретного пользователя, а потом, когда пользователь запросит корзину, сделать выборку и отобразить все товары, которые он туда поместил. Если сделать по-сложнее, то, используя AJAX, помещать все в (виртуальную корзину) [сразу минус - если пользователь обновит страничку - вся корзину пропадет; может не подходить по дизайну (вопрос реализации)]. И, наконец, красиво будет совместить эти два решения - самое нормальный выход из ситуации. PS: Если есть вопросы - пиши...
Создаешь поле в куках с помощью jQuery и туда пишешь id товара к примеру через разделитель ":" при нажатии на корзине. Далее при заходе в корзину в $_COOKIE переменно парсите и все.