Делаем файл basket.php3 - он у нас ответственный за добавление записей в корзину и просмотр этой корзины:
Файл basket.php3
<? require ( "cookie.php3"); ?>
<html> <head> <body>
<div align="center"><p>Содержимое вашей корзины</p></div>
<table border=1 align="center"> <tr> <td>Наименование товара</td> <td>Цена</td> <td>Кол-во</td> <td>Сумма</td> <td>Удалить</td> </tr>
<?php $table_4 = "shop_tmp";
echo "<form method='post' action='$php_self'>";
$summa = $price*$quantity; $activated = time();
Добавление товаров в корзину
function add() {
global $uid, $activated, $goods, $price, $quantity, $summa, $goods_id, $table_4; require ( "connect.php3");
$result = mysql($dbname, "select * from $table_4 where (goods_id='$goods_id') and (uid='$uid') " ); $num = mysql_num_rows($result);
if ($num > 0) // значит такой товар в корзине уже есть и надо увеличить кол-во и сумму { $result_1=mysql($dbname, "select * from $table_4 where (goods_id='$goods_id') and (uid='$uid') " );
$quantity_table=mysql_result($result_1,0, "quantity"); $price=mysql_result($result_1,0, "price");
$quantity_total=$quantity_table+$quantity; $summa_total=$quantity_total*$price;
$sql= "update $table_4 set quantity=$quantity_total, summa=$summa_total where goods_id='$goods_id' and uid='$uid'"; mysql_db_query($dbname,$sql); }
else // такого товара для этого пользователя еще нет - просто добавляем {
$sql_insert = "insert into $table_4 (id,uid,activated,goods,price,quantity,summa,goods_id) values ('','$uid',$activated,'$goods',$price,$quantity,$summa,'$goods_id')";
mysql($dbname,$sql_insert); }
view(); // добавили и вызывваем функцию для просмотра корзины }
function delete() { global $id, $table_4; require ( "connect.php3"); $result = mysql($dbname, "delete from $table_4 where (id='$id')"); view(); }
function delete_all() { global $uid, $table_4; require ( "connect.php3"); $result = mysql($dbname, "delete from $table_4 where (uid='$uid')"); view(); }
function view() { global $uid, $activated, $table_4; require ( "connect.php3");
$result = mysql($dbname, "select * from $table_4 where (uid='$uid') order by goods" ); $num = mysql_num_rows($result);
if ($num == 0) { echo "<tr>"; echo "<td colspan=5 align=center><p>В Вашей корзине нет ни одного товара! </td></tr>"; }
else {
$total=0.00; $i=0;
while($i<$num) { $goods=mysql_result($result,$i, "goods"); $goods_id=mysql_result($result,$i, "goods_id"); $quantity=mysql_result($result,$i, "quantity"); $id=mysql_result($result,$i, "id"); $price=mysql_result($result,$i, "price"); $summa=mysql_result($result,$i, "summa");
echo "<tr>n <td> $goods </td>n <td> $price </td>n <td> $quantity шт. </td>n <td> $summa </td>n <td> <a href='basket.php3?action=delete&id=$id&uid=$uid'>Удалить</a></td>n </tr>n";
$total=$summa+$total; $i++;
}
} echo "<tr> <td colspan=5 align=center><p>Общая сумма заказа - $total руб.</td></tr>"; }
if ($add) { add(); }
elseif ($action== "delete") {delete(); }
elseif ($empty) {delete_all(); }
else { view(); }
?> </table></form>
<div align="center"><br>
<form method='post' action='order.php3'> <input type="hidden" name="uid" value=" <? echo "$uid"; ?>"> <input type="submit" name="order" value="Оформить заказ"> </form>
<? echo "<form method='post' action='$php_self'>"; ?> <input type='hidden' name="uid" value=" <? echo "$uid"; ?>"> <input type="submit" name="empty" value="Очистить корзину"> </form>
</div> </body> </html> ================================================================
3) Теперь осталось сформировать текст письма:
Файл order.php3
<html> <head> <body> <form name='order' action='end.php3' method='post'> Ваше имя и фамилия <input type="text" name="name" size="40" maxlength="60"><br> e-mail <input type="text" name="email" size="40" maxlength="40"><br>
<center> Сейчас заказаны следующие позиции: </center>
<table border=1 align="center"> <tr> <td>Артикул товара</td> <td>Наименование товара</td> <td>Цена</td> <td>Кол-во</td> <td>Сумма</td> </tr>
<?php { $table_4 = "shop_tmp";
require ( "connect.php3");
$result = mysql($dbname, "select * from $table_4 where (uid='$uid')" ); $num = mysql_numrows($result);
if ($num == 0) { echo "<tr>"; echo "<td colspan=5>В Вашей корзине нет ни одного товара! </td></tr>"; }
else { $body = ""; $total=0; $i=0;
while($i<$num) { $goods=mysql_result($result,$i, "goods"); $price=mysql_result($result,$i, "price"); $goods_id=mysql_result($result,$i, "goods_id"); $quantity=mysql_result($result,$i, "quantity"); $id=mysql_result($result,$i, "id"); $summa=mysql_result($result,$i, "summa"); $total=$total+$summa;
$body_1= "<tr><td> $goods_id </td> <td> $goods </td><td> $price руб.</td> <td>$quantity шт.</td><td> $summa руб.</td></tr>";
echo $body_1;
$body .= $body_1;
$i++; }
}
$body = htmlspecialchars ($body);
echo "<tr> <td colspan=5 align=center>Общая сумма заказа - $total руб. </td></tr> <input type=hidden name='total' value='$total'> <input type=hidden name='body' value="$body"> <input type=hidden name='uid' value='$uid'>"; }
?> </table> <br> <div align="center"><input type="submit" name="submit" value="Закончить оформление заказа"></div> </form> </body></html>
4) ... и отправить письма (клиенту и менеджеру) Да, необходимый комментарий. Я на первой странице своего сайта указывал что это просто СОВЕТЫ, а никак не готовые решения. И что необходимо почитать кое-что еще прежде чем браться за написание. В данном случае, я намекаю на статью "приемы безопасного программирования на php". Вот посмотрите листинг следующего файла и прочитайте то, о чем я говорю - сразу станет ясно где дыра...
Файл end.php3
<? if ($name == "") { echo "Вы не указали свое имя!"; exit; }
elseif ($email == "") { echo "Вы не указали адрес email!"; exit;}
else {
//$message & $header - это для отправки менеджеру //$message_1 & $header_1 - это для отправки клиенту
$message= "<html><body><font size='+1'><p align='justify'> Новый заказ с сайта www.nnn.net.<br> Сведения о покупателе:<br> Имя - $name<br> Компания - $company<br> Телефон - $phone<br> e-mail - $email<br><br> Содержание заказа:<br><br> <table border=1> $body <tr><td colspan=5><b> Всего на сумму - $total руб.</b></td></tr> </table></font></p></body></html> ";
$header= "to: info@nnn.netnfrom: mail-robot@nnn.netnreply-to: $emailnx-mailer: php auto-mailerncontent-type: text/html;nmime-version: 1.0n ";
$message_1= "<html><body><font size='+1'><p align='justify'> Уважаемый $name!n На сайте фирмы 'nnn' (www.nnn.net) Вами был сделан заказ: <br><br> <table border=1> $body <tr><td colspan=5><b> Всего на сумму - $total руб.</b></td></tr> </table><br> Наши менеджеры свяжутся с Вами в самое ближайшее время для уточнения деталей. Спасибо. </font></p></body></html>";
$header_1= "to: $emailnfrom: mail-robot@nnn.netnreply-to: info@nnn.netnx-mailer: php auto-mailerncontent-type: text/html;nmime-version: 1.0n ";
@mail( "info@nnn.net", "order from nnn web site", $message, $header); @mail($email, "order from nnn web site", $message_1, $header_1);
echo "<h4>Уважаемый <b>$name</b>! Ваш заказ принят. Менеджер нашей фирмы свяжется с Вами в ближайшее время для уточнения деталей.<br> Спасибо за посещение нашего сайта!</h1>n"; } ?>
Ну что? Разумеется, опасность в том, что этому скрипту можно подсунуть ЛЮБЫЕ данные и он их отправит спокойно.. Выход: не пересылать с предыдущей страницы содержимое заказа, а формировать его непосредственно в этом скрипте. Вообще, надо стараться таскать за собой как можно меньше данных. Также, НИКОГДА не повредит проверка того, с какой страницы пришел запрос. 5) Все. Мы получили все что хотели. Теперь осталось только сделать функцию которая будет чистить таблицу shop_tmp от старых заказов. Но это уже сами.
6) Перед всеми операциями с базой данных вызывается файл для соединения с базой данных такого вида:
Файл connect.php3
<?php { $dbname = "test"; $host = "localhost"; $port = "3306"; $user = "root"; $password = "";
mysql_connect($host,$user,$password); mysql_select_db($dbname) or die( "unable to select database"); }
?>
ps. Еще раз повторяю - все что здесь написано я проверил - ЭТО работает. Если у вас не так - вы просто что-то неправильно сделали... pps. По просьбам трудящихся, дописан пункт 4. И немного поправлен пункт три..
|