|
|
|
| Запутался окончательно и перестал чего либо понимать.
Просветите пожалуйста как сделать самую простую корзину с использованием сессий? | |
|
|
|
|
|
|
|
для: Zilog
(22.03.2006 в 00:53)
| | Многомерный массив - что-то вида $_SESSION['buys'], где buys - вложенный массив (id товара => количество). На странице делаете форму и получаете в корзине данные по последней покупке. Или просто из адресной строки, методом $_GET. Так и накапливаете. | |
|
|
|
|
|
|
|
для: ck
(22.03.2006 в 00:58)
| | Смерть-то откладывается?)) Могу подробней написать, если нужно. | |
|
|
|
|
|
|
|
для: ck
(22.03.2006 в 01:39)
| | Ооо! Давай подробнее!!! :)))
Отвелкся от темы ненадолго. Но всё еще очень актуально!!! | |
|
|
|
|
|
|
|
для: Zilog
(22.03.2006 в 00:53)
| | Как вообще правильно делать корзину?
С помощью куки или через сессии?? | |
|
|
|
|
|
|
|
для: Zilog
(23.03.2006 в 21:49)
| | как вам удобней.
На сесии обычно делают если хотят продать большому количеству людей не парясь о скидках и бонусах. То есть пришёл -> увидел -> купил -> ушёл
На куках обычно делают если хотят запомнить посетителя и в дальнейшем делать ему скидку, запомнить адрес и проч. данные | |
|
|
|
|
|
|
|
для: _robot
(23.03.2006 в 22:24)
| | Я так понимаю в обоих случаях один хрен надо регистрироваться. А раз так, значит пользователя можно помнить и без куков, так?
Хорошо, а как проще, куками или сессией? | |
|
|
|
|
|
|
|
для: Zilog
(23.03.2006 в 23:03)
| | Помоему _robot ответил на твой вопрос, сложность работы одинакова, на мой взгляд | |
|
|
|
|
|
|
|
для: CrazyAngel
(23.03.2006 в 23:32)
| | Могу сбросить элементарный шаблон магазина(без способов оплаты но с корзиной сделеной сесиями) и без возможности регистрации(это уж сами делайте, но главное в шаблоне прописан метод разработки корзины) | |
|
|
|
|
|
|
|
для: Lelik
(23.03.2006 в 23:35)
| | Да не, мне просто бы кто-нибудь обьяснил с парочкой небольших примеров - просто показать принцип, механизм работы - как добавить товар в корзину, и как эту корзину таскать по сессиям... | |
|
|
|
|
|
|
|
для: Zilog
(23.03.2006 в 23:46)
| | В шаблоне это все есть, я по немукорзину для себя и делал - он просто очень хороший пример(это не в коем случае не версия какого-то коммерческого шаблона интернет магазина) | |
|
|
|
|
|
|
|
для: Zilog
(23.03.2006 в 23:46)
| | Сейчас буду объяснять | |
|
|
|
|
|
|
|
для: CrazyAngel
(23.03.2006 в 23:54)
| | Для начала скрипт добавления товара в сессию:
<?
session_start();//начинаем сессию
header("Content-Type: text/html; charset=windows-1251");
$id=$_GET['id'];//принимаем id
$_SESSION['Tovar'][]=$id;// заносим id в сессию(масив)
echo("
<html>
<body bgcolor='#ffff00'>
Товар был добавлен в корзину
</body>
</html>");
?>
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(23.03.2006 в 23:56)
| | Вот скрипт уже выбора выбранных товаров
<html>
<body>
<html>
<body bgcolor='#ffff00'>
<form action="zakazat.php" METHOD="mails.php">
<b>Выбранные товары</b>
<table border="1">
<tr>
<td>
Имя
</td>
</tr>
<?
session_start();//открываем сессию
header("Content-Type: text/html; charset=windows-1251");
require "db.php";
foreach($_SESSION['Tovar'] as $val)//пробегаемся по всему массиву циклом
{
@$sql= mysql_query("select * from cat where id=$val;");//делаем нужные запросы
@$foo= mysql_fetch_array ($sql);
?>
<tr>
<td>
<?=$foo[name]; ?>
</td>
</tr>
<? // ставим чек боксы ?>
<INPUT TYPE=checkbox NAME="<? echo("num".$num); ?>" VALUE="<?=$foo['article']; ?>" CHECKED>
//это наш счетчик чек боксов, естественно каждый раз увеличиваем значение
$num=$num+1;
}
?>
<tr>
<td>
<?// Кнопка на оформление заказа ?>
<input type=submit value="Оформить заказ">
</form>
</td>
<td>
<?
//Форма на очищение карзины
<form action="korzina_cl.php">
<input type=submit value="Очистить корзину" >
</form>
</tr>
</table>
</body>
</html>
|
уф самое большое позади | |
|
|
|
|
|
|
|
для: CrazyAngel
(24.03.2006 в 00:13)
| | Скрипт очистки заказа
<html>
<head>
<title></title>
</head>
<body bgcolor='#ffff00'>
<?php
session_start();//открываем сессию
header("Content-Type: text/html; charset=windows-1251");
unset($_SESSION["Tovar")//уничтожаем массив
session_destroy();//закрываем сессию
?>
Корзина очищенна
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(24.03.2006 в 00:15)
| | скрипт самого заказа
<html>
<head>
<title></title>
</head>
<body bgcolor='#ffff00'>
<?php
session_start();
header("Content-Type: text/html; charset=windows-1251");
// перебираем все наши выбранные чекбоксы циклом, и делаем новый массив
while($_GET['num'.$num]!=0)
{
$_SESSION['arr'][]=$_GET['num'.$num];
}
//Далее уже отправлем заказ
?>
<form name="zakaz" action='mail_act.php'>
<table>
<tr>
<td>
ФИО
</td>
<td>
<input name="name" type="text">
</td>
</tr>
<input type="submit" value="Заказать">
</td>
</tr>
</table>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(24.03.2006 в 00:19)
| | вот собственно последний скрипт, у меня это отправка заказанных товаров на почту админу
<?
session_start();
header("Content-Type: text/html; charset=windows-1251");
require "db.php";
// это оформление заказа
$msg="Заказанные товары \n ==================== \n";
foreach($_SESSION['Tovar'] as $val)// пробегаемся по массиву
{
$sql= mysql_query("select * from cat where id=$val;");
$foo= mysql_fetch_array ($sql);
$firm = str_replace('"'," ",$foo['firm']);
$msg=$msg."Имя товара - ".$foo['name']."\nФирма - ".
$firm."\nАртикул - ".$foo['article']."\n ==================== \n";
}
$msg=$msg."Заказчик\n----------------\nФИО - ".$_GET['name']."\nE-mail - ".$_GET['mail']."\nТелефон - ".$_GET['p']."\n----------------\n";
include("./mail_class.php");
$mail = new Mail();
$mail -> to = "topstylus@mail.ru";
$mail -> subject = "Заказ";
$mail -> msg =$msg;
$mail -> rigorous_email_check = 0;
if($mail->send()){
}else{
echo("error");
}
echo("<br>");
?>
<html>
<body bgcolor="#ffff00">
<?
echo("Ваш заказ отправлен и скоро будет обработан<br>");
unset($_SESSION["arr"]);
unset($_SESSION["Tovar"]);// уничтожаем массив, и закрываем сессию
session_destroy();
?>
<br>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(24.03.2006 в 00:22)
| | этот скрипт ДАЛЕКО не идеал, но помоему научиться делать корзину можно, так что если есть вопросы задавай! | |
|
|
|
|
|
|
|
для: CrazyAngel
(24.03.2006 в 00:19)
| | низкий поклон.
сейчас буду делать. о результатах доложу :) | |
|
|
|
|
|
|
|
для: Zilog
(24.03.2006 в 00:23)
| | Респект, всем!
Тоже пытаюсь сделать простенький интернет-магзик, но нифига не получается...
2CrazyAngel не подскажете какой файл как называть (из вышеизложенных)??? | |
|
|
|
|
|
|
|
для: chado
(24.03.2006 в 18:25)
| | я изощрялся когдато ват так
Это файл с которого идет заказ
<?php
//структура таблицы товаров
# Структура таблицы 'links'
#
CREATE TABLE 'links' (
'p_id' int(11) NOT NULL auto_increment,
'name' varchar(64) NOT NULL default '',
's_id' int(11) NOT NULL default '',
'dateadd' datetime default NULL,
'lang' varchar(32) default NULL,
'homepage' varchar(255) default NULL,
'razmer' int(11) default NULL,
'description' varchar(255) default NULL,
'descr' text,
'pict' varchar(64) default NULL,
'meta' text,
PRIMARY KEY ('p_id')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 ;
#
function strings_clear($string)
{
$string = trim($string);
$string = preg_replace("/[^\w_\.\-]/", "", $string);
return htmlspecialchars($string, ENT_QUOTES);
}
$sid = strings_clear($_GET['sid']);
$qs = mysql_query
$ql = mysql_query
("select p_id,name,razmer,description from links where s_id='$sid' order by name");
// если полученное кол-во ссылок 0, то сообщаем об этом
if(mysql_num_rows($ql) <= 0) {
echo "<tr><td><h1>Нет
ссылок</h1></td></tr></table>\n"; }
// теперь обходим все ссылки по-очереди и выводим их.
//+++++++++++++++++++++++++++++++++++++++++++++++
else{
echo "<form method=\"post\" name=\"addprocuct\" action=\"cart_one.php\">
<tr><td ><b>Наименования </b></td><td ><b>Характеристика</b></td><td ><b>Mb</b></td><td colspan=\"2\"><b>Заказ</b></td></tr>
<input type=\"hidden\" name=\"addme\" value=\"addtocart\">\n";
for($i=0;$i<$qlrow = mysql_fetch_row($ql);$i++)
{
$description =$qlrow[3];
$description = substr ($description,0, 50);
//здесь изощрялся с цветом строк+++++++++++++++++++
if($i%2== 1)
{
$a= '#ffe4ca';
}
else
{
$a = '#FCF8E2';
}
$tr= '<tr bgcolor=\"$a\">';
eval( "\$tr = \"$tr\";" );
echo $tr;
echo "<td align=\"left\">\n";
//+++++++++++++++++++++++++++++ Можно выкинуть вышеотмеченное
if (isset($_SESSION['cadd_ses'][$qlrow[0]]))
{
echo " *";
}
echo " <a href=\"index.php?pid=".$qlrow[0]."\">".$qlrow[1]."</a></td>
<td align=\"left\"> $description</td><td>".$qlrow[2]."</td>
<td><INPUT TYPE=\"checkbox\" name=\"cadd[]\" VALUE=\"".$qlrow[0]."\">
<td>\n";
//когда товар есть - появляется надпись удалить и изменяется ризунок, ну типа знак корзины на крест
if (isset($_SESSION['cadd_ses'][$qlrow[0]]))
{
echo "<INPUT type=\"image\" title=\"Удалить продукт\"><br>\n";}
else
{
echo "<INPUT type=\"image\" title=\"Добавить продукт\"><br>\n";
};
echo "</td></tr>\n";
}
echo "<tr><td colspan=\"5\" ><br>[*]- продукт находится в корзине</td></tr>
</table><br>
<center><input type=\"image\" title=\"Добавить продукт\">
<a href=\"cart.php\">В корзину</a></form>
</center></center><br><br>\n";
}
?>
|
| |
|
|
|
|
|
|
|
для: куч1963
(25.03.2006 в 03:35)
| | Этот файл отвечает за добавление и удаление продукта при редактировании
<?php
$referer=getenv("HTTP_REFERER");
if (! isset($_SESSION['cadd_ses']) && isset($_POST['addme']))
{
$cadd_ses=array();
while ( $elements=each($_POST['cadd']) )
{
$cadd_ses[$elements["value"]]=1;
}
$_SESSION['cadd_ses']=$cadd_ses;
}
else if (isset($cadd[0]) )
{
while ( $elements=each($_POST['cadd']) )
{
if (isset($_SESSION['cadd_ses'][$elements["value"]])) //удаление
unset($_SESSION['cadd_ses'][$elements["value"]]);
else
$_SESSION['cadd_ses'][$elements["value"]]=1;
}
}
header("Location: $referer");
?>
|
| |
|
|
|
|
|
|
|
для: куч1963
(25.03.2006 в 03:37)
| | это файл корзины
<?php
$referer= $_SERVER['HTTP_REFERER'];
if (isset($_GET['delfrombin']))
{
unset($_SESSION['cadd_ses'][$_GET['delfrombin']]);
header("Location: $referer");
}
if (!empty($_SESSION['cadd_ses']))
{
echo "<form action=\"check.php\" method=\"post\">";
$j=0;
while ($element=each($_SESSION['cadd_ses']))
{
$id=$element["key"];
$result = mysql_query("select * from links where p_id=$id") or die (mysql_error(). " : ".mysql_errno());
$row=mysql_fetch_object($result);
echo "<a href='index.php?pid=$row->p_id' >$row->name</a>
<input type=\"hidden\" name=names[] value=".str_replace(" ","_",$row->name).">
<input type=\"hidden\" name=razm[] value=$row->razmer>
<a href='index.php?delfrombin=$row->p_id'>Удалить продукт</a></td></tr>";
$j++;
$razm[]=$row->razmer;
$k=0;
for ($i=0; $i<count($razm); $i++)
{
$k += $razm[$i];
}
}
echo"<input type=\"hidden\" name=\"check\" value=\"1\">\n";
echo"<input type=\"hidden\" name=\"razm\" value=$k>\n";
}
}
echo"<input type=\"image\" src=img value=\"Оформить\"></form>";
}
else
{
echo "Ваша корзина пуста!";
}
?>
после отправляешь на форму оформления заказа
ну типа данные пользавателя на проверку и выводишьто что он заказал
при подтверждении заказа на форму письма и записывал в файл, ну для того ьщл, чтобы можнобыло просмотреть историю
|
| |
|
|
|
|
|
|
|
для: куч1963
(25.03.2006 в 04:03)
| | это кусок файла для записи в файл истории а следом идет отправка данных на почту продавца и покупателя, типа получен заказ и вы сделали заказ
mt_srand((double)microtime()*1000000);
$ran = mt_rand(0,9999999);
//здесь пишу файлы о заказе для истории
$ft = fopen("zakaz/history/rec.".$log, 'a+' );
$names=$_POST['dum'];
fputs($ft,$names[$i]."||");
fputs($ft,$oplata."||");
fputs($ft,$cena."||");
fputs($ft,date("j M Y ")."||");
fputs($ft,$ran."\n");
fclose( $ft );
|
$ran - это вроде как индификатор заказа, ничего придумать более не мог.
Написано коряво за это извиняйте, учусь. | |
|
|
|
|
|
|
|
для: chado
(24.03.2006 в 18:25)
| | Помоему вам лучше, разобраться в этом самому, просто разобрать код по кирпичикам, и поменять формы
От этого будет пользы больше для вас, но если така большая необходимость есть, то могу сказать, только скажи | |
|
|
|
|
|
|
|
для: CrazyAngel
(25.03.2006 в 07:39)
| | Нет, я сам конечно хочу разобраться, но не знаю какой код в каком файле сохранять. Ладно сегодня посижу, если, что не получится - обращусь к Вам... | |
|
|
|
|
|
|
|
для: CrazyAngel
(25.03.2006 в 07:39)
| | А, енто.. а как реализовать функцию remove в карзине. в часности неясно следующее.
Допустим есть файл korzina.php. Он заносит в корзину товары, выводит их на экран, и возле каждого товара - checkbox. а внизу кнопочка- remove. По идее нужно - выбрав несколько элементов и нажав кнопочку- чтобы удалились лишние товары. и при этом вывалилась опять карзина уже без товаров.
И вот вопрос- нужно в том же файле korzina.php реализовывать обработку кнопки ремув? если да- то как сделть чтобы кнопочка на странице- обрабатывалась той же самой странице(у меня не получается). А если нет- то как сделать - чтобы переход на другую страницу остался незамеченным для пользователя? то есть - как сделать автоматический переход на другую страницу.
Вот . Помоите плиз. | |
|
|
|
|
|
|
|
для: LedyX
(28.03.2006 в 15:17)
| | Там у меня есть пара ошибок выложить другую версию?
там все расписанно, незамеченным не как а можно чтоб страница автоматически перегружалась | |
|
|
|
|
|
|
|
для: LedyX
(28.03.2006 в 15:17)
| | Там у меня есть пара ошибок выложить другую версию?
там все расписанно, незамеченным не как а можно чтоб страница автоматически перегружалась | |
|
|
|
|
|
|
|
для: CrazyAngel
(28.03.2006 в 15:26)
| | Выкладывайте... | |
|
|
|
|
|
|
|
для: chado
(28.03.2006 в 18:42)
| | Респект, всем!!! Подскажите, я в правильном направлении мыслю???
Сначала надо создать файл db.php, т.е. базу данных. (наверное, файл должен называться bd.php?). Но вот, что писать в этом файле, я пока не зняю (судя по тому, что написано в коде CrazyAngel'а). | |
|
|
|
|
 5.6 Кб |
|
|
для: chado
(28.03.2006 в 18:48)
| | Там происходит соединение с базой
к стати с корзиной разберетесь сами OK
что там к чему, потому что там не только каркас корзины, а уже действующая | |
|
|
|