4371

Создание динамических сайтов средствами PHP и MySQL

Лекция

Информатика, кибернетика и программирование

PHP и MySQL. Основным достоинством динамических сайтов, по сравнению со статическими, является возможность отделения данных от кода, отвечающего за их визуальное представление. Благодаря такому подходу, можно создавать сайты, формирующие страницы в...

Русский

2012-11-18

80.5 KB

214 чел.

PHP и MySQL.

Основным достоинством динамических сайтов, по сравнению со статическими, является возможность отделения данных от кода, отвечающего за их визуальное представление. Благодаря такому подходу, можно создавать сайты, формирующие страницы в зависимости от запросов посетителей. Однако для того, чтобы создать такой сайт, необходимо организовать хранилище структурированных данных. Это необходимо для того, чтобы программа, формирующая страницы, могла выбирать данные согласно критериям запроса, поступившего от посетителя сайта.

Самым простым способом организации хранилища данных является использование текстовых файлов. Можно хранить данные в одном или нескольких текстовых файлах, а внутри файлов отделять элементы данных друг от друга при помощи символов – разделителей. Такой способ организации данных может быть эффективен при небольшом количестве хранимой и обрабатываемой информации. Однако для того, чтобы оперировать данными, хранимыми в текстовых файлах, необходимо разработать набор подпрограмм для добавления, удаления, модификации и выборки данных. В случае если структура данных будет изменена, подпрограммы управления данными придется переписывать.

Для того чтобы избежать подобных трудностей, можно использовать базы данных. Оперировать данными, занесенными в базу данных (БД), можно при помощи СУБД – системы управления базой данных. СУБД предоставляют интерфейс, при помощи которого можно организовывать базы данных с произвольной внутренней структурой и управлять данными, расположенными в них.

В настоящий момент наиболее широкое распространены еляционные базы данных. Информация в них представляется в виде набора таблиц. Каждая таблица содержит одну или несколько колонок, которые описывают атрибуты данных, а каждая строка таблицы является экземпляром данных. В качестве языка управления базой данных используется язык структурированных запросов SQL.

Схема работы динамического сайта, использующего в качестве хранилища базу данных:

  1.  Браузер посылает запрос веб-серверу на формирование HTML- страницы
  2.  Веб-сервер запускает интерпретатор PHP для выполнения скрипта, формирующего HTML-страницу
  3.  В процессе работы скрипта осуществляется обращение к базе данных для выборки информации, соответствующей параметрам запроса, посланного браузером
  4.  На основе информации, выбранной из базы данных, PHP- скрипт формирует HTML-страницу
  5.  Веб-сервер возвращает браузеру сформированную HTML-страницу
  6.  Браузер интерпретирует HTML-инструкции, содержащиеся в теле полученной страницы, и выводит ее содержимое на экран монитора

В настоящее время для организации хранилища данных веб-приложений наиболее часто используется СУБД MySQL.

MySQL является компактным и простым в эксплуатации сервером баз данных, доступным для платформ Unix, Windows NT, Windows 9x. При функционировании под управлением ОС Unix СУБД использует потоки, что позволяет создать на базе MySQL высокопроизводительный и хорошо масштабируемый сервер баз данных.

MySQL поддерживает стандарты начального уровня ANSI SQL92 и ODBC. Приложения базы данных могут быть реализованы при помощи популярных языков высокого уровня, таких как C, Perl, PHP и другие. СУБД позволяет оперировать таблицами с суммарным объемом данных до 4 Гбайт.

В PHP реализован набор функций, позволяющих скрипту взаимодействовать с MySQL. Для того чтобы воспользоваться базой данных, необходимо установить соединение между клиентской программой (в данном случае программой, написанной на языке PHP) и сервером MySQL. Установить соединение можно при помощи функции:

mysql_connect("хост[:порт][сокет]", "имя пользователя", "пароль")

Функция получает три входных параметра: хост, имя пользователя и пароль. Хост – имя сервера, на котором установлена СУБД. В случае, если веб-сервер и сервер базы данных работают на одной машине, значение параметра хост имеет значение "localhost". После имени хоста можно так же указать порт и путь к сокету. Это необходимо в случае, если в настройках используются порт и сокет, отличные от установленных по умолчанию.

Имя пользователя – логин пользователя, которому разрешен доступ к СУБД.

Пароль – пароль пользователя, которому разрешен доступ к СУБД.

Функция возвращает идентификатор соединения в случае успеха и значение "ложь" при неудаче. Идентификатор соединения будет использоваться при вызове всех функций, посылающих запросы серверу MySQL.

Если сделать повторный вызов rnysql_connect с теми же аргументами, новое соединение с сервером не будет установлено; будет возвращен идентификатор уже открытого соединения.

Обычно логин и пароль пользователя устанавливаются системным администратором.

После установки для обращения к MySQL достаточно указать в качестве хоста localhost, а в качестве имени пользователя и пароля использовать пустые строки (создание пользователей и раздача прав доступа осуществляется после установки администратором).

После завершения работы PHP-программы соединение будет автоматически закрыто. Однако если возникает необходимость закрыть соединение в процессе работы программы, можно воспользоваться функцией

mysql_close(идентификатор соединения)

В качестве параметра функция получает идентификатор соединения, которое необходимо закрыть

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

mysql_select_db("имя базы данных",[идентификатор соединения])

Параметрами функции являются имя базы данных и идентификатор соединения. Идентификатор соединения не является обязательным параметром. Поскольку в процессе работы программы, как правило, используется одно соединение, его не обязательно каждый раз указывать в явном виде.

Создать базу данных можно при помощи функции

mysql_create_db("имя базы данных",[идентификатор соединения])

Другой возможностью для создания новой базы данных является посылка запроса "create database" при помощи функции mysql_query, которая будет рассмотрена ниже.

Удалить базу данных со всем ее содержимым можно при помощи функции

mysql_drop_db("имя базы данных",[идентификатор соединения])

Аналогичного результата можно достигнуть путем посылки sql-запроса "drop database".

Одной из важнейших функций является функция отправки SQL-запроса

mysql_query ("запрос",[идентификатор соединения])

Функция возвращает идентификатор результата. Для команд определения данных, таких как CREATE, ALTER, DROP, идентификатор результата указывает на успех или неудачу при выполнении запроса.

Для команд манипулирования данными, таких как DELETE, INSERT, UPDATE, идентификатор результата позволяет узнать количество обработанных строк.

Для команды SELECT идентификатор результата является указателем на результирующий набор выбранных данных.

Узнать количество записей, выбранных в ответ на запрос, можно при помощи функции

mysql_num_rows (идентификатор результата)

Функция возвращает количество записей в наборе, ассоциированном с идентификатором результата. Следует заметить, что речь идет только об идентификаторе результата, полученного после запроса типа select.

Получить доступ к результатам выборки можно при помощи функций

mysql_fetch_row (идентификатор результата)

mysql_fetch_array (идентификатор результата)

Перечисленные выше функции получают в качестве параметра идентификатор результата. При выполнении функции извлекается одна запись из результирующего набора и возвращается в виде массива. Внутренний указатель автоматически перемещается на следующую запись (результат запроса может содержать более одной записи). В случае, если на момент вызова все записи были пройдены, функция возвращает значение "ложь".

После выполнения mysql_query указатель соответствующего результирующего набора устанавливается на первой записи. Последовательный вызов функции позволяет получить доступ ко всем записям результирующего набора.

Функции mysql_fetch_array и mysql_fetch_row отличаются типом возвращаемого результата:

  •  mysql_fetch_array возвращает ассоциативный массив, названия элементов которого соответствуют названиям столбцов в запросе типа select (и, соответственно, в полученном результате);
  •  mysql_fetch_row возвращает массив, индексированный числами, начиная с элемента 0 (последовательность элементов массива соответствует последовательности их перечисления в запросе).

Память, хранящая результирующий набор данных, автоматически освобождается сразу после окончания работы PHP-скрипта. Однако если по каким-либо причинам возникает необходимость в досрочном освобождении памяти, необходимо воспользоваться функцией

mysql_free_result(идентификатор результата)

В процессе работы с базой данных могут возникать различные ошибки (например, могут быть обнаружены синтаксические ошибки в SQL-запросах.). Для того, чтобы получить сообщение об ошибке, возвращенное сервером MySQL, можно воспользоваться функцией

mysql_error (идентификатор соединения)

Функция возвращает сообщение об ошибке, полученное от сервера в результате предыдущей команды (функции, запроса), связанной с обращением к MySQL. Ошибки, возникающие на сервере MySQL, не вызывают прекращение выполнения сценария.

Рассмотрим пример, иллюстрирующий взаимодействие PHP и MySQL. Проектируемое веб-приложение должно предоставить посетителю сайта возможность заполнить и отправить форму, содержащую поля «Имя» и «Почтовый адрес». Данные, отправленные посетителем должны храниться в базе данных. Для просмотра информации, отправленной пользователями, должен быть реализован отдельный скрипт.

Разработка приложения начинается с определения структуры базы данных. В данном случае, база данных будет состоять из одной таблицы следующего формата:


Поле

Тип данных

Описание

id

id int not null primary key auto_increment

Идентификатор посетителя

person

varchar(255) not null

Имя посетителя

name

mail varchar(255) not null

Почтовый адрес

База данных будет называться testbase. Для создания базы необходимо запустить входящий в состав СУБД консольный клиент mysql.exe (для OC Windows) и выполнить команду

create database testbase;

Создать таблицу (users), хранящую информацию о посетителях, можно также при помощи клиента, либо написав и выполнив следующий скрипт:

init.php

<?

if (!mysql_connect("localhost","root","")) die("Ошибка соединения");

mysql_select_db('testbase');

mysql_query("create table users(

id int not null primary key auto_increment,

person varchar(255) not null,

mail varchar(255) not null

)");

?>

Скрипт, обрабатывающий форму, должен анализировать данные на предмет наличия пустых полей и при обнаружении – выдавать сообщения об ошибке. В случае успешного добавления данных также должно выдаваться соответствующее сообщение.

input.php

<html>

<body>

<?

if (isset($ok)) {

if (!mysql_connect("localhost","root","")) die("Ошибка соединения");

mysql_select_db('testbase');

if (trim($person)=='') echo 'Необходимо ввести имя<br>';

elseif (trim($mail)=='') echo 'Необходимо ввести адрес<br>';

else {

$person=addslashes($person);

$mail=addslashes($mail);

mysql_query("insert into users values(NULL,'$person','$mail')");

 echo 'Данные сохранены<br>';

 }

}

?>

<form action="input.php" method="post">

 Имя: <input type="text" name="person"><br>

 Адрес: <input type="text" name="mail"><br>

<input type="submit" name="ok" value="ok">

</form>

</body>

</html>

При первой загрузке страницы отображается форма для ввода данных. При нажатии на кнопку «ok» страница перезагружается. Устанавливается соединение с базой данных. В случае обнаружения пустых полей в форме выводится сообщение об ошибке. Если пустые поля не обнаружены, в таблицу users добавляется новая запись с полученными параметрами и отображается сообщение об успешном добавлении данных.

После выполнения скрипта, вне зависимости от результатов его работы, вновь отображается форма.

Для просмотра записей в таблице реализуется отдельный скрипт.

output.php

<html>

<body>

<?

if (!mysql_connect("localhost","root","")) die("Ошибка соединения");

mysql_select_db('testbase');

$q=mysql_query("select * from users order by person");

while ($r=mysql_fetch_array($q))

echo $r['id'].' '.$r['person'].' '.$r['mail'].'<br>';

?>

</body>

</html>

Скрипт устанавливает соединение с базой данных, отправляет запрос на выборку всех записей о посетителях (записи сортируются по имени посетителя) и отображает выбранные записи в формате


 

А также другие работы, которые могут Вас заинтересовать

31597. ПОРУШЕННЯ ВИЩОЇ НЕРВОВОЇ ДІЯЛЬНОСТІ 85.5 KB
  Порушення відчуттів і сприйняття подразнень із зовнішнього середовища. Порушення зорової сенсорної системи зона кори навколо шпорної борозни – sulcus clcrinus. Ушкодження зорового аналізатора письмової мови ІІ сигнальна система gyrus ngulris lobulus prietlis inferior супроводжується виникненням алексії – порушення здатності читати та розуміти написане.
31598. ПОРУШЕННЯ ГЕМОСТАЗУ. Тромбоцитопенії 83 KB
  2 Тромбоцитопенії пов’язані із посиленим руйнуванням тромбоцитів: а імунне ушкодження обумовлене антитромбоцитарними антитілами на власні компоненти кров’яних пластинок чи на лікарські препарати адсорбовані на тромбоцитах розвиток ідіопатичної тромбоцитопеничної пурпури хвороби Верльгофа; б гіперспленізм гіперфункція селезінки що супроводжується підвищенням фагоцитарної активності фіксованих макрофагів які фагоцитують усі формені елементи крові у тому числі і тромбоцити; в механічне ушкодження тромбоцитів часто виникає при...
31599. ПОРУШЕННЯ ГЕМОСТАЗУ. Система гемостазу 76.5 KB
  За нормальних умов кров перебуває в рідкому агрегатному стані що забезпечується системою РАСК умовна назва від перших літер слів: рідкий агрегатний стан крові яка обумовлюється: 1 Впливом простацикліну який синтезується ендотеліоцитами із арахідонової кислоти під дією циклоксигенази ЦОГ і простациклінсинтетази ПЦС попереджує адгезію тромбоцитів до судинної стінки має виражений антиагрегантний вплив. 2 Впливом оксиду азоту NO який синтезується ендотеліоцитами із Lаргініну під впливом NOсинтетази дифундує у м‘язову оболонку...
31600. ПОРУШЕННЯ ЕНЕРГЕТИЧНОГО ОБМІНУ. ГОЛОДУВАННЯ 71.5 KB
  Енергетичний обмін – це складний біохімічний процес обміну речовин, в якому задіяний каскад біохімічних реакцій, в результаті яких енергія, закладена в структурі вуглеводів, білків, жирів, які надходять в організм, акумулюється в макроергічних зв‘язках особливих хімічних сполук, зокрема, АТФ.
31601. ПОРУШЕННЯ ЛІПІДНОГО ОБМІНУ 80.5 KB
  Характерні: а високий рівень холестерину і ТГ у плазмі; б ксантелазми ліктьові і колінні ксантоми жовтуватокоричневі відкладення ліпідів у шкірі долонних ліній і в місцях тиску кілець; в атеросклероз коронарних артерій периферичних судин і судин мозку; в ожиріння цукровий діабет гіпотиреоз. Клінічно проявляються: а загальним ожирінням б ожирінням печінки в цукровим діабетом г хронічними захворювання нирок д органними ангіопатіями є жировими відкладеннями в сітківці. 4 Гормональні порушення хвороби обміну...
31602. ПАТОЛОГІЧНА ФІЗІОЛОГІЯ НЕРВОВОЇ СИСТЕМИ. ПОРУШЕННЯ СЕНСОРНОЇ ФУНКЦІЇ НЕРВОВОЇ СИСТЕМИ 93.5 KB
  Екстралемнісковий шлях проводить больову чутливість пізня глибока і вісцеральна біль. На відміну від двох попередніх є багатонейронним і філогенетично більш давній. Біль неприємне сенсорне і емоційне відчуття пов’язане із загрозою або самим ушкодженням тканин. Особливості болю як виду чутливості: 1 Біль дає мало інформації про навколишній світ проте інформує про небезпеку яка може виникнути або уже виникла внаслідок дії ушкоджуючих факторів захисна функція болю.
31603. ПОРУШЕННЯ СИСТЕМИ ЛЕЙКОЦИТІВ 84 KB
  Периферична кров містить: 1 пул циркулюючих лейкоцитів близько 50; 2 пристінковий маргінальний пул близько 50. Для характеристики стану лейкоцитів використовують наступні показники: 1 Вміст лейкоцитів в одиниці об’єму крові. Збільшення вмісту лейкоцитів у крові одержало назву лейкоцитозу зменшення лейкопенії.
31604. ПОРУШЕННЯ СИСТЕМНОГО РІВНЯ АРТЕРІАЛЬНОГО ТИСКУ 96.5 KB
  Відповідно до цього виділяють 3и гемодинамічних варіанти артеріальної гіпертензії: 1. Виникнення артеріальної гіпертензії може обумовлюватися змінами функції регуляторних систем організму які забезпечують сталість артеріального тиску. При первинній артеріальній гіпертензії підвищення артеріального тиску не пов'язане із конкретним захворюванням чи патологічним процесом у тих чи інших органах і системах організму: причина підвищення артеріального тиску залишається неясною. Таку форму гіпертензії у різних країнах називають...
31605. ПОРУШЕННЯ ТРАВЛЕННЯ У КИШЕЧНИКУ. (МАЛЬДІГЕСТІЯ) 76 KB
  Він виникає внаслідок: 1 недостатності секреторної функції шлунка; 2 недостатності секреції соку підшлункової залози; 3 недостатньої секреції жовчі; 4 недостатньої секреції кишкового соку 12палої та порожньої кишок. П р и ч и н а м и такого явища можуть бути: а нейрогенне гальмування зовнішньосекреторної функції підшлункової залози при зменшенні тонусу блукаючого нерва чи отруєнні атропіном і ін. Такі фактори ведуть до порушення надходження у 12палу кишку ферментів підшлункової залози які відіграють вирішальну роль в травленні...