|
|
|
| Привет делаю корзину
<?php
session_start();
$id = $_GET[id];
$old = $_SESSION['cart'];
if (isset ($id)) {
$_SESSION['cart'] = "$id,$old";
}
$url=$_SERVER['HTTP_REFERER'];
print $url;
print '<script>document.location="'.$url.'"</script>';
?>
| -так добавляю id в сессию
echo "<table cellspacing='0' cellpadding='0' width='98%' style='margin-left: 6px;'><tr><td class='left_board2'>Название</td><td class='left_board2'>Количество</td><td class='left_board2'>Вес</td><td class='left_board2'>Цена</td></tr>";
if(!empty($_SESSION['cart']))
{
$arr = explode(',', $_SESSION['cart']);
$where_in = array();
foreach($arr as $item)
{
$where_in[] = (int)$item;
}
unset($arr);
$sql = "SELECT * FROM `catalog` WHERE `id` IN (" . implode(',', $where_in) . ") ORDER BY `id` ASC";
$res = mysql_query($sql);
while($row = mysql_fetch_assoc($res))
{
echo "<tr><td class='right_board1'><a href='page.php?id=$row[id]'>$row[title]</a></td><td class='right_board1'></td><td class='right_board1'>$row[ves] кг</td><td class='right_board1'>$row[price] руб.</td></tr>";
}
}
else
{
echo "Вы не добавили товары в корзину!";
}
|
так вывожу товары в на странице корзины. Но не могу понять как добавить количество и изменять его?
Подскажите, плиз! | |
|
|
|
|
|
|
|
для: kapitalist
(05.02.2012 в 20:15)
| | //$_SESSION['cart'] = "$id,$old";
Вам будет сильно проще, в том числе и для реализации этой задачи, если вместо хранения идентификаторов через запятую в строке, вы будет хранить их в виде массива. | |
|
|
|
|
|
|
|
для: cheops
(05.02.2012 в 21:21)
| | Я сначала так и делал. Но в итоге мне сказали, лучше через запятую, чем в массиве. | |
|
|
|
|
|
|
|
для: kapitalist
(05.02.2012 в 22:53)
| | А чем лучше-то? Только неудобнее и вот сейчас когда нужно количество ввести, куда его вводить? Массив из одномерного можно в двумерный превратить, а тут что параллельно строку с количеством вводить и писать простыни кода, которые будут проводить согласование двух строк и в котором обязательно будут трудно-улавливаемые ошибки... вообще не понимаю, преимущество одной строки в сессии: медленнее, неудобнее... Если это для cookie, то массив всегда можно быстро свернуть при помощи implode()/explode(). В общем решительно не вижу аргументов в пользу одной строки, тем более когда речь заходит о сложных, таких как корзина, в которой нужно редактировать, обновлять, менять количество, пересчитывать... | |
|
|
|
|
|
|
|
для: cheops
(05.02.2012 в 23:16)
| | Смотри, у меня просто на странице товара сделано так:
if(!empty($_SESSION['cart']))
{
$arr = explode(',', $_SESSION['cart']);
if(in_array($id, $arr))
{
echo "<div id='to_cart1'> Добавлено!<br><a href='cart.php'>перейти в корзину</a></div>";
}
else
{
echo "<div id='to_cart'><a href='to_cart.php?id=$id'>Купить!</a></div>";
}
}
|
А как это сделать, через массив я не понял. И никто не подсказал :( | |
|
|
|
|
|
|
|
для: kapitalist
(05.02.2012 в 23:27)
| | Так. Вообщем пошло по тихоньку.
Код на странице товара сделал так:
if (isset ($_SESSION['cart'][$id])) {
echo "<div id='to_cart1'> Добавлено!<br><a href='cart.php'>перейти в корзину</a></div>";
}
else {
echo "<div id='to_cart'><a href='to_cart.php?id=$id'>Купить!</a></div>";
}
|
Добавляю id в сессию так:
<?php
session_start();
$id = $_GET[id];
if (isset ($id)) {
$_SESSION['cart'][$id] = $id;
}
$url=$_SERVER['HTTP_REFERER'];
print $url;
print '<script>document.location="'.$url.'"</script>';
?>
|
В корзине все вывожу так:
<?
echo "<table cellspacing='0' cellpadding='0' width='98%' style='margin-left: 6px;'><tr><td class='left_board2'>Название</td><td class='left_board2'>Количество</td><td class='left_board2'>Вес</td><td class='left_board2'>Цена</td></tr>";
if(isset($_SESSION['cart'])){
$sql = "SELECT * FROM catalog WHERE id IN (";
foreach($_SESSION['cart'] as $id => $value) {
$sql .= $id . ",";
}
$sql = substr($sql,0,-1) . ") ORDER BY id ASC";
$query = mysql_query($sql);
if (!empty($query)) {
while($row = mysql_fetch_assoc($query)) {
echo "<tr><td class='right_board1'><a href='page.php?id=$row[id]'>$row[title]</a></td><td class='right_board1'></td><td class='right_board1'>$row[ves] кг</td><td class='right_board1'>$row[price] руб.</td></tr>";
}
}else {
echo "<i>Добавте в корзину чтонить</i>";
}
} else {
echo "<p>Ваша корзина пуста</p>";
}
?>
|
Но как вывести количество не понимаю! Подскажите, пожалуйста. | |
|
|
|
|
|
|
|
для: kapitalist
(06.02.2012 в 12:40)
| | Неужели никто не может подсказать, как это сделать? | |
|
|
|
|
|
|
|
для: kapitalist
(06.02.2012 в 12:40)
| | Количество разных видов товаров? Тогда удобно воспользоваться функцией count()
<?php
echo count($_SESSION['cart'])."<br />";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(06.02.2012 в 14:39)
| | Так ведь count показывает общее число. А мне нужно для каждого товара вывести количество и менять его! | |
|
|
|
|
|
|
|
для: kapitalist
(06.02.2012 в 15:15)
| | Тогда наряду с $_SESSION['cart'][$id] = $id; вам нужно предусмотреть возможность для количества. Вообще не очень понятно, зачем два раза $id - у вас же есть эта информация в ключе, значит значение можно использовать для количества товара, т.е. вместо $_SESSION['cart'][$id] = $id; лучше писать $_SESSION['cart'][$id] = 1;, где 1 и есть количество товара, нужно будет 5 штук, просто увеличите это значение на 4. Тогда и для каждой позиции можно вывести количество товаров и подсчитать общее количество товаров в корзине можно как сумму элементов массива $_SESSION['cart']. | |
|
|
|
|
|
|
|
для: cheops
(06.02.2012 в 15:32)
| | Спасибо! Это переделал. Но как мне сделать если у меня форма выглядит вот так:
echo"<form method='post' action='add_cart.php'> ";
echo "<table cellspacing='0' cellpadding='0' width='98%' style='margin-left: 6px;'><tr><td class='left_board2'>Название</td><td class='left_board2'>Количество</td><td class='left_board2'>Вес</td><td class='left_board2'>Цена</td></tr>";
if(isset($_SESSION['cart'])){
$sql = "SELECT * FROM catalog WHERE id IN (";
foreach($_SESSION['cart'] as $id => $value) {
$sql .= $id . ",";
}
$sql = substr($sql,0,-1) . ") ORDER BY id ASC";
$query = mysql_query($sql);
if (!empty($query)) {
while($row = mysql_fetch_assoc($query)) {
echo "<tr><td class='right_board1'><a href='page.php?id=$row[id]'>$row[title]</a></td><td class='right_board1'>";?><input type="text" name="quantity-<?php echo $row['id'];?>" size="5" value="<?php echo "" . $_SESSION['cart'][$row['id']]; ?>"/><?echo"</td><td class='right_board1'>$row[ves] кг</td><td class='right_board1'>$row[price] руб.</td></tr>";
}
}
else {
echo "<i>Добавте в корзину чтонить</i>";
}
} else {
echo "<p>Ваша корзина пуста</p>";
}
?>
</table>
<input type="submit" name="submit" value="Пересчитать" />
</form>
|
Т.е. как мне увеличить значение для нескольких товаров сразу? | |
|
|
|
|
|
|
|
для: kapitalist
(06.02.2012 в 16:59)
| | Народ подскажите пожалуйста! Не могу я понять! | |
|
|
|
|
|
|
|
для: kapitalist
(06.02.2012 в 18:26)
| | Оказывается все так элементарно:
if($_POST['submit']){
foreach($_SESSION['cart'] as $id => $value) {
$_SESSION['cart'][$id]= $_POST['quantity-'.$id];
}
}
|
| |
|
|
|