|
Автор |
Сообщение |
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
Уважаемые, кто может привести кусочек примера работающей корзины? Функционал элементарен (чисто для ознакомления) покупатель тыкает по кнопкам "заказ", а в корзине собираются товары...вроде есть какие то мысли, но боюсь чего то не учесть, нет в этом опыта совсем. поэтому прошу выложить исходный код, искал по сети, там в основном разговоры и ничего конкретного... |
|
Вернуться к началу |
|
|
Tuxik
Тяпницо
Зарегистрирован: 02.07.2007 Сообщения: 1521
|
|
|
|
ммм, как вариант скачать CMS какого-либо коммерческого сайта и посмотреть ее исходник: http://cmslist.ru/find_cms/ ("интернет-магазин").
Последний раз редактировалось: Tuxik (Ср Окт 28, 2009 9:30 am), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Реальный пример почти корзины можно посмотреть в моем самоучителе ПХП - там есть система проверки знаний, принцип хранения и передачи выбранных системой вопросов такой же как и в корзине.
Алгоритм такой:
1) выводим список товаров с checkbox, в value сохраняем ID товара
2) пользователь выбирает товары, нажимает submit
3) номера выбранных товаров передаются сценарию
4) сценарий сериализует массив чисел в строку и сохраняет ее в cookies браузера
5) при выводе корзины строка десерилизуется и превращается в массив, содержащий ID товара
Остальные функции по работе с корзиной (добавление нового товара, удаление товара) сводятся к изменению этого массива, полученного из cookies браузера в виде строки |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
Tuxik, Спасибо, den, Спасибо.
Я вчера что то наделал , у меня сессии хранят эти данные, в php.ini session.save_path заменил на SID, все работает и товары адекватно считает/сохраняет, но если подождать пока сессии истекают, то начинается абракадабра, ошибки появляются и прочее... наверное необходимо продливать время сесий? |
|
Вернуться к началу |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
Вернуться к началу |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
лидирующая позиция в гугл |
|
Вернуться к началу |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
Как это все можно передать или записать в файл?
Цитата: |
$k = 0;
$m = 0;
foreach($_SESSION['cart'] as $key => $val) {
$k += $val;
echo "<tr bgcolor=\"#ffffff\">
<td><a href=2.jpg target=_blank><img src=2.jpg height=20 width=20></a></td>
<td><a href=\"goods.php?id=" .$key. "\">" .$goods[$key]['name'].' '.$goods[$key]['art']. "</a></td>
<td>" .$goods[$key]['mony']. "</td>
<td><input class=inp type=\"text\" name=\"prod[" .$key. "]\" value=\"" .$val. "\"></td>
<td>" .$goods[$key]['mony']*$val. "</td>
<td><input type=\"checkbox\" name=\"del[]\" value=\"" .$key. "\"></td>
</tr>";
$m += $goods[$key]['mony']*$val;
}
echo "<tr bgcolor=\"#ffffff\">
<td colspan=\"3\">Всего</td>
<td>" .$k. "</td>
<td>" .$m. "</td>
<td> </td>
</tr>
</table>
<input type=\"submit\" name=\"update\" value=\"Обновить корзину\">
<input type=\"submit\" name=\"clear\" value=\"Очистить корзину\">
</form>";
} else print "Ваша корзина пуста!";
|
я делаю так
Цитата: |
echo'<form METHOD=POST action=add.php>
<input name=k type=hidden value='.$k.'>
<input name=m type=hidden value='.$m.'>
<input name=n type=hidden value='.$goods[$key]['name'].' '.$goods[$key]['art'].'>
<input name=p type=hidden value='.$goods[$key]['mony'].'>
<input name=t type=hidden value='.$goods[$key]['mony']*$val.'>
<input type=submit>'
|
но он передает только последнее значение, тоесть в первом выводе данные возрастают с работой цикла, а когда пытаюсь передать, то передается лишь одно значение |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Амир, Serialize(), UnSerialize() |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
den, я не могу понять как это применить к моему коду |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Амир, а ты что в сессию запихнул массив товаров? интересное решение |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
[/quote]den, Да, сам знаю что не лучшее решение, но все генетики так делают
Если честно делал и по другому, вытаскивая из файла, но там тоже подводные камни
Посмотри, пожалуйста, вот весь код
Цитата: |
<?
function worksCart ($prod) {
if($prod) {
if (!isset($_SESSION['cart'])) $_SESSION['cart'] = array();
$cart = &$_SESSION['cart'];
if (is_array($prod)) {
foreach($prod as $key => $val) {
$key = intval($key);
if ($key) {
$val = intval($val);
if (isset($_POST['del']) && in_array($key, $_POST['del']) || !$val) {
//удаление товара из корзины
if (array_key_exists($key, $cart)) unset($cart[$key]);
} else $cart[$key] = $val;
}
}
} else {
$id = intval($prod);
if ($id) $cart[$id] = array_key_exists($id, $cart) ? $cart[$id] + 1 : 1;
}
} else unset($_SESSION['cart']);
}
// товары
$goods = array(
79 => array('name'=>'Топор', 'art'=>'Стальной', 'mony'=>120),
102 => array('name'=>'Молоток', 'art'=>'Резина', 'mony'=>60),
89 => array('name'=>'Стаместка', 'art'=>'Алюминий', 'mony'=>35),
211 => array('name'=>'Ножовка', 'art'=>'Титан', 'mony'=>86),
212 => array('name'=>'Пила', 'art'=>'Рыба', 'mony'=>86)
);
session_start();
//добавление одиночного товара
if (isset($_GET['add'])) worksCart($_GET['add']);
if (isset($_POST['update'])) worksCart($_POST['prod']);
if (isset($_POST['clear'])) worksCart(0);
echo '<table cellspacing=0 cellpadding=2 align=center><tr><td>Наименование</td><td>Артикул</td><td>Цена</td></tr>';
foreach($goods as $id => $val) {
echo "<tr><td>".$val['name'] . "</td><td>".$val['art']."</td><td> цена: " .$val['mony']. " руб.</td><td> <a href=\"?add=" .$id. "\"><img src=butt.png></a></td></tr>";
}
echo '</table>';
?>
<style type="text/css">
a img{padding:4px; border:1px solid #CCC}
a:hover img{ padding:4px; border:1px solid #093DA8}
a { text-decoration:none}
td{border:1px solid #CCC; padding:0 3px}
#corz{position:fixed; top:1px; left:1px}
.inp{border:1px solid #CCC; width:45px}
.small{ font-family:Verdana, Geneva, sans-serif; font-size:9px}
</style>
<?php
echo "<hr width=\"100%\" size=\"1\">";
if (!empty($_SESSION['cart'])) {
echo "<form method=\"post\">
<table class=small bgcolor=\"#696969\" cellspacing=\"0\" cellpadding=\"1\" width=\"100\">
<tr bgcolor=\"#f5f5f5\">
<td colspan=2>Товар</td>
<td>Цена, руб</td>
<td>Выбрано, шт</td>
<td>Стоимость, руб</td>
<td>Удалить</td>
</tr>";
$k = 0;
$m = 0;
foreach($_SESSION['cart'] as $key => $val) {
$k += $val;
echo "<tr bgcolor=\"#ffffff\">
<td><a href=2.jpg target=_blank><img src=2.jpg height=20 width=20></a></td>
<td><a href=\"goods.php?id=" .$key. "\">" .$goods[$key]['name'].' '.$goods[$key]['art']. "</a></td>
<td>" .$goods[$key]['mony']. "</td>
<td><input class=inp type=\"text\" name=\"prod[" .$key. "]\" value=\"" .$val. "\"></td>
<td>" .$goods[$key]['mony']*$val. "</td>
<td><input type=\"checkbox\" name=\"del[]\" value=\"" .$key. "\"></td>
</tr>";
$m += $goods[$key]['mony']*$val;
}
echo "<tr bgcolor=\"#ffffff\">
<td colspan=\"3\">Всего</td>
<td>" .$k. "</td>
<td>" .$m. "</td>
<td> </td>
</tr>
</table>
<input type=\"submit\" name=\"update\" value=\"Обновить корзину\">
<input type=\"submit\" name=\"clear\" value=\"Очистить корзину\">
</form>";
} else print "Ваша корзина пуста!";
?>
|
может есть какой то выход |
|
Вернуться к началу |
|
|
petrelius1150
Завсегдатай
Зарегистрирован: 25.01.2009 Сообщения: 492 Откуда: С-Петербург, Россия
|
|
|
|
Амир, а Вы что, генетик? |
|
Вернуться к началу |
|
|
Tuxik
Тяпницо
Зарегистрирован: 02.07.2007 Сообщения: 1521
|
|
|
|
Дык по аватарке это видно ))) |
|
Вернуться к началу |
|
|
Амир
Участник тусовки
Зарегистрирован: 21.07.2009 Сообщения: 135
|
|
|
|
petrelius1150, Да, задачи по генетике куда проще даются, чем php конструкции))
Tuxik, Сейчас будет узнавать кто ты, естественно по аватарке , если ты не против |
|
Вернуться к началу |
|
|
petrelius1150
Завсегдатай
Зарегистрирован: 25.01.2009 Сообщения: 492 Откуда: С-Петербург, Россия
|
|
|
|
Амир, у меня есть один знакомый, энтомолог, доктор наук, профессор, который тоже очень любит делать сайты. У него очень неплохо получается. Можно посмотреть: http://www.agriento.narod.ru/index.html |
|
Вернуться к началу |
|
|
|
|
 Главная страница сайта
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|