Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Корзина, сессии + БД
На страницу 1, 2  След.
 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Вт Окт 27, 2009 3:32 pm    Заголовок сообщения: Корзина, сессии + БД
Ответить с цитатой

Уважаемые, кто может привести кусочек примера работающей корзины? Функционал элементарен (чисто для ознакомления) покупатель тыкает по кнопкам "заказ", а в корзине собираются товары...вроде есть какие то мысли, но боюсь чего то не учесть, нет в этом опыта совсем. поэтому прошу выложить исходный код, искал по сети, там в основном разговоры и ничего конкретного... Confused
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tuxik

Тяпницо


Зарегистрирован: 02.07.2007
Сообщения: 1521

СообщениеДобавлено: Ср Окт 28, 2009 8:17 am    Заголовок сообщения:
Ответить с цитатой

ммм, как вариант скачать CMS какого-либо коммерческого сайта и посмотреть ее исходник: http://cmslist.ru/find_cms/ ("интернет-магазин").

Последний раз редактировалось: Tuxik (Ср Окт 28, 2009 9:30 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Ср Окт 28, 2009 8:41 am    Заголовок сообщения:
Ответить с цитатой

Реальный пример почти корзины можно посмотреть в моем самоучителе ПХП - там есть система проверки знаний, принцип хранения и передачи выбранных системой вопросов такой же как и в корзине.
Алгоритм такой:
1) выводим список товаров с checkbox, в value сохраняем ID товара
2) пользователь выбирает товары, нажимает submit
3) номера выбранных товаров передаются сценарию
4) сценарий сериализует массив чисел в строку и сохраняет ее в cookies браузера
5) при выводе корзины строка десерилизуется и превращается в массив, содержащий ID товара

Остальные функции по работе с корзиной (добавление нового товара, удаление товара) сводятся к изменению этого массива, полученного из cookies браузера в виде строки
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Ср Окт 28, 2009 10:21 am    Заголовок сообщения:
Ответить с цитатой

Tuxik, Спасибо, den, Спасибо.
Я вчера что то наделал Very Happy , у меня сессии хранят эти данные, в php.ini session.save_path заменил на SID, все работает и товары адекватно считает/сохраняет, но если подождать пока сессии истекают, то начинается абракадабра, ошибки появляются и прочее... наверное необходимо продливать время сесий?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Чт Окт 29, 2009 7:17 am    Заголовок сообщения:
Ответить с цитатой

den, Very Happy Very Happy
http://www.google.ru/search?q=%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0+%D0%B4%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%BB%D0%B8%D0%B7%D1%83%D0%B5%D1%82%D1%81%D1%8F+%D0%B8+%D0%BF%D1%80%D0%B5%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D1%82%D1%81%D1%8F+%D0%B2+%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Чт Окт 29, 2009 7:18 am    Заголовок сообщения:
Ответить с цитатой

лидирующая позиция в гугл
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Чт Окт 29, 2009 12:49 pm    Заголовок сообщения:
Ответить с цитатой

Как это все можно передать или записать в файл?

Цитата:

$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'].'&nbsp;'.$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>&nbsp;</td>
</tr>
</table>
<input type=\"submit\" name=\"update\" value=\"Обновить корзину\">&nbsp;&nbsp;
<input type=\"submit\" name=\"clear\" value=\"Очистить корзину\">&nbsp;&nbsp;
</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'].'&nbsp;'.$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>'


но он передает только последнее значение, тоесть в первом выводе данные возрастают с работой цикла, а когда пытаюсь передать, то передается лишь одно значение Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Чт Окт 29, 2009 2:42 pm    Заголовок сообщения:
Ответить с цитатой

Амир, Serialize(), UnSerialize()
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Чт Окт 29, 2009 6:50 pm    Заголовок сообщения:
Ответить с цитатой

den, я не могу понять как это применить к моему коду
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Чт Окт 29, 2009 8:28 pm    Заголовок сообщения:
Ответить с цитатой

Амир, а ты что в сессию запихнул массив товаров? интересное решение
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Чт Окт 29, 2009 11:44 pm    Заголовок сообщения:
Ответить с цитатой

[/quote]den, Да, Embarassed сам знаю что не лучшее решение, но все генетики так делают Very Happy
Если честно делал и по другому, вытаскивая из файла, но там тоже подводные камни Confused
Посмотри, пожалуйста, вот весь код

Цитата:


<?
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'].'&nbsp;'.$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>&nbsp;</td>
</tr>
</table>
<input type=\"submit\" name=\"update\" value=\"Обновить корзину\">&nbsp;&nbsp;
<input type=\"submit\" name=\"clear\" value=\"Очистить корзину\">
</form>";
} else print "Ваша корзина пуста!";
?>



может есть какой то выход Arrow
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
petrelius1150

Завсегдатай


Зарегистрирован: 25.01.2009
Сообщения: 492
Откуда: С-Петербург, Россия

СообщениеДобавлено: Пт Окт 30, 2009 6:01 am    Заголовок сообщения:
Ответить с цитатой

Амир, а Вы что, генетик? Shocked
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tuxik

Тяпницо


Зарегистрирован: 02.07.2007
Сообщения: 1521

СообщениеДобавлено: Пт Окт 30, 2009 7:12 am    Заголовок сообщения:
Ответить с цитатой

Дык по аватарке это видно )))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Амир

Участник тусовки


Зарегистрирован: 21.07.2009
Сообщения: 135

СообщениеДобавлено: Пт Окт 30, 2009 9:11 am    Заголовок сообщения:
Ответить с цитатой

petrelius1150, Да, задачи по генетике куда проще даются, чем php конструкции))

Tuxik, Сейчас будет узнавать кто ты, естественно по аватарке Very Happy , если ты не против
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
petrelius1150

Завсегдатай


Зарегистрирован: 25.01.2009
Сообщения: 492
Откуда: С-Петербург, Россия

СообщениеДобавлено: Пт Окт 30, 2009 11:11 am    Заголовок сообщения:
Ответить с цитатой

Амир, у меня есть один знакомый, энтомолог, доктор наук, профессор, который тоже очень любит делать сайты. У него очень неплохо получается. Можно посмотреть: http://www.agriento.narod.ru/index.html
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
На страницу 1, 2  След.
Страница 1 из 2
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис