Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Щас помру. помогите сделать корзину!!!
 
 автор: Zilog   (22.03.2006 в 00:53)   письмо автору
 
 

Запутался окончательно и перестал чего либо понимать.
Просветите пожалуйста как сделать самую простую корзину с использованием сессий?

   
 
 автор: ck   (22.03.2006 в 00:58)   письмо автору
 
   для: Zilog   (22.03.2006 в 00:53)
 

Многомерный массив - что-то вида $_SESSION['buys'], где buys - вложенный массив (id товара => количество). На странице делаете форму и получаете в корзине данные по последней покупке. Или просто из адресной строки, методом $_GET. Так и накапливаете.

   
 
 автор: ck   (22.03.2006 в 01:39)   письмо автору
 
   для: ck   (22.03.2006 в 00:58)
 

Смерть-то откладывается?)) Могу подробней написать, если нужно.

   
 
 автор: Zilog   (23.03.2006 в 21:31)   письмо автору
 
   для: ck   (22.03.2006 в 01:39)
 

Ооо! Давай подробнее!!! :)))

Отвелкся от темы ненадолго. Но всё еще очень актуально!!!

   
 
 автор: Zilog   (23.03.2006 в 21:49)   письмо автору
 
   для: Zilog   (22.03.2006 в 00:53)
 

Как вообще правильно делать корзину?
С помощью куки или через сессии??

   
 
 автор: _robot   (23.03.2006 в 22:24)   письмо автору
 
   для: Zilog   (23.03.2006 в 21:49)
 

как вам удобней.
На сесии обычно делают если хотят продать большому количеству людей не парясь о скидках и бонусах. То есть пришёл -> увидел -> купил -> ушёл
На куках обычно делают если хотят запомнить посетителя и в дальнейшем делать ему скидку, запомнить адрес и проч. данные

   
 
 автор: Zilog   (23.03.2006 в 23:03)   письмо автору
 
   для: _robot   (23.03.2006 в 22:24)
 

Я так понимаю в обоих случаях один хрен надо регистрироваться. А раз так, значит пользователя можно помнить и без куков, так?

Хорошо, а как проще, куками или сессией?

   
 
 автор: CrazyAngel   (23.03.2006 в 23:32)   письмо автору
 
   для: Zilog   (23.03.2006 в 23:03)
 

Помоему _robot ответил на твой вопрос, сложность работы одинакова, на мой взгляд

   
 
 автор: Lelik   (23.03.2006 в 23:35)   письмо автору
 
   для: CrazyAngel   (23.03.2006 в 23:32)
 

Могу сбросить элементарный шаблон магазина(без способов оплаты но с корзиной сделеной сесиями) и без возможности регистрации(это уж сами делайте, но главное в шаблоне прописан метод разработки корзины)

   
 
 автор: Zilog   (23.03.2006 в 23:46)   письмо автору
 
   для: Lelik   (23.03.2006 в 23:35)
 

Да не, мне просто бы кто-нибудь обьяснил с парочкой небольших примеров - просто показать принцип, механизм работы - как добавить товар в корзину, и как эту корзину таскать по сессиям...

   
 
 автор: Lelik   (23.03.2006 в 23:49)   письмо автору
 
   для: Zilog   (23.03.2006 в 23:46)
 

В шаблоне это все есть, я по немукорзину для себя и делал - он просто очень хороший пример(это не в коем случае не версия какого-то коммерческого шаблона интернет магазина)

   
 
 автор: CrazyAngel   (23.03.2006 в 23:54)   письмо автору
 
   для: Zilog   (23.03.2006 в 23:46)
 

Сейчас буду объяснять

   
 
 автор: CrazyAngel   (23.03.2006 в 23:56)   письмо автору
 
   для: 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   (24.03.2006 в 00:13)   письмо автору
 
   для: 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)//пробегаемся по всему массиву циклом
{
@
$sqlmysql_query("select * from cat where id=$val;");//делаем нужные запросы
@$foomysql_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:15)   письмо автору
 
   для: 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:19)   письмо автору
 
   для: 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:22)   письмо автору
 
   для: 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)// пробегаемся по массиву 
{
$sqlmysql_query("select * from cat where id=$val;");
$foomysql_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:23)   письмо автору
 
   для: CrazyAngel   (24.03.2006 в 00:22)
 

этот скрипт ДАЛЕКО не идеал, но помоему научиться делать корзину можно, так что если есть вопросы задавай!

   
 
 автор: Zilog   (24.03.2006 в 00:23)   письмо автору
 
   для: CrazyAngel   (24.03.2006 в 00:19)
 

низкий поклон.

сейчас буду делать. о результатах доложу :)

   
 
 автор: chado   (24.03.2006 в 18:25)   письмо автору
 
   для: Zilog   (24.03.2006 в 00:23)
 

Респект, всем!

Тоже пытаюсь сделать простенький интернет-магзик, но нифига не получается...

2CrazyAngel не подскажете какой файл как называть (из вышеизложенных)???

   
 
 автор: куч1963   (25.03.2006 в 03:35)   письмо автору
 
   для: chado   (24.03.2006 в 18:25)
 

я изощрялся когдато ват так
Это файл с которого идет заказ

<?php 
//структура таблицы товаров
# Структура таблицы 'links'

CREATE TABLE 'links' (
  
'p_id' int(11NOT NULL auto_increment,
  
'name' varchar(64NOT NULL default '',
  
's_id' int(11NOT 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($stringENT_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,050);
//здесь изощрялся с цветом строк+++++++++++++++++++
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 
"&nbsp;*";
}
echo 
"&nbsp;<a href=\"index.php?pid=".$qlrow[0]."\">".$qlrow[1]."</a></td> 
<td align=\"left\">&nbsp;
$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>[*]-&nbsp;продукт находится в корзине</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:37)   письмо автору
 
   для: куч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 в 04:03)   письмо автору
 
   для: куч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:22)   письмо автору
 
   для: куч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 - это вроде как индификатор заказа, ничего придумать более не мог.

Написано коряво за это извиняйте, учусь.

   
 
 автор: CrazyAngel   (25.03.2006 в 07:39)   письмо автору
 
   для: chado   (24.03.2006 в 18:25)
 

Помоему вам лучше, разобраться в этом самому, просто разобрать код по кирпичикам, и поменять формы

От этого будет пользы больше для вас, но если така большая необходимость есть, то могу сказать, только скажи

   
 
 автор: chado   (25.03.2006 в 12:06)   письмо автору
 
   для: CrazyAngel   (25.03.2006 в 07:39)
 

Нет, я сам конечно хочу разобраться, но не знаю какой код в каком файле сохранять. Ладно сегодня посижу, если, что не получится - обращусь к Вам...

   
 
 автор: LedyX   (28.03.2006 в 15:17)   письмо автору
 
   для: CrazyAngel   (25.03.2006 в 07:39)
 

А, енто.. а как реализовать функцию remove в карзине. в часности неясно следующее.
Допустим есть файл korzina.php. Он заносит в корзину товары, выводит их на экран, и возле каждого товара - checkbox. а внизу кнопочка- remove. По идее нужно - выбрав несколько элементов и нажав кнопочку- чтобы удалились лишние товары. и при этом вывалилась опять карзина уже без товаров.

И вот вопрос- нужно в том же файле korzina.php реализовывать обработку кнопки ремув? если да- то как сделть чтобы кнопочка на странице- обрабатывалась той же самой странице(у меня не получается). А если нет- то как сделать - чтобы переход на другую страницу остался незамеченным для пользователя? то есть - как сделать автоматический переход на другую страницу.
Вот . Помоите плиз.

   
 
 автор: CrazyAngel   (28.03.2006 в 15:26)   письмо автору
 
   для: LedyX   (28.03.2006 в 15:17)
 

Там у меня есть пара ошибок выложить другую версию?

там все расписанно, незамеченным не как а можно чтоб страница автоматически перегружалась

   
 
 автор: CrazyAngel   (28.03.2006 в 15:26)   письмо автору
 
   для: LedyX   (28.03.2006 в 15:17)
 

Там у меня есть пара ошибок выложить другую версию?

там все расписанно, незамеченным не как а можно чтоб страница автоматически перегружалась

   
 
 автор: chado   (28.03.2006 в 18:42)   письмо автору
 
   для: CrazyAngel   (28.03.2006 в 15:26)
 

Выкладывайте...

   
 
 автор: chado   (28.03.2006 в 18:48)   письмо автору
 
   для: chado   (28.03.2006 в 18:42)
 

Респект, всем!!! Подскажите, я в правильном направлении мыслю???

Сначала надо создать файл db.php, т.е. базу данных. (наверное, файл должен называться bd.php?). Но вот, что писать в этом файле, я пока не зняю (судя по тому, что написано в коде CrazyAngel'а).

   
 
 автор: CrazyAngel   (28.03.2006 в 20:07)   письмо автору
5.6 Кб
 
   для: chado   (28.03.2006 в 18:48)
 

Там происходит соединение с базой

к стати с корзиной разберетесь сами OK

что там к чему, потому что там не только каркас корзины, а уже действующая

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования