- •Глава 1. Введение 174
- •Часть 1. Дизайн для Всемирной паутины Глава 1. Пройдемся по «понятиям»
- •Глава 2. «Вид» дизайна
- •Глава 3. Критические ошибки
- •Глава 4. Структура оптимизированных страниц
- •Глава 5. «Непрошеные» окна
- •Глава 6. Студия web-дизайна
- •Глава 7. «Это» — плохо!
- •Глава 8. Дизайн без «дизайна»
- •Глава 9. Гипертекстовый документ
- •Глава 10. Универсальный локатор ресурса
- •Часть 2. Основы создания гипертекстового документа Глава 1. Введение
- •Глава 2. Этикет в «паутине»
- •Глава 3. Структура
- •Глава 4. Внутри документа
- •Глава 5. Тестируйте свой документ
- •Глава 6. Таблица или фреймы
- •Глава 7. Перекодировщики кириллицы
- •Часть 3.Описание языка гипертекстовых документов Глава 1. Гипертекстовый язык
- •Глава 2.Термины гипертекста
- •Глава 3. Использование звуков
- •Глава 4. Создание графического меню
- •Глава 5. Текстовые стили
- •Глава 6. Общий интерфейс и формы языка
- •Глава 7. Фреймы
- •Глава 8.Планирование и взаимодействие фреймов
- •Глава 9.Зарезервированные имена фреймов
- •Глава 10.Создание документа html
- •Глава 11. Формы в html документах
- •Глава 12. Html 4.0
- •Глава 13. Тэги
- •Глава 15. Создание документов в формате html 4.0
- •Глава 16. Sgml и html
- •Глава 17. Как читать html dtd
- •Глава 18. Представление документа в формате html
- •Глава 19. Глобальная структура документа
- •Глава 20. Тело документа
- •Глава 21. Списки
- •Глава 22. Таблицы стилей
- •Часть 4. Редакторы web-страниц Глава 1. Основные требования
- •Глава 2. Adobe ImageReady
- •Глава 3. Corel Xara
- •Глава 4. Macromedia Fireworks
- •Глава 5. Macromedia Dreamweaver
- •Глава 6. Metacreation Headline Studio
- •Глава 7. HomeSite
- •Глава 8. Microsoft FrontPage Express
- •Часть 5. Создание Интернет-портала Глава 1. Что такое портал?
- •Глава 2. Что такое современный корпоративный портал?
- •Глава 3. Для чего нужен корпоративный портал?
- •Глава 4. Использование пакета Cold Fusion
- •Глава 5. Использование пакета Web-Oracle-Web (wow)
- •Часть 6. Cgi, php, Perl, MySql и cms системы Глава 1. Cgi
- •Глава 2. Выбор cms
- •Глава 3. Серверные скрипты
- •Глава 4. Вступление в php и MySql
- •Глава 5. Написание Гостевой книги на рнр
- •Глава 6. Гостевая книга на php — еще один вариант
- •Глава 7. Графический счетчик на php
- •Часть 7. Life Site cms — система создания и развития сайтов Глава 1. Введение
- •Глава 2. Что такое cms?
- •Глава 3. Функциональность системы
- •Глава 4. Часто задаваемые вопросы
- •Часть 8. «Раскрутка» сайта Глава 1.Выгодность хорошей «раскрутки»
- •Глава 2. Как создать вирусный трафик с помощью бесплатных электронных книг
- •Глава 3.Правильная раскрутка проекта и привлечение нужных посетителей
- •Глава 4. Экономика проекта
- •Глава 5. Стратегия эффективной работы с партнерскими программами
- •Глава 6. Преимущества использования Интернета в сетевом маркетинге
- •Глава 7. Как получить более 20 000 посетителей в день на свой сайт?
- •Глава 8. Банерная реклама
- •Часть 9. Заработок при помощи своего сайта Глава 1. Бесплатное место под ваш сайт
- •Глава 2. Как заработать на своем сайте
- •Глава 3. Банер и оплата его размещения
- •Глава 4. Влияние местоположения банера на его эффективность
- •Глава 5. Банерокрутилка на JavaScript
- •Глава 6. Бесплатное размещение web-страницы на сервере www.Geocities.Com
- •Часть 10. Уроки мастерства Глава 1. Выбираем и настраиваем домашний Web-сервер
- •Глава 2. Выводим иллюстрации в отдельном окне
- •Глава 3. Добавляем страницу в Избранное
- •Глава 4. «Откат назад» с помощью JavaScript
- •Глава 5. Индикатор состояния icq
- •Глава 6. Как поменять цвет скролл-бара
- •Глава 7. Как «обмануть» фреймы
- •Глава 8. Свойства тэга mailto
- •Глава 9. Пример практического создания сайта
- •Часть 11. Тонкости и секреты Глава 1. Фреймы
- •Глава 2. Ускоряем загрузку графики
- •Глава 3. Создаем систему быстрой навигации
- •Глава 4. Защитим страницу паролем
- •Глава 5. Устанавливаем счетчик
- •Глава 6. Десять советов web-дизайнеру
- •Глава 7. Каскадные таблицы стилей — css
- •Вопросы и ответы
- •Приложения Арсенал web-строителя
- •Тэги html
- •Meta-тэги
- •Хостинг
- •Бесплатная регистрация в поисковиках
- •Лучшие русскоязычные хостинг-серверы
- •Каталог бесплатного хостинга
- •Краткий словарь Интернета
- •Список использованных материалов
Глава 4. Вступление в php и MySql
РНР
PHP – это скрипт-язык (scripting language), встраиваемый в HTML, который интерпретируется и выполняется на сервере. Проще всего это показать на примере:
<html> <head>
<title>Example</title> </head> <body>
<?php echo "Hi, I'm a PHP script!"; ?> </body> </html>
После выполнения этого скрипта мы получим страничку, в которой будет написано
Hi, I'm a PHP script! Весьма просто и бесполезно.
Основное отличие от CGI-скриптов, написанных на других языках, типа Perl или C – это то, что в CGI-программах вы сами пишете выводимый HTML-код, а, используя PHP – вы встраиваете свою программу в готовую HTML-страницу, используя открывающий и закрывающий тэги (в примере <?php и ?>).
Отличие PHP от JavaScript, состоит в том, что PHP-скрипт выполняется на сервере, а клиенту передается результат работы, тогда как в JavaScript-код полностью передается на клиентскую машину и только там выполняется. Любители Internet Information Server найдут, что PHP очень похож на Active Server Pages (ASP), а энтузиасты Java скажут, что PHP похож на Java Server Pages (JSP). Все три языка позволяют размещать код, выполняемый на Web-сервере, внутри HTML страниц.
Возможности PHP
В нескольких словах – на PHP можно сделать все, что можно сделать с помощью CGI–программ. Например: обрабатывать данные из форм, генерировать динамические страницы, получать и посылать куки (cookies).
Кроме этого в PHP включена поддержка многих баз данных (databases), что делает написание Web-приложений с использованием БД до невозможности простым.
Вот неполный перечень поддерживаемых БД:
Adabas D
InterBase
Solid
dBase
mSQL
Sybase
Empress
MySQL
Velocis
FilePro
Oracle
Unix dbm
Informix
PostgreSQL
Вдобавок ко всему PHP понимает протоколы IMAP, SNMP, NNTP, POP3 и даже HTTP, а также имеет возможность работать с соке-тами (sockets) и общаться по другим протоколам.
Краткая история PHP
Началом PHP можно считать осень 1994 года, когда Rasmus Lerdorf решил расширить возможности своей Home-page и написать небольшой движок для выполнения простейших задач. Такой движок был готов к началу 1995 года и назывался Personal Home Page Tools. Умел он не очень много – понимал простейший язык и всего несколько макросов.
К середине 1995 года появилась вторая версия, которая называлась PHP/FI Version 2. Приставка FI – присоединилась из другого пакета Rasmusa, который умел обрабатывать формы (Form Interpritator). PHP/FI компилировался внутрь Apache и использовал стандартный API Apache. PHP скрипты оказались быстрее аналогичных CGI – скриптов, так как серверу не было необходимости порождать новый процесс. Язык PHP по возможностям приблизился к Perl, самому популярному языку для написания CGI-программ. Была добавлена поддержка множества известных баз данных (например, MySQL и Oracle). Интерфейс к GD – библиотеке, позволял генерировать картинки на лету. С этого момента началось широкое распространение PHP/FI.
В конце 1997 Zeev Suraski и Andi Gutmans решили переписать внутренний движок, с целью исправить ошибки интерпретатора и повысить скорость выполнения скриптов. Через полгода, 6 июня 1998 года вышла новая версия, которая была названа PHP 3.
К лету 1999 года PHP 3 был включен в несколько коммерческих продуктов. По данным NetCraft на ноябрь 1999 PHP использовался в более чем 1 млн. доменах.
2000 год — переписанный движок PHP4.
На сегодняшний день используется новая версия PHP 5, ее производительность в десятки раз выше чем у предыдущей.
Почему нужно выбирать PHP
Разработчикам Web-приложений нет необходимости говорить, что web-страницы — это не только текст и картинки. Достойный внимания сайт должен поддерживать некоторый уровень интерактивности с пользователем: поиск информации, продажа продуктов, конференции и т.п. Традиционно все это реализовалось CGI-скриптами, написанными на Perl. Но CGI- скрипты очень плохо масштабируемы. Каждый новый вызов CGI, требует от ядра порождения нового процесса, а это занимает процессорное время и тратит оперативную память. PHP предлагает другой вариант – он работает как часть Web-сервера, и этим самым похож на ASP от Microsoft.
Синтаксис PHP очень похож на синтаксис C или Perl. Люди, знакомые с программированием, очень быстро смогут начать писать программы на PHP. В этом языке нет строгой типизации данных и нет необходимости в действиях по выделению/освобождению памяти. Программы, написанные на PHP, достаточно легкочитаемы. Написанный PHP – код легко зрительно прочитать и понять, в отличие от Perl-про-грамм.
Недостатки PHP
PHP является интерпретируемым языком, и, вследствие этого, не может сравниться по скорости с компилируемым С. Однако при написании небольших программ, что, в общем-то, присуще проектам на PHP, когда весь проект состоит из многих небольших страниц с кодом, вступают в силу накладные расходы на загрузку в память и вызов CGI-програм-мы, написанной на С.
Не такая большая база готовых модулей, как, например, СPAN у Perl. С этим ничего нельзя поделать – это дело времени. В PHP 4 разработчики предусмотрели специальный репозиторий, аналогичный CPAN, и я думаю, очень скоро будет написано достаточное количество модулей для его наполнения.
MySQL
MySQL – компактный многопоточный сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании.
MySQL был разработан компанией TcX для внутренних нужд, которые заключались в быстрой обработке очень больших баз данных. Компания утверждает, что использует MySQL с 1996 года на сервере с более чем 40 БД, которые содержат 10,000 таблиц, из которых более чем 500 имеют более 7 миллионов строк.
MySQL является идеальным решением для малых и средних приложений. Исходники сервера компилируются на множестве платформ. Наиболее полно возможности сервера проявляются на Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост производительности.
На текущий момент MySQL все еще в стадии разработки, хотя версии 3.22 полностью работоспособны.
MySQL-сервер является бесплатным для некоммерческого использования. Иначе необходимо приобретение лицензии.
Возможности MySQL
MySQL поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет множество расширений к этому стандарту, которых нет ни в одной другой СУБД.
Краткий перечень возможностей MySQL:
Поддерживается неограниченное количество пользователей, одновременно работающих с базой данных.
Количество строк в таблицах может достигать 50 млн.
Быстрое выполнение команд. Возможно MySQL самый быстрый сервер из существующих.
Простая и эффективная система безопасности.
MySQL действительно очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД. В MySQL отсутствуют:
Поддержка вложенных запросов, типа SELECT * FROM table1 WHERE id IN (SELECT id FROM table2). Утверждается, что такая возможность будет в версии 3.23.
Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE.
Нет поддержки внешних (foreign) ключей.
Нет поддержки триггеров и хранимых процедур.
Нет поддержки представлений (VIEW). В версии 3.23 планируется возможность создавать представления.
Примеры использования PHP
Работа с формами
В этом примере показано как в PHP легко обрабатывать данные с HTML – форм.
Создадим простой HTML файл.
<HTML>
<HEAD>
<TITLE>Запрос информации</TITLE>
<BODY>
<CENTER>
Хотите больше знать о наших товарах?
<P>
<TABLE WIDTH = 400><TR><TD align = right>
<FORM ACTION="email.php3" METHOD="POST">
Ваше имя:<BR>
<INPUT TYPE="text" NAME="name" SIZE="20" MAXLENGTH="30">
<P>
Ваш email:<BR>
<INPUT TYPE="text" NAME="email" SIZE="20" MAXLENGTH="30">
<P>
Меня интересуют:
<SELECT NAME="preference">
<OPTION value = "Яблоки">Яблоки
<OPTION value = "Апельсины">Апельсины
</SELECT>
<P>
<INPUT TYPE="submit" VALUE="Отправить запрос!">
</FORM>
</TD></TR></TABLE></CENTER>
</BODY>
</HTML>
Назовем этот файл request.html. В нем мы указали, что данные формы будут обрабатываться файлом email.php3. Приведем его содержание:
<?
/* Этот скрипт получает переменные из request.html */
PRINT "<CENTER>";
PRINT "Привет, $name.";
PRINT "<BR><BR>";
PRINT "Спасибо за ваш интерес.<BR><BR>";
PRINT "Вас интересуют $preference. Информацию о них мы пошлем вам
на email: $email.";
PRINT "</CENTER>";
?>
Теперь, если пользователь вызовет request.html и наберет в форме имя «Вася», email: vasya@pupkin.com и скажет, что его интересуют «Яблоки», а после этого нажмет «Отправить запрос!», то в ответ вызовется email.php3, который выведет на экран примерно следующее:
Привет, Вася
Спасибо за ваш интерес.
Вас интересуют Яблоки. Информацию о них мы пошлем вам на email:
vasya@pupkin.com
Теперь мы должны сдержать обещание и выслать email.
Для этого в PHP есть функция MAIL.
Синтаксис:
void mail(string to, string subject, string message, string add_headers);
to – email адрес получателя.
subject – тема письма.
message – собственно текст сообщения.
add_headers – другие параметры заголовка письма (необязательный параметр).
Допишем в конец файла email.php3 следующий код:
<?
mail($email, "Запрос на информацию", "$name\\n
Спасибо за ваш интерес!\\n
Вас интересуют $preference\\n
Мы их распространяем бесплатно. Обратитесь в ближайший филиал нашей компании и получите ящик этого продукта.\\n
");
mail("administration@me.com",
"Был запрос на информацию.",
"$name интересовали $preference\\n
email-адрес: $email. \\n");
?>
Вот теперь пользователь будет получать письмо с более подробной информацией о наших товарах. Также письмо получит и администратор сайта.
Когда интересующихся нашими товарами станет очень много, мы захотим их как-то упорядочить и хранить информацию о них в базе данных.
Работа с MySQL: сохранение данных в базе данных
Для начала создаем базу данных и таблицу. Входим в MySQL, и выполняем команды:
>CREATE DATABASE products;
>CREATE TABLE clients (name VARCHAR(25), email VARCHAR(25),
choise VARCHAR(8));
Для общения с MySQL из PHP понадобятся следующие функции.
int mysql_connect(string hostname, string username, string
password);
Создать соединение с MySQL.
Параметры:
Hostname – имя хоста, на котором находится база данных.
Username – имя пользователя.
Password – пароль пользователя.
Функция возвращает параметр типа int, который больше 0, если соединение прошло успешно, и равен 0 в противном случае.
int mysql_select_db(string database_name, int link_identifier);
Выбрать базу данных для работы.
Параметры:
Database_name – имя базы данных.
link_identifier – ID соединения, которое получено в функции mysql_connect (параметр необязательный, если он не указывается, то используется ID от последнего вызова mysql_connect).
Функция возвращает значение true или false.
int mysql_query(string query, int link_identifier);
Функция выполняет запрос к базе данных.
Параметры:
Query – строка, содержащая запрос.
link_identifier – см. предыдущую функцию.
Функция возвращает ID результата или 0, если произошла ошибка.
int mysql_close(int link_identifier);
Функция закрывает соединение с MySQL.
Параметры:
link_identifier – см. выше.
Функция возвращает значение true или false.
Теперь наш файл email.php3 будет иметь следующий вид:
<?
/* Этот скрипт получает переменные из request.html */
/* Некоторые переменные */
$hostname = "localhost";
$username = "myusername";
$password = "mypassword";
$dbName = "products";
/* Таблица MySQL, в которой хранятся данные */ $userstable = "clients";
/* email администратора */ $adminaddress = "administration@me.com";
/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
PRINT "<CENTER>";
PRINT "Привет, $name.";
PRINT "<BR><BR>";
PRINT "Спасибо за ваш интерес.<BR><BR>";
PRINT "Вас интересуют $preference. Информацию о них мы пошлем вам
на email: $email.";
PRINT "</CENTER>";
/* Отправляем email */
mail($email, "Запрос на информацию", "$namen\\n Спасибо за ваш интерес!\\n Вас интересуют $preference\\n
Мы их распространяем бесплатно. Обратитесь в ближайший филиал нашей компании и получите ящик этого продукта.\\n ");
mail("administration@me.com", "Был запрос на информацию.", "$name интересовали $preference\\n email-адрес: $email. \\n");
/* Вставить информацию о клиенте в таблицу */
$query = "INSERT INTO $userstable VALUES('$name','$email',
'$preference')";
$result = MYSQL_QUERY($query);
PRINT "Информация о вас занесена в базу данных.";
/* Закрыть соединение */
MYSQL_CLOSE();
?>
Вот так легко можно работать с базой данных в PHP. Теперь кроме письменных уведомлений, информация о клиенте и его интересах будет заносится в таблицу MySQL.
Работа с MySQL: получение данных из базы данных
После занесения данных, нас иногда будет интересовать вопрос так кого же из наших клиентов интересует товар «Яблоки».
Напишем скрипт apple.php3:
<?/* Скрипт показывает клиентов, которые яблоки любят больше чем
апельсины */
$hostname = "localhost";
$username = "myusername";
$password = "mypassword";
$dbName = "products";
/* Таблица MySQL, в которой хранятся данные */ $userstable = "clients";
/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
/* Выбрать всех клиентов — яблочников */
$query = "SELECT * FROM $userstable WHERE choice = 'Яблоки'";
$result = MYSQL_QUERY($query);
/* Как много нашлось таких */ $number = MYSQL_NUMROWS($result);
/* Напечатать всех в красивом виде*/ $i = 0;
IF ($number == 0) {
PRINT "<CENTER><P>Любителей яблок нет</CENTER>";
} ELSEIF ($number > 0) {
PRINT "<CENTER><P>Количество любителей яблок: $number<BR><BR>";
WHILE ($i < $number){
$name = mysql_result($result,$i,"name");
$email = mysql_result($result,$i,"email");
PRINT "Клиент $name любит Яблоки.<BR>";
PRINT "Его Email: $email.";
PRINT "<BR><BR>";
$i++;
}
PRINT "</CENTER>";
}
?>
Здесь мы использовали две новых функции:
int mysql_num_rows(int result);
Функция возвращает количество строк в результате запроса.
Параметр result – содержит ID результата запроса.
int mysql_result(int result, int i, column);
Функция возвращает значение поля в столбце column и в строке i.
Вот и все, коммерческий продукт практически готов.
