Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Покритикуйте корзину заказов (php) / 12 сообщений из 12, страница 1 из 1
19.01.2010, 10:34:23
    #36417354
guest_112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Здравствуйте сделал корзину заказов для маленького интернет магазина.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
session_start();
...
...
...
echo "<table class='newstable' cellspacing='5'>\n";
echo "<tr>\n";
echo "<td class='newsitem'>\n";
echo "<h2 class='hdr2'>Корзина</h2>\n";
$col= 0 ;
$rub= 0 ;
$bask = "SELECT * FROM tbl_users WHERE session ='".session_id()."'";
$res_b = mysql_query($bask) or die(mysql_error());
$number = mysql_num_rows($res_b);
if ($number ==  0 ) {
echo "INSERT INTO tbl_users (id, session) VALUES (NULL, '".session_id()."')";
$into = "INSERT INTO tbl_users (id, session) VALUES (NULL, '".session_id()."')";
mysql_query($into) or die(mysql_error());
} else {
$into = "Select pr.name, pr.kolvo, pr.price, ses.count from tbl_users us, ses_prod ses, tbl_products pr WHERE us.id = ses.user_id AND ses.prod_id =  pr.id AND us.session = '".session_id()."'";
$into_b = mysql_query($into) or die(mysql_error());
$num = mysql_num_rows($into_b);
if ($num !=  0 ) {
while ($row=mysql_fetch_array($into_b)) {
$col=$col+$row[ 3 ];
$rub=$rub+$row[ 2 ];
}
} 
}
echo "В вашей корзине <b>$col</b> товаров на сумму <b>$rub</b> рублей.  <p><a href=''>Оформить заказ</a>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
Но, что то мне подсказывает что получилось как то коряво.
Не будет ли этот алгоритм сильно увеличивать загрузку страниц ?
На вид вроде работает нормально но плохое предчувствие не покидает меня =)
И ещё хотел спросить про алгоритм добавления товара в корзину!
Как лучше его реализовать ?
Пока на ум приходит:
1.Отправлять id товара в скрипт который будет присваивать этот товар к id сессии
2.Как то вернуться на страницу с которого был отправлен запрос и что бы она обновилась.

Не могу понять как мне сделать 2-й пункт =(
...
Рейтинг: 0 / 0
19.01.2010, 16:13:23
    #36418459
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
навернео я что то не понимаю, но зачем стока городить манипуляций с сессиями? Сессия же автоматов включаеться когда session_start() пишешь.
Почему сразу весь список товаров нельзя хранить в сесии? зачем использвоатеьь какую то временую таблицу? Зашло 1000 000 пользвоатлей, все понавыбирали товар, но никто ниче не купил. Ну и будет так в темповой таблице пару милионов записей хранить. Будет в сесиях храниться - сами убаятсья будут.
2. имхо так:
Код: plaintext
header('location:'.$_SERVER['HTTP_REFERER']);
...
Рейтинг: 0 / 0
19.01.2010, 16:44:49
    #36418545
guest_112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Я планирую что эта таблица будет не временной, а будет привязывать заказы к сессиям!
...
Рейтинг: 0 / 0
19.01.2010, 17:06:11
    #36418628
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
guest_112Я планирую что эта таблица будет не временной, а будет привязывать заказы к сессиям!
ну если она привязывает заказы к сессиям то с чего это она не временная? И почему, повтоюсь, эти же данные нельзя в сессии хранить?
...
Рейтинг: 0 / 0
19.01.2010, 17:07:41
    #36418634
guest_112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Да видимо так и придётся делать! =)
спс =)
...
Рейтинг: 0 / 0
23.01.2010, 14:28:30
    #36426640
guest_112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Переделал но почему то не работает =(
В корзину ничего не добавляется =(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
session_start();
$arr = unserialize($_SESSION['bask']); 
if (count($arr)> 0 ) 
{
for ($i =  0 ; $i < count($arr); $i++) {
$col=$col + $arr[$i][ 2 ];
$rub=$rub + $arr[$i][ 3 ];
}
} else {
$col= 0 ;
$rub= 0 ;
}
echo "В вашей корзине <b>$col</b> товаров на сумму <b>$rub</b> рублей.  <p><a href=''>Оформить заказ</a>\n";
А вот код добавления товара в корзину!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?
if ( isset($_GET["id"])){
$hostname = "";
$usern = "";
$pass = "";
$dbName = "";
mysql_connect($hostname,$usern,$pass) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die("Не могу подключиться к базе"); 
$query = "SELECT * FROM tbl_products WHERE id =".$_GET["id"];
$res = mysql_query($query) or die(mysql_error());
$row=mysql_fetch_array($res);
$arr = unserialize($_SESSION['bask']); 
$i=count($arr);
$arr[$i][ 0 ]=$row[ 0 ];
$arr[$i][ 1 ]=$row[ 3 ]."-".$row[ 4 ];
$arr[$i][ 2 ]= 1 ;
$arr[$i][ 3 ]=$row[ 6 ];
$_SESSION['bask'] = serialize($arr); 
header('location:'.$_SERVER['HTTP_REFERER']);
} else
{
echo "error";
}
?>
...
Рейтинг: 0 / 0
23.01.2010, 15:14:33
    #36426677
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
> А вот код добавления товара в корзину!

Это весь код? Если весь, то там не хватает старта сессии, как минимум.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23.01.2010, 16:08:26
    #36426706
Дадуда
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
guest_112Здравствуйте сделал корзину заказов для маленького интернет магазина.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
session_start();
...
...
...
echo "<table class='newstable' cellspacing='5'>\n";
echo "<tr>\n";
echo "<td class='newsitem'>\n";
echo "<h2 class='hdr2'>Корзина</h2>\n";
$col= 0 ;
$rub= 0 ;
$bask = "SELECT * FROM tbl_users WHERE session ='".session_id()."'";
$res_b = mysql_query($bask) or die(mysql_error());
$number = mysql_num_rows($res_b);
if ($number ==  0 ) {
echo "INSERT INTO tbl_users (id, session) VALUES (NULL, '".session_id()."')";
$into = "INSERT INTO tbl_users (id, session) VALUES (NULL, '".session_id()."')";
mysql_query($into) or die(mysql_error());
} else {
$into = "Select pr.name, pr.kolvo, pr.price, ses.count from tbl_users us, ses_prod ses, tbl_products pr WHERE us.id = ses.user_id AND ses.prod_id =  pr.id AND us.session = '".session_id()."'";
$into_b = mysql_query($into) or die(mysql_error());
$num = mysql_num_rows($into_b);
if ($num !=  0 ) {
while ($row=mysql_fetch_array($into_b)) {
$col=$col+$row[ 3 ];
$rub=$rub+$row[ 2 ];
}
} 
}
echo "В вашей корзине <b>$col</b> товаров на сумму <b>$rub</b> рублей.  <p><a href=''>Оформить заказ</a>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
Но, что то мне подсказывает что получилось как то коряво.
Не будет ли этот алгоритм сильно увеличивать загрузку страниц ?
На вид вроде работает нормально но плохое предчувствие не покидает меня =)
И ещё хотел спросить про алгоритм добавления товара в корзину!
Как лучше его реализовать ?
Пока на ум приходит:
1.Отправлять id товара в скрипт который будет присваивать этот товар к id сессии
2.Как то вернуться на страницу с которого был отправлен запрос и что бы она обновилась.

Не могу понять как мне сделать 2-й пункт =(

смотри лучше как сделано в нормальных шопах: virtuemart, oxid, magento...
...
Рейтинг: 0 / 0
24.01.2010, 01:56:52
    #36427149
guest_112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Разобрался )))
Вот рабочий вариант =)
Добавление в корзину:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<?
if (isset($_GET["id"])){
session_start();
$hostname = "";
$usern = "";
$pass = "";
$dbName = "";
mysql_connect($hostname,$usern,$pass) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die("Не могу подключиться к базе"); 
$query = "SELECT * FROM tbl_products WHERE id='" . mysql_real_escape_string($_GET["id"]) . "'";
$res = mysql_query($query) or die(mysql_error());
$row=mysql_fetch_array($res);
$arr = unserialize($_SESSION['bask']); 
if ($arr[ 0 ][ 1 ] != '')
{
$i=count($arr);
$arr[$i][ 0 ]=$row[ 0 ];
$arr[$i][ 1 ]=$row[ 3 ]."-".$row[ 4 ];
$arr[$i][ 2 ]= 1 ;
$arr[$i][ 3 ]=$row[ 6 ];
}
else
{
$arr[ 0 ][ 0 ]=$row[ 0 ];
$arr[ 0 ][ 1 ]=$row[ 3 ]."-".$row[ 4 ];
$arr[ 0 ][ 2 ]= 1 ;
$arr[ 0 ][ 3 ]=$row[ 6 ];
}
$_SESSION['bask'] = serialize($arr); 
header('location:'.$_SERVER['HTTP_REFERER']);
} else
{
echo "error";
}
?>
Вывод корзины:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
$arr = unserialize($_SESSION['bask']); 
echo count($arr);
echo $arr;
if (count($arr)> 0 ) 
{
for ($i =  0 ; $i < count($arr); $i++) {
$col=$col + $arr[$i][ 2 ];
$rub=$rub + $arr[$i][ 3 ];
}
} else {
$col= 0 ;
$rub= 0 ;
}
echo "В вашей корзине <b>$col</b> товаров на сумму <b>$rub</b> рублей.  <p><a href=''>Оформить заказ</a>\n";
...
Рейтинг: 0 / 0
24.01.2010, 11:36:19
    #36427302
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Топикстартер, зачем вы сериализуете массив когда в сессию загоняете? Почему мы просто массив сесии не присвоите?
...
Рейтинг: 0 / 0
25.01.2010, 09:50:13
    #36428216
guest_112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Ренат, да я и не знал что так можно =)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.04.2012, 14:48:31
    #37736549
Markovnigheg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте корзину заказов (php)
Посмотрите пожалуйста как реализована корзина в уроке:
Корзина товаров и оформление заказа
Там идет работа с куками и сессией. Новички также смогут ознакомиться с созданием интернет магазина с нуля в первых уроках.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Покритикуйте корзину заказов (php) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]