Перед тем как начать выборку данных из результирующего набора, нам необходимо сформировать HTML-таблицу. Как можно ожидать, это можно сделать с помощью тега начала таблицы. Заглавная строка была создана с серым фоном, а остальное оформление таблицы осталось заданным по умолчанию. Теперь, после того как заглавная строка таблицы напечатана, можно выбрать строки результирующего набора. Быстрее всего это можно сделать с помощью функции mysql_fetch_assoc, которая позволяет отобразить столбцы результирующего набора в качестве элемента ассоциативного массива. Имена столбцов используются в качестве индексов массива. Можно также использовать функции mysql_fetch_row и mysql_fetch_object, которые являются одинаково эффективными. Следует избегать использования функции mysql_result, так как она производит неэффективный поиск в двухмерном массиве.
Если строк больше не осталось, возвращается значение FALSE. Для подчеркивания такого поведения функции строка была размещена в цикле while. Строка HTML-таблицы содержит в ячейках таблицы свойства объекта. Если строк больше не осталось, таблица закрывается. О закрытии соединения с базой данных беспокоиться не надо, поскольку PHP сделает это автоматически.
Это достаточно простой пример, но он затрагивает практически все основные нюансы работы с базами данных. Поскольку все строки создаются в цикле, они все одинаковы. Если данные изменяются, то нет никакой необходимости менять PHP-код, который превращает их в HTML-код. Достаточно изменить данные в базе данных.
Хорошим примером использования этого метода в работе является генератор случайных наименований ансамблей (Random Band Name Generator), который можно найти по адресу <http://www.leonatkinson.com/random/index.php?SCREEN=band>, который создает случайные названия музыкальных ансамблей на основе слов, хранящихся в базе данных MySQL, куда любой желающий может добавить слово. Каждое обновление страницы дает новые десять имен.
23.2. Отслеживание посещения с помощью идентификаторов сеансов
По мере того как Web-узлы становятся Web-приложениями, возникает проблема анализа их состояния. Задача заключается в том, чтобы приложение запоминало посетителей страницы. Подключаясь к серверу, браузер запрашивает на нем один или несколько файлов, а затем закрывает соединение. Пятью минутами позже, когда вы снова подключитесь к странице, все повторится сначала. Даже если сервер все регистрирует, он вас не запоминает. Любая информация, которую вы о себе сообщали до того, где-то сохраняется, но она с вами уже никак ассоциироваться не будет.
Представим себе некий интерфейс, предназначенный для заказа пиццы. Сначала у вас спрашивают, сколько порций пиццы вы заказываете, и вы делаете заказ. Затем на странице запрашиваются ваше имя и адрес. После чего ваш заказ пересылается по почте ближайшему к вам пункту доставки пиццы. Одним из способов решения этой задачи является передача собранной информации с каждой формой. По мере того как посетитель переходит от страницы к странице, объем этих данных постоянно возрастает. Такой метод работает, но требует большой пропускной способности.
Использование базы данных и идентификатора сеанса позволяет сохранять данные по мере их поступления. Сам идентификатор используется в качестве ключа к информации. Имея в своем распоряжении идентификатор сценария, можно запомнить то, что происходило прежде.
Сценарий может получить идентификатор двумя способами. Одним из них является передача идентификатора как переменной внутри каждой ссылки или формы. В форме это можно сделать с помощью скрытых переменных. В ссылке для этого необходимо добавить знак вопроса, а после него - определение переменной. Например, если идентификатор сеанса хранится в переменной session, тогда для передачи значения этой переменной на следующую строку можно вывести что-то наподобие print("<a href="page2.php?session=$session">next</a>");. Такой метод работает с любым браузером, даже с Lynx.
Другим способом является передача файлов cookie. Подобно тому как команды GET и POST формируют переменные, файлы cookie тоже преобразуются PHP в переменные. Таким образом, можно создать файл cookie по имени session. Основное различие заключается в том, что поскольку файлы cookie устанавливаются только в заголовках, их необходимо отправлять в браузер до того, как будет отправлен любой HTML-код. Если вы выбираете такую стратегию, обратитесь к описанию функции setcookie (см. главу 8, "Браузер ввода-вывода"). Более сложная стратегия заключается в использовании файлов cookie, но по необходимости можно работать и с переменными GET.
ТОП-10 популярных

Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

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

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

Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...

Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...

PHP. Интеграция баз данных. Часть Третья.
29-05-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Интеграция баз данных. Часть Вторая. | PHP. Интеграция баз данных. Часть Четвёртая. |