ПРИМЕР СОЗДАНИЯ ИНТЕРНЕТ-МАГАЗИНА В DREAMWEAVER8

Создадим магазин, близкий к интернет-магазину smart-woman, за работой которого я слежу. При описании создания магазина я не буду подробно описывать те операции, которые изложены в пункте "Пример создания интернет-аптеки в Dreamweaver" .В пункте меню "file" выберем подпункт "new". Сделаем страницу динамической, т.к будем использовать РНР. Сохраним под именем index.php в папке MAGAZIN. В свойствах страницы (page properties) выберем размер и цвет шрифта, фон. В пункте меню "site" выберем "newsite". Назовем сайт MAGAZIN. Как заполнить предложенную форму можно прочитать в пункте " Создание интернет-аптеки". Вместо Apteka1 вставить magazin

Создание базы данных и таблиц

Создадим базу данных magazin. А в базе таблицу categories с категориями товаров и таблицу tovari с описанием товара с помощью администратора баз данных. В таблице categories будут два поля- ID(счетчик,для него атрибут UNSIGNET , дополнительно- auto_increment (автоматически увеличивается на 1) и выберем флажок под рисунком ключа), и CATEGORY -тип поля VARCHAR и длина 20. Если очистить таблицу с помощью администратора, то поле id будет продолжать увеличиваьтся. Если вы хотите начать значение поля ID с нуля, то придется уничтожить таблицу.

Таблица с товарами будет иметь поля-id-счетчик( с теми же характеристиками, как и в таблице categories), nom(INT)-для поиска записей,name- наименование товара (VARCHAR30), datapost-DATE поступления(DATE), Cena-цена(FLOAT(8,2), kolvo-количество товара(SMALLINT), razmer- Размер(VARCHAR30), cvet-цвет(VARCHAR60), sostav-состав ткани(VARCHAR50), opisanie- описание товара(TEXT), postav-поставщик(VARCHAR40), foto-путь к папке, где фото товара(VARCHAR20). При вводе цены обязательно должна стоять запятая, а не точка. Если при создании будет ошибка ERROR 1005: Can't create table (errno: 121) и вы никак не сможете от нее избавиться, то попробуйте создать таблицу под другим именем.

Регистрация базы данных

Зарегистрируем базу данных в DR(dramweaver). Для этого в правой части DR в разделе application и закладке databases нажмем "+ ". Далее нажмем на MySQL Connection. Заполним форму. Connection name-magazin, MySQLserver-localhost , Username-root ,password-пароль при установке MySQL, database-magazin. В папке Files/Site/connection появится файл, описывающий соединение с базой данных-magazin.php.

Создание скриптов для занесения информации в таблицы

Создадим папку Admin и в ней скрипт categ_add.php для занесения информации о категориях товаров .На вкладкеВ нем поместим форму для ввода информации(insert/form/form).Поместим курсор в форму и в нее будем заносить информацию о полях. Поле ID не будем заносить, т.к. значение его будет автоматически увеличиваться на 1-цу при создании новой записи (это мы указали при создании таблицы). Вставим курсор в форму, выберем insert/form/TextField для создания окна для поля category . Введем в окно для Label слово "Категория" , "OK" . В окно TextField(в нижней части экрана)введем название этого поля- category. В Charwith длину поля для заполнения-20 и максимальную длину для поля-30. Для занесения информации в таблицу нужна кнопка- insert/Form/Button. Для появления на кнопке слова "Добавить" введем его в окне Value. Чтобы кнопка сработала на вставку записи с информацией о товаре, на вкладке ServerBehaviors нажмем на "+" и выберем оператор insert Record(вставка записи). Заполним предложенную оператором форму(рис.1). В ней в окне connection ввести имя нашего соединения-magizin.Особое внимание обратите на поле ID. При создании таблицы обязательно нажать на знак ключа напротив этого поля и сделать его автоматическим и по возрастанию(auto_increment,unsignet)-иначе появится ошибка о дубле значений. В нижнем окошке указывается путь к файлу, к которому после ввода данных перейти программа(если в тот же скрипт, то ввести categ_add.php.После нажатия на "ОК" под кнопкой появится особый знак. Если будут сбои при вызове скрипта добавления записи, то лучше замените вызов файла magazin.php:

<?php virtual('/apteka1/Connections/apteka1.php'); ?>
<?php

на: <? php include("magazin.php"); И файл magazin.php из папки Connections скопируйте в папку, где находится скрипт categ_add.php , т.е. папку admin.

ввод категорий

Рис.1

Создадим скрипт для занесения информации о товарах tovar_add.php. В application/Database Создадим соединение magazin. А в Server Behaviorsдва набора данных- category и tovari. На рис.2 создание набора tovari с таблицей tovari.

набор товары

Рис.2.

category

Рис. 3. Создание записи Category для занесения кода и названия ктегории

Введем форму, поле для ввода наименования товара(Textfield-name). Категории будем выбирать из таблицы categories (рис. 5) . Для этого вставим поле list/menu (insert/form/list/menu) . Type-menu. Нажмем на dinamic со знаком молнии и заполним форму (рис.4)

 

из категорий

Рис.4 Форма для для определения для поля выбора категорий.

В select value eqal to Можно не вводить информацию, главное определить value. В таблицу бдет заноситься информация о названии категории. А нам надо также ввести код категории в поле KOD таблицы tovari. для этого выведем рядом с наименованием и код категории. Для этого подкорректируем сами оператор select d коде скрипта:

<label>Категория
<select name="select">
<?php
do {
?>
<option value="<?php echo $row_category['category']?>"><?php echo $row_category['category']; echo ", код- ";echo $row_category['id']; ?></option>
<?php
} while ($row_category = mysql_fetch_assoc($category));
$rows = mysql_num_rows($category);
if($rows > 0) {
mysql_data_seek($category, 0);
$row_category = mysql_fetch_assoc($category);

}
?>
</select>

Значение кода будет вводится отдельно в окне рядом(рис.5). Далее вставим поле textfield для даты поступления товара. Назовем его datapost. Нажмем на окно ввода и в нижней части экрана в окно init val введем вывод даты на РНР-<?php echo date("y-m-d"); ?>. Далее введем текстовые поля цены, количества, размера и цвета. Остановимся подробнее на поле opisanie. Для него введем тип поля формы- Textarea для ввода большого текста. В окне Num Lines можно задать количество строк.Введем тексовые поля для поставщика и фото.После описания всех полей вставим кнопку (insert/form/Button). В окне Value введем добавить.

 

занесение в товары

 

Рис.5. Форма занесения информации о товаре.

Далее на той же вкладке создадим INSERT RECORD для вставки записи (рис. 6 ). В форме для каждого поля зададим в окне Values Form.textfield. А для поля Category -Form.select.

 

вставка товаров

Рис.6. Описание полей таблицы tovari в Insert Record.

Далее привожу листинг скрипта tovar_add.php.


<?php
include("magazin.php");
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tovari (kod, category, name, datapost, cena, kolvo, razmer, cvet, sostav, opisanie, postav, foto) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['kod'], "int"),
GetSQLValueString($_POST['select'], "text"),
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['datapost'], "date"),
GetSQLValueString($_POST['cena'], "double"),
GetSQLValueString($_POST['kolvo'], "int"),
GetSQLValueString($_POST['razmer'], "text"),
GetSQLValueString($_POST['cvet'], "text"),
GetSQLValueString($_POST['sostav'], "text"),
GetSQLValueString($_POST['opisanie'], "text"),
GetSQLValueString($_POST['postav'], "text"),
GetSQLValueString($_POST['foto'], "text"));

mysql_select_db($database_magazin, $magazin);
$Result1 = mysql_query($insertSQL, $magazin) or die(mysql_error());

$insertGoTo = "tovar_add.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_magazin, $magazin);
$query_category = "SELECT * FROM categories";
$category = mysql_query($query_category, $magazin) or die(mysql_error());
$row_category = mysql_fetch_assoc($category);
$totalRows_category = mysql_num_rows($category);

mysql_select_db($database_magazin, $magazin);
$query_tovari = "SELECT * FROM tovari";
$tovari = mysql_query($query_tovari, $magazin) or die(mysql_error());
$row_tovari = mysql_fetch_assoc($tovari);
$totalRows_tovari = mysql_num_rows($tovari);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>ввод данных о товаре</title>
</head>

<body>
<form name="form1" method="POST" action="tovar_add.php">
<label>Наименование
<input name="name" type="text" id="name" size="30" maxlength="30">
</label>
<label>Категория
<select name="select">
<?php
do {
?>
<option value="<?php echo $row_category['category']?>"><?php echo $row_category['category']; echo ", код- ";echo $row_category['id']; ?></option>
<?php
} while ($row_category = mysql_fetch_assoc($category));
$rows = mysql_num_rows($category);
if($rows > 0) {
mysql_data_seek($category, 0);
$row_category = mysql_fetch_assoc($category);

}
?>
</select>
</label>
<label>Код категории
<input name="kod" type="text" id="kod" size="5" maxlength="5">
</label>
<p>
<label>Дата поступления
<input name="datapost" type="text" id="datapost" value="<?php echo date("y-m-d"); ?>">
</label>
</p>
<p> Цена
<input name="cena" type="text" id="cena" size="10" maxlength="10">
Количество
<input name="kolvo" type="text" id="kolvo" size="10" maxlength="10">
</p>
<p>Размер
<input name="razmer" type="text" id="razmer" size="40" maxlength="40">
</p>
<p>Цвет
<input name="cvet" type="text" id="cvet" size="60" maxlength="60">
</p>
<p>Состав
<input name="sostav" type="text" id="sostav" size="30" maxlength="30">
</p>
<p>
<label>Описание
<textarea name="opisanie" cols="70" rows="15" id="opisanie"></textarea>
</label>
</p>
<p>Поставщик
<input name="postav" type="text" id="postav" size="50" maxlength="50">
</p>
<p>
<label>Фото
<input name="foto" type="text" id="foto" size="40" maxlength="40">
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Добавить">
</label>
</p>
<input type="hidden" name="MM_insert" value="form1">
</form>
<?

if ($Submit=="Добавить")
{ ?><? }?>

</body>
</html>
<?php
mysql_free_result($category);

mysql_free_result($tovari);
?>

Для проведения операций добавления, удаления и корректировки создадим скрипт по аналогии для препаратов сайта "АПТЕКА" ( см. меню страницы):

работа с таблицей

рис. 7

В ссылке "добавить к списку" укажем скрипт tovar_add.php. В "изменить" и "удалить" сделаем, как для сайта "АПТЕКА" скрипты tovar_edit.php и tovar_delete.php.

Описание вывода информации о товарах

Вставим таблицу(insert/table) из одной строки и одного столбца для названия магазина и под ней вставим таблицу из одной строки и 2-х столбцов. В первом столбце будет меню, во втором операции с таблицами.Вставим курсор в 1-ый столбец и выберем для вертикали режим тор. Вставим таблицу из одной строки и одного столбца для заголовка- "Категории". Закрасим зеленым цветом (bgcolor) и шрифт - белый.Поместим список категорий товаров из таблицы categories для выбора из таблицы tovari для посетителя магазина. Для этого вставим под заголовком таблицу из одного столбца и одной строки. Вставим курсор в созданную таблицу, создадим на вкладке bindings набор записей под именем category, с таблицей category и отсортируем по алфавиту (рис.3). Мы должны вывести названия категорий в цикле. Для этого выделим последнюю таблицу и на вкладке Server Behaviors,нажав на +, выберем Repeat Regoin и заполним форму:

REpeat region

Рис.8

Заполнение формы означает, что для набора записей category создаем цикл. Ниже привожу фрагмент кода создания цикла:

<table width="200" border="0" bordercolor="#000000" bgcolor="#33FFCC">
<?php do { ?><tr>
<td width="194" height="23" bordercolor="#000000" class="style9 style8 style7"><strong><?php echo $row_category['category']; ?></strong></td></tr>
<?php } while ($row_category = mysql_fetch_assoc($category)); ?></table>

gМы сделали вывод списка категорий одежды. Нам далее необходимо, чтобы при выборе категории произошел выбор из таблицы с товарами по коду категории (параметр kod). Этот параметр будет описан при создании набора записей для вывода информации о товаре (см. рис.9.).Мы самостоятельно сделаем ссылку. Ниже привожу тот же фрагмент, но уже подкорректированный:

<table width="113%" border="1" bordercolor="#000000" bgcolor="#33FFCC">
<?php do { ?> //
начало цикла
<tr>
<td width="145" height="23" bordercolor="#000000" class="style9 style8 style7"><span class="style1">

<a href="index.php?kod=<?php echo $row_category['id']; ?> // передача значения параметра id как кода категории kod

" class="style10"><?php echo $row_category['category']; ?></a></span></td> //вывод списка категорий
</tr>
<?php } while ($row_category = mysql_fetch_assoc($category)); ?> //
окончание цикла
</table>

Для вывода информации о товарах вставим таблицу из одной строки и двух столбцов. В первом столбце выводится фото изделия, а в правом столбце характеристики: размеры, цвет, описание. Эта информация будет выбираться из таблицы tavari при выборе категории товара.

На вкладке Bindings создадим набор записей tovari:

выбор из товаров

Рис.9 Выбор из таблицы tovari по категории

Выделим последнюю таблицу и выберем на вкладке Server Behaviors Repeat region для того, чтобы таблица выводилась в цикле (по количеству товаров одной категории). Зайдем в код скрипта и внутри цикла сделаем операции:

<? $ =$row_tovari["foto"];//занесение в переменную $
$r=$row_tovari["razmer"];$cv=$row_tovari["cvet"];//
выбор размера и цвета из полей таблицы
$sos=$row_tovari["sostav"];//состав ткани
$rm=explode(';',$r); $ke=sizeof($rm); //
создание массива размеров по точке с запятой и $ke- колво элементов (размеров)
$cvm=explode(';',$cv); $kecv=sizeof($cvm); //колво элементов (цветов)
$sosm=explode(';',$sos); $kesos=sizeof($sosm); //колво элементов состава ткани
$name=$row_tovari["name"];

Выведем фото изделия:

<img src="<? echo $ ?>" alt=<?php echo $name ?> width="67" height="150">

Выведем наименование и цену товара:

<? print ($row_tovari["name"]); print "<br> цена- ";
print ($row_tovari["cena"]);print " руб"; ?>

Сделаем вывод списка размеров и цветов с помощью оператора select.В режиме Design после обозначения PHP вставим курсор и добавим форму, а в ней -List/menu.

выбор размера

Рис. 10

Зайдем в код скрипта и подкорректируем оператор select, который создал DR:

<select name="razmer" id="razmer">
<?
for ($j=0;$j<=$ke;$j++)
print "<option value='$rm[$j]'>$rm[$j]";
?>
</select>

Рядом вставим еще оператор list/menu для цвета и подкорректируем его:

<select name="cvet" id="cvet">
<? for ($j=0;$j<=$kecv;$j++)
print "<option value='$cvm[$j]'>$cvm[$j]"; ?>
</select>

Далее сделаем ссылку на скрипт prosm.php (его сделаем позже), в котором можно будет посмотреть товар поближе). Для этого в форме напишем- "посмотреть" и в окне link набьем prosm.php. Выбранную информацию о товаре необходимо внести с помощью кнопки с названием "в корзину" . Также нам нужно передать и уникальный номер записи данного товара (idtov). Для этого введем в форме элемент Hidden field- невидимый для передаваемого номера записи. С помощью Dinamic Data (его получим, нажав на молнию) определим для невидимого элемента поле idtov:

передача Idtov

Рис. 11.

Выбранные товары необходимо поместить в корзину. Создадим таблицу с полями- kodtov(smallint),name (varchar(50), razmer (varchar(3)) , cvet(varchar(20)), postav(varchar(60), cena (float(9,2) , kolzak(smallint(3) . А в таблице под списком категорий разместим таблицу с выбранными товарами. Напишем- "Ваша корзина:" .Под этим выражением разместим таблицу из двух срок и двух столбцов- для наименования и цены. Введем заголовки таблицы. На вкладке Bindings нажмем на + для создания набора данных и назовем его korzina и отсортируем по наименованию. Нажмем на + напротив этого набора и курсором перенесем соответствующие поля в таблицу. Выделим строку с полями и сделаем цикл с помощью repeat region.При этом обратите внимание на тэг <tr> , чтобы записи находились одна под другой.Но нам нужно, чтобы содержание корзины появлялось при ее заполнении. Выделим заголовок и таблицу, на вкладке Server Behaviors нажмем на + и в разделе show region выберем show if recordset is not empty и в нем выберем таблицу korzina(рис. 12).

show region

Рис. 12.

результат работы

Рис.13.Результат нашей проделанной работы.

После нажатия на кнопку "в корзину" в таблицу korzina должна занестись информация о выбранном товаре. Для этого мы соpдадим скрипт korzina.php. На вкладке Bindings создадим набор записей tovari для таблицы tovari с фильтрацией по коду товара idtov (рис. 14):

выбор из tovari

Рис. 14.

В этой форме на рис.14 мы указываем, что этот параметр передается методом POST , через форму (FORM Variable). мы его передаем как невидимый параметр (см. рис. 11). В скрипте korzina.php создадим набор записей korzina. Ниже привожу код скрипта korzina.php, т.к. вставку выбранных параметров товара в таблицу korzina сделаем самостоятельно:


<? php
include("magazin.php");
$colname_tovari = "-1";
if (isset($_POST['idtov'])) {
$colname_tovari = (get_magic_quotes_gpc()) ? $_POST['idtov'] : addslashes($_POST['idtov']);
}
mysql_select_db($database_magazin, $magazin);
$query_tovari = sprintf("SELECT * FROM tovari WHERE idtov = %s", $colname_tovari);//выбор записи по коду
$tovari = mysql_query($query_tovari, $magazin) or die(mysql_error());
$row_tovari = mysql_fetch_assoc($tovari);
$totalRows_tovari = mysql_num_rows($tovari);

$name=$row_tovari["name"]; $postav=$row_tovari["postav"]; //запоминание из таблицы параметров товара
$cena = $row_tovari["cena"];
mysql_select_db($database_magazin, $magazin);
$query_korzina = "SELECT * FROM korzina";
$korzina = mysql_query($query_korzina, $magazin) or die(mysql_error());
$row_korzina = mysql_fetch_assoc($korzina);
$totalRows_korzina = mysql_num_rows($korzina);

$sql = "INSERT INTO korzina (idtov,name,razmer,cvet,postav,cena,kolzak) //оператор вставки
VALUES ('$idtov','$name','$razmer','$cvet','$postav','$cena','1')";
/* Исполнение SQL запроса */
$result = mysql_query($sql);
// Проверка исполнения операции
if(!$result) {
echo "Запись не создана!"; }
mysql_free_result($tovari);
mysql_free_result($korzina);
?>

После того, как покупатель поместил выбранные товары в корзину, необходимо посчитать общую сумму с возможностью коррекировки. Напишем под содержанием корзины выражение "оформить заказ" и сделаем ссылку на скрипт raskorz.php. Создадим этот скрипт и в нем в цетре напишем "Ваша корзина". Создадим форму и вставим в нее таблицу из 4 столбцов и двух строк. В первой строке запишем-код, наименование, поставщик,размер, цвет,цена,количество.Создадим набор записей (record set) korzina и перенесем соответствующие поля (Рис.15). Сделаем вторую строку в цикле (repeat region). Там, где указывется количество мы сделаем самостоятельно, т.к. необходимо дать покупателю возможность указать количество товара. Для этого создадим массив $kolm, в него занесем количество товара и сделаем корректировку массива в последнем столбце- <td><? print " <INPUT maxLength=4 name=kolm[$i] size=4 value=$kolm[$i]>";?></td> . Подсчитаем сумму товара, для этого используем переменную $s. Напишем "Общая сумма" под таблицей, а в коде поставим рядом оператор-<? print " $s"; ?> . При изменении количества необходимо пересчитать сумму. для этого мы в форму вставим кнопку (form/Button ) с надписью "пересчитать" слева от "Общей суммы". Имя кнопки-Subper. Справа поместим кнопку subobnul для обнуления содержания корзины. Эти операции мы проведем в новом скрипте pereskor.php. К нему мы обратимся из формы. В pereskor.php создадим набор записей korzina. Ниже я привожу фрагмент кода скрипта pereskor.php:

<?php
$i=0
if (isset ($Subper)) { // если нажата кнопка пересчета, важен регистр
do {
$i=$i+1;$kol=$kolm[$i]; $idtovz=$row_korzina['idtov'];print"i= $i кол-во= $kol idtov= $idtovz ";
$sql = "UPDATE korzina set kolzak='$kol' where idtov=$idtovz"; //изменение количества
/* Исполнение SQL запроса */
$result = mysql_query($sql);
} while ($row_korzina = mysql_fetch_assoc($korzina)); //конец цикла
} // конец по пересчету
if (isset ($Subobnul)) { // если нажата кнопка обнуления, важен регистр
$sql = " DELETE FROM korzina"; //удаление записей
$result1 = mysql_query($sql);}/* Исполнение SQL запроса */
?>

Для отправки заказа необходимы данные о покупателе. Для этого создадим новую форму(Рис.15).

форма для покупателя

Рис.15

Ниже привожу текст скрипта raskorz.php:


<?php
include("magazin.php");
mysql_select_db($database_magazin, $magazin);
$query_korzina = "SELECT * FROM korzina ORDER BY name ASC";
$korzina = mysql_query($query_korzina, $magazin) or die(mysql_error());
$row_korzina = mysql_fetch_assoc($korzina);
$totalRows_korzina = mysql_num_rows($korzina);
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Расчет корзины для магазина</title>
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
color: #990000;
}
body {
background-color: #CCFFFF;
}
-->
</style></head>

<body>
<p align="center"><strong>Ваша корзина: </strong></p>
<form name="form1" method="post" action="pereskor.php">
<table width="200" border="1" align="center">
<tr>
<th scope="col">Код товара </th>
<th scope="col">Наименование</th>
<th scope="col">Поставщик</th>
<th scope="col">Размер</th>
<th scope="col">Цвет</th>
<th scope="col">Цена</th>
<th scope="col">Количество</th>
</tr>
<?php $i=0;$s=0;do { $i=$i+1;$kolm[$i]=$row_korzina['kolzak'];$s=$s+$kolm[$i]*$row_korzina['cena']?>
<tr>
<td><?php echo $row_korzina['idtov']; ?></td>
<td><?php echo $row_korzina['name']; ?></td>
<td><?php echo $row_korzina['postav']; ?></td>
<td><?php echo $row_korzina['razmer']; ?></td>
<td><?php echo $row_korzina['cvet']; ?></td>
<td><?php echo $row_korzina['cena']; ?></td>
<td><? print " <INPUT maxLength=4 name=kolm[$i] size=4 value=$kolm[$i]>";?></td>
</tr>
<?php } while ($row_korzina = mysql_fetch_assoc($korzina)); ?>
</table>
<p align="center">
<label>
<input name="Subper" type="submit" id="Subper" value="Пересчитать">
</label>
<strong>Общая сумма</strong>- <? print " $s"; ?>
<label>
<input name="Subobnul" type="submit" id="Subobnul" value="Обнулить">
</label>
</p>
</form>

<p align="center">Заполните, пожалуйста, форму : </p>
<p align="center"><form name="form2" method="post" action="otpzak.php">
<table width="379" height="341" border="1" align="center" bordercolor="#003300">
<tr>
<td width="369">
<span class="style16"><strong>Ф.И.О.</strong></span>
<input name="fio" type="text" class="style20" id="fio" size="40" maxlength="40">
<p>
<strong class="style16">Адрес</strong>
<input name="adres" type="text" class="style20" id="adres">
</p>
<p>
<strong class="style16">Телефон</strong>
<input name="tel" type="text" class="style20" id="tel" size="20" maxlength="20">
</p>
<p class="style20">
<strong class="style16">email</strong>
<input name="email" type="text" id="email" size="20" maxlength="20">
</p>
<strong class="style16">Комментарий</strong>
<textarea name="comment" cols="50" rows="6" wrap="virtual" class="style20" id="comment"></textarea>

<p align="center">
<input name="Submit2" type="submit" class="style21" value="Отправить">
</p></td>
</tr>
</table>
</form> </p>
</div>
</body>
</html>
<?php
mysql_free_result($korzina);
?>

 

 

После заполнения формы и нажатии на кнопку "Отправить" мы должны сформировать сообщение. Для этого создадим скрипт otpzak.php. В нем создадим набор записей korzina с таблицей korzina. Ниже привожу текст скрипта:


<?php
include("magazin.php");
mysql_select_db($database_magazin, $magazin);
$query_korzina = "SELECT * FROM korzina";
$korzina = mysql_query($query_korzina, $magazin) or die(mysql_error());
$row_korzina = mysql_fetch_assoc($korzina);
$totalRows_korzina = mysql_num_rows($korzina);
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>отправка заказа из магазина</title>
</head>

<body>
<?php
$i=0;$s='';
do { // начало цикла по корзине
$i=$i+1;
$stkod=(string)$row_korzina['idtov'];
$stkol=(string)$row_korzina['kolzak']; //перевод в строку с помощью приставки string
$stcena=(string)$row_korzina['cena']; //
$sum=(string)$row_korzina['cena']*$row_korzina['kolzak']; //сумма товара
$z[$i]="код-".$stkod." наименование- ".$row_korzina['name']." производитель- ".$row_korzina['postav']." в количестве- ".$stkol." цена-".$stcena." сумма- ". $sum;
$s=$s.$z[$i]."\n"; //сложение информации о товаре в одну переменную s
$obsum=$obsum+$sum;
}
while ($row_korzina = mysql_fetch_assoc($korzina)); //конец цикла по корзине
$obsum='Общая сумма-'.(string)$obsum;
$message=' От '.$fio.' прожив. по адресу-'.$adres.' email-'.$email.' '.' Телефон-'.$tel." получен заказ: \n".$s.$obsum.' рублей';// n должно быть в двойных кавычках
include('smtpmail.php'); //подключение почты, см. "отправка сообщений на РНР" на странице в содержании
smtpmail('', '', $message, $headers=''); // вызов функции

include "index.php";?>
</body>
</html>

Далее привожу скрипт главной страницы нашего магазинчика:


<?php
include("magazin.php");
mysql_select_db($database_magazin, $magazin);
$query_category = "SELECT * FROM categories ORDER BY category ASC";
$category = mysql_query($query_category, $magazin) or die(mysql_error());
$row_category = mysql_fetch_assoc($category);
$totalRows_category = mysql_num_rows($category);

$colname_tovari = "-1";
if (isset($_GET['kod'])) {
$colname_tovari = (get_magic_quotes_gpc()) ? $_GET['kod'] : addslashes($_GET['kod']);
}
mysql_select_db($database_magazin, $magazin);
$query_tovari = sprintf("SELECT * FROM tovari WHERE kod = %s", $colname_tovari);
$tovari = mysql_query($query_tovari, $magazin) or die(mysql_error());
$row_tovari = mysql_fetch_assoc($tovari);
$totalRows_tovari = mysql_num_rows($tovari);

mysql_select_db($database_magazin, $magazin);
$query_korzina = "SELECT * FROM korzina ORDER BY name ASC";
$korzina = mysql_query($query_korzina, $magazin) or die(mysql_error());
$row_korzina = mysql_fetch_assoc($korzina);
$totalRows_korzina = mysql_num_rows($korzina);
?>
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>интернет-магазин</title>
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #990000;
}
body {
background-color: #FFFFCC;
}
a {
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #660000;
}
a:link {
text-decoration: underline;
}
a:visited {
text-decoration: underline;
color: #660000;
}
a:hover {
text-decoration: none;
}
a:active {
text-decoration: underline;
}
.style1 {color: #990000}
.style3 {
color: #FFFFFF;
font-size: 14px;
}
.style7 {
font-size: 12;
color: #000000;
}
.style8 {font-size: 14px}
.style9 {font-family: Geneva, Arial, Helvetica, sans-serif}
.style10 {
font-size: 12px;
font-weight: bold;
}
-->
</style></head>

<body>
<table width="900" height="36" border="1">
<tr>
<th width="1027" scope="col"><span class="style1">ИНТЕРНЕТ-МАГАЗИН для шикарных женщин </span></th>
</tr>
</table>
<table width="900" height="236" border="1">
<tr>
<td width="123" valign="top"><table width="100%" border="1" bordercolor="#000000" bgcolor="#009900">
<tr>
<th width="213" scope="col"><span class="style3">Категории</span></th>
</tr>
</table>

<table width="113%" border="1" bordercolor="#000000" bgcolor="#33FFCC">
<?php do { ?>
<tr>
<td width="145" height="23" bordercolor="#000000" class="style9 style8 style7"><span class="style1"><a href="index.php?kod=<?php echo $row_category['id']; ?> " class="style10"><?php echo $row_category['category']; ?></a></span></td>
</tr>
<?php } while ($row_category = mysql_fetch_assoc($category)); ?>
</table>
<div align="center">
<?php if ($totalRows_korzina > 0) { // Show if recordset not empty ?>
</div>
<p align="center" class="style1 style10">Ваша корзина: </p>
<div align="center">
<table width="200" border="1">
<tr>
<th class="style10" scope="col">Наименование</th>
<th class="style10" scope="col">Цена</th>
</tr>
<?php do { ?>
<tr>
<td class="style10"><?php echo $row_korzina['name']; ?></td>
<td class="style10"><?php echo $row_korzina['cena']; ?></td>
</tr>
<?php } while ($row_korzina = mysql_fetch_assoc($korzina)); ?>
</table>
<p><span class="style1 style10"><a href="raskorz.php" class="style10">Оформить заказ</a></span> </p>
<?php } // Show if recordset not empty ?>
</div>
<p align="center" class="style1 style10">&nbsp;</p>
<td width="761" valign="top"><table width="665" height="109" border="1">
<tr>
<?php do { ?>
<td width="220" valign="top">
<? $ =$row_tovari["foto"];//print " - $ ";
$r=$row_tovari["razmer"];$cv=$row_tovari["cvet"];//выбор размера и цвета
$sos=$row_tovari["sostav"];//состав ткани
$rm=explode(';',$r); $ke=sizeof($rm); //колво элементов (размеров)
$cvm=explode(';',$cv); $kecv=sizeof($cvm); //колво элементов (цветов)
$sosm=explode(';',$sos); $kesos=sizeof($sosm); //колво элементов состава ткани
$name=$row_tovari["name"];
?>
<img src="<? echo $ ?>" alt=<?php echo $name ?> width="67" height="150"></td>

<td width="503" valign="top">
<? print ($row_tovari["name"]); print "<br> цена- ";
print ($row_tovari["cena"]);print " руб"; ?>
<form name="form1" method="post" action="korzina.php">
<label>Размер
<select name="razmer" id="razmer">

<?
for ($j=0;$j<=$ke;$j++)
print "<option value='$rm[$j]'>$rm[$j]";
?>
</select>
</label>
<label>Цвет
<select name="cvet" id="cvet">
<? for ($j=0;$j<=$kecv;$j++)
print "<option value='$cvm[$j]'>$cvm[$j]"; ?>
</select>
</label>
<p><a href="prosm.php">посмотреть</a>

<input type="submit" name="Submit" value="в корзину">
<input name="idtov" type="hidden" id="idtov" value="<?php echo $row_tovari['idtov']; ?>">
</p>
</form> </td>
<?php } while ($row_tovari = mysql_fetch_assoc($tovari)); ?></tr>
</table></td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($category);

mysql_free_result($tovari);

mysql_free_result($korzina);
?>