powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Покритикуйте корзину заказов (php)
12 сообщений из 12, страница 1 из 1
Покритикуйте корзину заказов (php)
    #36417354
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-й пункт =(
...
Рейтинг: 0 / 0
Покритикуйте корзину заказов (php)
    #36418459
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
навернео я что то не понимаю, но зачем стока городить манипуляций с сессиями? Сессия же автоматов включаеться когда session_start() пишешь.
Почему сразу весь список товаров нельзя хранить в сесии? зачем использвоатеьь какую то временую таблицу? Зашло 1000 000 пользвоатлей, все понавыбирали товар, но никто ниче не купил. Ну и будет так в темповой таблице пару милионов записей хранить. Будет в сесиях храниться - сами убаятсья будут.
2. имхо так:
Код: plaintext
header('location:'.$_SERVER['HTTP_REFERER']);
...
Рейтинг: 0 / 0
Покритикуйте корзину заказов (php)
    #36418545
guest_112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я планирую что эта таблица будет не временной, а будет привязывать заказы к сессиям!
...
Рейтинг: 0 / 0
Покритикуйте корзину заказов (php)
    #36418628
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_112Я планирую что эта таблица будет не временной, а будет привязывать заказы к сессиям!
ну если она привязывает заказы к сессиям то с чего это она не временная? И почему, повтоюсь, эти же данные нельзя в сессии хранить?
...
Рейтинг: 0 / 0
Покритикуйте корзину заказов (php)
    #36418634
guest_112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да видимо так и придётся делать! =)
спс =)
...
Рейтинг: 0 / 0
Покритикуйте корзину заказов (php)
    #36426640
guest_112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переделал но почему то не работает =(
В корзину ничего не добавляется =(
Код: 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
Покритикуйте корзину заказов (php)
    #36426677
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> А вот код добавления товара в корзину!

Это весь код? Если весь, то там не хватает старта сессии, как минимум.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Покритикуйте корзину заказов (php)
    #36426706
Дадуда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Покритикуйте корзину заказов (php)
    #36427149
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.
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
Покритикуйте корзину заказов (php)
    #36427302
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топикстартер, зачем вы сериализуете массив когда в сессию загоняете? Почему мы просто массив сесии не присвоите?
...
Рейтинг: 0 / 0
Покритикуйте корзину заказов (php)
    #36428216
guest_112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ренат, да я и не знал что так можно =)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Покритикуйте корзину заказов (php)
    #37736549
Markovnigheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрите пожалуйста как реализована корзина в уроке:
Корзина товаров и оформление заказа
Там идет работа с куками и сессией. Новички также смогут ознакомиться с созданием интернет магазина с нуля в первых уроках.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Покритикуйте корзину заказов (php)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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