Ваш первый Сайт С использованием РНР-скриптов

ПРОГРАММА ДЛЯ ГЛАВНОЙ СТРАНИЦЫ МАГАЗИНА

Итак, в РНР-редакторе создайте новый файл и сохраните его в папке Magazin под названием magazin.php.

Листинг 9.3 (файл Magazin. php) <Html> <Head>

<Ш1е>Книжный магазин</Ш1е>

Clink rel="stylesheet" type=Mtext/css" href="stili2.cssM> <script language="JavaScriptff>

Function itog() {

Var kolich=0; var summa=0;

For(n=l; n<=(document. forma("kolM).value); n++) {

Kolich=kolich+l*document. forma(Mkniga"+n). value;

Summa=summa+document. forma("cena"+n).value*document. forma("kniga"+n).value; mess. innerHTML= "Количество заказанных книг: "+ko1ich+"<br>"+"06iuaH

Сумма заказа: "+summa; }

}

</script> </head> <body bgcolor=Mcyan">

<center><div id="lolo3">HHTepHeT-Mara3HH</div>

<div id="loloM>Bbi6EpHTe товары, которые вы хотите приобрести, указав их количество. Укажите свое имя, e-mail, адрес.<^у></се1иегхЬг><Ьг> <form action="magazin2.php" method="POST" name="forma">

<center><table width="80%" border=M2" bordercolor="green"xtr>

<?

$exten=array(".php");

$knigi="booksM;

$dir=opendir($knigi);

While($file=readdir($dir))

{

If (in_array(strchr($fiie, "."), $exten)) $c[]=$file; }

Closedir($dir);

Foreach($c as $lolo)

{

$teg=get_meta_tags("$knigi/$lolo"); $i++;

$stoimost[$i]=$teg[stoimost]; $avtor [$i)=$teg[avtor]; $nazvanie[$i]=$teg[nazvanie];

Echo "<td>$teg|avtor]<br><a href=$knigi/bookOOO$i. php target=_blank> $teg[nazvanie]</axbr>($teg[stoimost] py6.)<br>

Количество экземпляров:<ЬгХ8е1ес! name^knigaSi' onchange=itog()>

<option value=0>0</option>.

<option value=l>l</option>

<option value=2>2</option>

<option value=3>3</option>

<option value=4>4</option>

<option value=5>5</option>

</selectx/td>

<input type=HIDDEN name=cena$i value=$stoimost($il> <input type=HIDDEN narne=avtor$i value=,$avtor[$i],> <input type=HIDDEN narne=nazvanie$i value='$nazvanie[$i]'>M;

If (($i/4) = is_integer($i/4)) echo"</trxtr>"; }

Echo "<input type=HIDDEN name=kol value=$i>";

?>

Строганов А. С. Ваш первый сайт с использованием РНР-скриптов </Trx/Tablex/Centerxbrxbr>

<Р align="CENTER" id="mess" style="color:red; font-famUy:Comic Sans MS"x/pxbr>

Ваше имя: <input name="imja" type="TEXT"xbr>

Ваш E-mail: <input name="emair type="TEXT"xbrxbr>

Адрес доставки: <brxtextarea name="text" cols="30" rows="10"

Wrap="virtual"x/textareaxbr>

<input type=" SUBMIT" Уа1ие="3аказать">

</form>

</body>

</html>

Разберем строчки кода. При разборе кода было бы полезно периодически посматривать на рис. 9.1. <html> <head>

<title> Книжный Магазин</Ш1Е>

<link rel= "stylesheet" type= "text/ess" href= "stili2.css">

<script language^ "JavaScript"> - начало кода на JavaScript;

Function itogQ - создаем функцию itog, которая будет подсчитывать общую стоимость заказанных книг. Потом мы эту функцию вызовем в нужном месте РНР-кода;

Ц

Var kolich=0; - вводим переменную для подсчета общего количества заказан­ных книг, присваивая ей первоначальное значение - ноль. В JavaScript перед переменными знак $ не ставится, а объявляется тип переменной (Var);

Var summa=0; - вводим переменную для подсчета общей стоимости заказан­ных книг, присваивая ей первоначальное значение - ноль.

For(n=l; П<=(document.forma("kol").value); П++) - это, как вы поняли, цикл со счетчиком п, начальное значение которого равно 1. Рассмотрим теперь второй аргумент цикла for. Параметр document в JavaScript указывает на те­кущий документ, т. е. на данную страницу с этим кодом magazin.php. В этом коде у нас имеется форма (см. ниже) с именем name=forma. В форме, как вы увидите дальше в коде, у нас будет элемент с именем name=kol, а параметр Value в этом элементе будет иметь значение числа выбранных разных книг. Таким образом, второй аргумент цикла, указывающий конечное значение счетчика п, будет означать количество выбранных посетителем разных книг. Цикл будет выполняться, пока п будет пробегать значения от 1 до общего числа выбранных книг;

2{

Kolich=kolich+l ^document.forma("kniga"+n).value; - каждый раз при выпол­нении цикла переменной kolich будет добавляться количество экземпляров очередной выбранной книги (в элементах формы с именами name=knigal, name=kniga2 и т. д., параметр value будет указывать на количество экземпля­ров той или иной конкретной книги);

Summa=summa+docume;it.forma("cena"+n).value*document.forma("kniga"+n) .value; - каждый раз при выполнении цикла переменной summa будет добав­ляться стоимость всех экземпляров очередной выбранной конкретной книги (в элементах формы с именами name=cenal, пате=сепа2 и т. д., параметр Value будет указывать на стоимость одного экземпляра той или иной кон­кретной книги). Короче говоря, в этой строке стоимость одного экземпляра умножается на число экземпляров конкретной выбранной книги, затем все это прибавляется общей сумме;

Mess.i/merHTML="Количество заказанных книг: "+kolich+ "<br> "+ "Общая сумма заказа: "+summo; - выводим в браузер общее число выбранных книг и их общую стоимость. Знак «+» в JavaScript является знаком соединения или конкатенации данных. Вывод в браузер в JavaScript осуществляется при по­мощи конструкции mess.innerHTML, где mess является своеобразной меткой или идентификатором для id. Вывод количества заказанных книг и общей их стоимости в окно браузера произойдет в том месте страницы, где будет ука­зано: id=mess;

2} - окончание цикла for,

1} - окончание функции itog();

</script> - окончание кода на JavaScript. Если вы не поняли приведенный выше код, то сначала разберите код ниже, а потом снова разберите этот код на JavaScript. Он станет вам уже более понятен;

</head>

<body bgcolor^ "cyan ">

<center><div id= "lolo3">Интернет-магазин<Мы>

<div id="lolo">Выберите товары, которые вы хотите приобрести, указав их количество. Укажите свое имя, e-mail, Адрес. </div></center><br><br>

<form action=z"magazin2.php" method="POST" name="forma"> - выводим форму для заказа посетителем книг, количества экземпляров и для ввода его данных. После нажатия в форме кнопки «Заказать», заказ и данные посетите­ля будут обработаны программой magazin2.php (ее мы составим после) и от­правлены вам на H-mail в удобочитаемом виде. Также заказ и данные посети­теля будут выведены в окно браузера;

<center><table width="80%" border="2" bordereolor= "green"><tr> - строим таблицу, в ячейки которой мы будем выводить автора, название книги, цену книги и выпадающий список для выбора числа экземпляров заказываемой книги;

< ? - начало РНР-кода;

Sexten=array (".php"); - создаем массив Sexten с одним элементом, который будет нужен для поиска файлов с расширением php;

Sknigi= "books"; - переменной $knigi присваиваем название папки, где у нас находятся PHP-страницы с описанием товаров (books);

$dir=opendir($knigi); - открываем папку books и присваиваем ей идентифика­тор $dir;

While($fde=readdir($dir)) - цикл while перебирает все файлы в папке books, Каждый раз выполняя команду в фигурных скобках под номером 3;

3{

If (in_array(strchr($fde, "."), Sexten)) $c[]=$fde; - в переменной Sfde при каж­дом выполнении цикла у нас будет очередное название файла в папке books. Если помните, функция strchr (см. гл. 4) возвращает часть строки, начиная с символа, указанного в качестве второго аргумента этой функции, т. е. в на­шем случае она возвратит только расширение файла. Далее функция in_array Сравнивает полученное расширение с содержимым массива Sexten (а там у нас элемент .php). Если полученное расширение файла совпадает хотя бы с одним элементом массива Sexten, то функция in_array возвратит true. Итак, если очередной файл, выбранный в цикле while, имеет расширение php (а страницы для описания того или иного товара будут именно с такими рас­ширениями), то название этого файла заносится в новый массив $с. Таким образом, мы как бы отсекаем в папке books все остальные папки и файлы, не имеющие расширение php;

3}

Closedir(Sdir); - закрываем папку books;

Foreaeh($e as Slolo) - снова цикл, который будет выполняться столько раз, сколько файлов в массиве $с, присваивая очередной элемент массива $е пе­ременной Slolo. Все тело цикла заключено в фигурные скобки под номером 4. Для наибольшего понимания кода цикла, рассмотрим его первое выполнение, когда переменной Slolo присваивается первый (точнее, нулевой) элемент мас­сива $е. Этим элементом будет файл bookOOOl.php, который уже у нас имеет­ся в папке books;

4{

$teg=get_metajags("$knigi/Slolo"); - при помощи функции get meta tags (данная функция была рассмотрена в гл. 6) получаем массив Steg, в котором будет содержание мета-тегов на странице bookOOOl.php. Массив будет со­держать 3 элемента (для понимания можете посмотреть код страницы BookOOOl.php в листинге 9.2а): Stegfavtor] (автор книги который указан в па­раметре content="M. Булгаков"), Stegfnazvanie] (название книги, тоже указано в параметре content^ "Роковые яйца") и $teg[stoimost] (цена книги в парамет­ре content^" 100");

$/'++/ - создаем счетчик для пробегания всех PHP-страниц в папке books. При первом выполнении цикла, а мы пока рассматриваем только первое вы­полнение, переменная Si будет равна единице ($/=/);

Sstoimost[$i]=Steg[stoimost]; - создаем массив Sstoimost, первому элементу которого {Sstoimost[I]) лрисваивается стоимость первой книги;

SavtorfSiJ=$teg[avtor]; - аналогично создаем массив Savtor, первому элемен­ту которого {Savtor [1]) присваивается фамилия автора первой книги; Snazvanie[Si]=$teg[nazvanie]; - аналогично создаем массив Snazvanie, перво­му элементу которого {Snazvanie [1]) присваивается название первой книги;

Echo "<td>$teg[avtor]<br><a href=$knigi/bookOOOSi.php target=_blank> Stegfnazvanie]</a><br>($teg[stoimost] Руб.)<Ьг> - в первую ячейку таблицы выводим фамилию автора книги, название книги (оно будет являться также ссылкой на страницу bookOOOl.php) и цену книги;

Количество экземпляров:<br><select name='kniga$i' onchange=itog()> - В первой же ячейке таблицы создаем раскрывающийся список с именем Name='knigal' (при первом выполнении цикла foreach, когда Si=l). Список будет состоять из 6 пунктов (тег <option>) с цифрами от 0 до 5 {value) для выбора посетителем количества экземпляров первой книги. Цифра «О» по умолчанию будет означать, что данная книга не выбрана. Как только по­сетитель выберет из списка какую-нибудь другую цифру, произойдет собы­тие onchange (выбор) и вызовется функция itog(), которая начнет считать об­щую стоимость всех экземпляров первой книги. Эта функция была написана в начале этого кода на языке JavaScript. Вернитесь туда и посмотрите на строчку:

Kolich=kolich+1 *docume nt.forma("kniga "+n). value

Теперь, надеюсь, она вам понятна. Переменной kolich (не забываем, толь­ко при первом выполнении цикла foreach) присваивается параметр value эле­мента формы с именем name='knigar (знак «+» в JavaScript обозначает кон­катенацию или соединение данных). Параметр п для первой книги будет ра­вен 1. А парамегр value - это количество экземпляров, которое выбрал посетитель для первой книги (имя name^'knigal' у нас имеет элемент фор­мы - раскрывающийся список для первой книги). Элементы формы с имена­ми name=cena$i и name=kol$i будут переданы для JavaScript чуть позже;

<option value=0>0</option> <option value=l> l</option> <option value=2>2</option> <option value=3>3</option> <option value=4>4</option> <option value—5>5</option> </select></td>

<input type=HIDDEN name=cena$i value=$stoimost[$iJ> - создаем скрытый элемент формы с именем (при первом выполнении цикла foreach) name=cenal и value=$stoimost[l]. Это нужно для функции itogQ кода JavaScript. Данные этого элемента формы (как и раскрывающегося списка) будут нужны для подсчета общей стоимости выбранных книг;

<input type=HIDDENname=avtor$i value='$avtor[$i]'> - создаем скрытое по­ле для передачи фамилии автора первой книги странице magazin2.php, кото­рую мы создадим позже. Фамилия автора первой книги у нас в переменной $avtor[l];

<input type=HIDDEN name=nazvanie$i value='$nazvanie[$i]'>"; - аналогично создаем скрытое поле для передачи названия первой книги странице Magazin2.php;

If (($i/4) == is_integer($i/4)) echo"</tr><tr> "/ - как видно из рис. 9.1, в строке таблицы находится по 4 ячейки. Пятая книга будет уже на новой строке. Ко­роче говоря, если число книг кратно 4, то создаем новую строку для таблицы. Математическая функция is integer, если помните, возвращает целую часть числа, отбрасывая дробную. Выражение в круглых скобках оператора if бу­дет истинным только при $i=4, 8,12 и т. д.;

4} - окончание тела цикла foreach. Далее после 'первого выполнения этого цикла в папке books будет выбран второй файл book0002.php для второй кни­ги (если, конечно, данные для второй книги были переданы на сервер при помощи панели администратора admin.php), и цикл повторится вновь, но со значением переменной $i, равным двум. Также будет создан раскрываю­щийся список с выбором количества экземпляров для второй книги. Элемен­ты массивов $avtor[2], $nazvanie[2], $stoimost[2] будут содержать соответст­венно фамилию автора, названия и цену для второй книги. Функция itogQ В коде на JavaScript высчитает стоимость всех экземпляров второй книги и прибавит эту сумму к стоимости всех экземпляров первой книги (если, ко­нечно, выбранное число экземпляров первой и второй книги отлично от ну­ля). Как только функция foreach переберет все книги магазина, т. е. все php - страницы в папке books, цикл между фигурными скобками под номером 4 прекратит выполняться;

Echo "<input type=HIDDEN name=kol value=$i>"; - после окончания выпол­нения прошлого цикла в переменной $i будет общее число различных книг в магазине. Это число мы и передадим потом странице magazin2.php при по­мощи скрытого поля;

?> - окончание РНР-кода;

</tr></table></cenier><br><br> - заканчиваем таблицу;

<р align="CENTER" id- "mess" style="color:red; font-family:Comic Sans MS"></p><br> - выводим в этом месте страницы, в контейнере <р>, общее количество заказанных книг и их общую стоимость, красным шрифтом типа Comic Sans MS. Все это посчитала нам функция itog(), которую мы написали в начале кода на JavaScript. Там показано, что вывод данных должен быть в HTML-теге с идентификатором id=mess (mess, innerHTML=...). Этот иден­тификатор мы и присвоили текстовому блоку (или контейнеру) <р>.

Ваше имя: <input name="imja" type="TEXT"><br> - создаем текстовое поле для ввода имени посетителем, заказавшего книги;

Ваш E-mail: <input name="email" type="TEXT"><br><br> - создаем тексто­вое поле для ввода посетителем своего электронного адреса;

Адрес доставки: <br> <textarea name="text" cols="30" rows="10" wrap="virtual"></textarea><br> - создаем текстовое поле для ввода посети­телем своего домашнего адреса. Параметр wrap задает автоматический пере­нос строк в текстовом поле;

<input type="SUBMIT" 'а1ие="3аказать"> - после того, как посетитель мага­зина выбрал книги, в текстовых полях записал свои данные и нажал на кноп­ку «Заказать», заказ и данные посетителя передадутся для обработки на стра­ницу magazin2.php. Сам посетитель тоже переедет на ту же страницу;

</form> - завершаем вывод формы;

</body>

</html> - окончание кода.

Ваш первый Сайт С использованием РНР-скриптов

Создание сайта

Итак, при помощи данной книги вы создали сайт. Конечно, сайт в таком виде не очень привлекателен, так как он создавался исключительно для при­мера. Но используя полученные знания в этой книге, …

ИСПОЛЬЗОВАНИЕ СЕРВИСА ROBOXCHANGE ДЛЯ ОПЛАТЫ

Если у вас нет никакой возможности получить персональный аттестат, или просто лень это делать, то для оплаты товаров со своего сайта вы можете воспользоваться сервисом Roboxchange. Этот сервис дает возможность …

ИСПОЛЬЗОВАНИЕ СЕРВИСА WEB MERCHANT INTERFACE ДЛЯ ОПЛАТЫ

Сервис Web Merchant Interface позволяет получать денежные средства на свои электронные кошельки от клиентов при оплате ими электронных товаров на вашем сайте. Электронные кошельки WebMoney и Yandex мы с вами …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Партнеры МСД

Контакты для заказов оборудования:

Внимание! На этом сайте большинство материалов - техническая литература в помощь предпринимателю. Так же большинство производственного оборудования сегодня не актуально. Уточнить можно по почте: Эл. почта: msd@msd.com.ua

+38 050 512 1194 Александр
- телефон для консультаций и заказов спец.оборудования, дробилок, уловителей, дражираторов, гереторных насосов и инженерных решений.