:::::::::::::::::::::::::::::::::::::::::::
Главная страница
:::::::::::::::::::::::::::::::::::::::::::
Обучение
Лучшие ученики
Преподаватель
Регистрация
:::::::::::::::::::::::::::::::::::::::::::
Гостевая книга
:::::::::::::::::::::::::::::::::::::::::::
Документация
:::::::::::::::::::::::::::::::::::::::::::
О сайте
:::::::::::::::::::::::::::::::::::::::::::
Повышение квалификации
:::::::::::::::::::::::::::::::::::::::::::
Вступление в PHP и MySQL Вадим Ткаченко, 2004-01-24 Основные источники – это руководство по PHP ) и MySQL Также при подготовке статьи использовались материалы из и Некоторые пункты являются переводами из этих источников. Основное отличие от CGI-скриптов, написанных на других языках, типа Perl или C – это то, что в CGI-программах вы сами пишете выводимый HTML-код, а, используя PHP – вы встраиваете свою программу в готовую HTML-страницу, используя открывающий и закрывающий теги (в примере ). Отличие 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 млн. доменах. Почему нужно выбирать PHP Разработчикам Web-приложений нет необходимости говорить, что web-страницы - это не только текст и картинки. Достойный внимания сайт должен поддерживать некоторый уровень интерактивности с пользователем : поиск информации, продажа продуктов, конференции и т.п. Традиционно все это реализовалось CGI-скриптами, написанными на Perl. Но CGI- скрипты очень плохо масштабируемы. Каждый новый вызов CGI, требует от ядра порождения нового процесса, а это занимает процессорное время и тратит оперативную память. PHP предлагает другой вариант – он работает как часть Web-сервера, и этим самым похож на ASP от Microsoft. Синтаксис PHP очень похож на синтаксис C или Perl. Люди, знакомые с программированием, очень быстро смогут начать писать программы на PHP. В этом языке нет строгой типизации данных и нет необходимости в действиях по выделению/освобождению памяти. Программы, написанные на PHP, достаточно легкочитаемы. Написанный PHP – код легко зрительно прочитать и понять, в отличие от Perl-программ. Недостатки PHP 1. PHP является интерпретируемым языком, и, вследствие этого, не может сравниться по скорости с компилируемым С. Однако при написании небольших программ, что, в общем-то, присуще проектам на PHP, когда весь проект состоит из многих небольших страниц с кодом, вступают в силу накладные расходы на загрузку в память и вызов CGI-программы, написанной на С. 2. Не такая большая база готовых модулей, как, например, СPAN у Perl. С этим ничего нельзя поделать – это дело времени. В PHP 4 разработчики предусмотрели специальный репозиторий PEAR, аналогичный CPAN, и я думаю, очень скоро будет написано достаточное количество модулей для его наполнения. Что такое MySQL. MySQL – компактный многопоточный сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании. MySQL был разработан компанией TcX для внутренних нужд, которые заключались в быстрой обработке очень больших баз данных. Компания утверждает, что использует MySQL с 1996 года на сервере с более чем 40 БД, которые содержат 10,000 таблиц, из которых более 24.01.2004 чем 500 имеют более 7 миллионов строк. MySQL является идеальным решением для малых и средних приложений. Исходники сервера компилируются на множестве платформ. Наиболее полно возможности сервера проявляются на Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост производительности. На текущий момент MySQL все еще в стадии разработки, хотя версии 3.22 полностью работоспособны. MySQL-сервер является бесплатным для некоммерческого использования. Иначе необходимо приобретение лицензии, стоимость которой составляет 190 EUR. Возможности MySQL. MySQL поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет множество расширений к этому стандарту, которых нет ни в одной другой СУБД. Краткий перечень возможностей MySQL. 1. Поддерживается неограниченное количество пользователей, одновременно работающих с базой данных. 2. Количество строк в таблицах может достигать 50 млн. 3. Быстрое выполнение команд. Возможно MySQL самый быстрый сервер из существующих. 4. Простая и эффективная система безопасности. MySQL действительно очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД. В MySQL отсутствуют: 1. Поддержка вложенных запросов, типа SELECT * FROM table1 WHERE id IN (SELECT id FROM table2). 2. Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE. 3. Нет поддержки триггеров и хранимых процедур. По словам создателей именно эти пункты дали возможность достичь высокого быстродействия. Их реализация существенно снижает скорость сервера. Эти возможности не являются критичными при создании Web-приложений, что в сочетании с высоким быстродействием и малой ценой позволило серверу приобрести большую популярность Примеры использования PHP Работа с формами. В этом примере показано как в PHP легко обрабатывать данные с HTML – форм. Назовем этот файл request.html. В нем мы указали, что данные формы будут обрабатываться файлом email.php. Приведем его содержание: "; PRINT "Привет, ".$_POST['name']; PRINT "

"; PRINT "Спасибо за ваш интерес.

"; PRINT "Вас интересуют ".$_POST['preference'].", информацию о них мы пошлем вам на email: ".$_POST['email']; PRINT ""; ?> Теперь, если пользователь вызовет request.html и наберет в форме имя “Вася”, email: vasya@pupkin.com и скажет, что его интересуют “Яблоки”, а после этого нажмет "Отправить запрос!", то в ответ вызовется email.php, который выведет на экран примерно следующее: Привет, Вася Спасибо за ваш интерес. Вас интересуют Яблоки. Информацию о них мы пошлем вам на 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.php следующий код Вот теперь пользователь будет получать письмо с более подробной информацией о наших товарах. Также письмо получит и администратор сайта. Когда интересующихся нашими товарами станет очень много, мы захотим их как-то упорядочить и хранить информацию о них в базе данных. Об этом в следующем примере. Работа с 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.php будет иметь след. вид: "; echo "Привет, ".$_POST['name']; echo "

"; echo "Спасибо за ваш интерес.

"; echo "Вас интересуют ".$_POST['preference'].". Информацию о них мы пошлем вам на email: ".$_POST['email']; echo ""; /* Отправляем email-ы */ $subj = "Запрос на информацию"; $text = "Уважаемый ".$_POST['name']."! Спасибо за ваш интерес! Вас интересуют ".$_POST['preference']." Мы их распространяем бесплатно. Обратитесь в ближайший филиал нашей компании и получите ящик этого продукта."; mail($_POST['email'], $subj, $text); $subj="Поступил запрос на информацию"; $text = $_POST['name']." интересовали ".$_POST['preference']." email-адрес: ".$_POST['email']; mail($adminaddress, $subj, $text); /* составить запрос для вставки информации о клиенте в таблицу */ $query = "INSERT INTO $userstable VALUES('$name','$email', '$preference')"; /* Выполнить запрос. Если произойдет ошибка - вывести ее. */ mysql_query($query) or die(mysql_error()); echo "Информация о вас занесена в базу данных."; /* Закрыть соединение */ mysql_close(); ?> Вот так легко можно работать с базой данных в PHP. Теперь кроме письменных уведомлений, информация о клиенте и его интересах будет заносится в таблицу MySQL. Работа с MySQL (получение данных из базы данных). После занесения данных, нас иногда будет интересовать вопрос так кого же из наших клиентов интересует товар “Яблоки” (не путать с Apple Macintosh, по поводу Apple Macintosh см. www.stealthcomp.com). Напишем скрипт apple.php

Любителей яблок нет"; } else { echo "

Количество любителей яблок: $number

"; /* Получать по одной строке из таблицы в массив $row, пока строки не кончатся */ while ($row=mysql_fetch_array($res)) { echo "Клиент ".$row['name']." любит Яблоки.
"; echo "Его Email: ".$row['email']; echo "

"; } echo "

"; } ?> Вот и все, коммерческий продукт практически готов.
Статьи
21 ошибка программиста. Часть1
Подробнее

21 ошибка программиста. Часть2
Подробнее

21 ошибка программиста. Часть3
Подробнее

Вступление в PHP и MySQL.
Подробнее

Ловля ошибок в PHP.
Подробнее

Народная самодеятельность.
Подробнее

Оптимизация запросов в MySQL.
Подробнее

Пишем PHP код. Проба пера
Подробнее

Приемы безопасного програмиров-я
Подробнее

Работа с MySQL 1. Новостная лента
Подробнее

Работа с MySQL 2. Деревья
Подробнее

Работа с MySQL 3. Подробности
Подробнее

Обучающая система "Язык PHP", 2006 г.