Bыбopкa u отображение данных
Теперь, когда вы успешно занесли всю или часть своей музыкальной коллекции в таблицу my_music,
можно перейти к работе с данными. В этой главе вы узнаете, как:
выбирать записи из таблицы, используя выражение SQL ORDER BY;
форматировать и отображать записи из таблицы базы данных.
Планирование и создание административного меню
Вы можете создать только один сценарий, который будет выбирать все ваши данные безо всякой
сортировки в том порядке, в котором они были введены в таблицу. Но это сделает работу с базой
данных неудобной. В этой главе вы узнаете четыре способа выборки данных из таблицы my_music.
Чтобы обеспечить легкую ориентацию в таблице базы данных, создадим административное меню,
состоящее из списка ссылок на разные сценарии.
Создайте с помощью текстового редактора новый файл.
Начните блок HTML:
Чтобы начать маркированный список и включить в него первую ссылку на сценарий sel_byid.php
(этот сценарий отображает записи таблицы, упорядоченные по номеру записи ID), введите код:
Чтобы добавить ссылку на сценарий sel_bydateacq.php (этот сценарий отобража записи
таблицы, упорядоченные по дате приобретения), введите код:
Чтобы добавить ссылку на сценарий sel_bytitle.php (этот сценарий отображает записи таблицы,
упорядоченные по названию музыкальной записи), введите код:
Чтобы добавить ссылку на сценарий sel_byartist.php (этот сценарий отображает записи таблицы,
упорядоченные имени исполнителя), введите код:
Закройте оператор маркированного списка и HTML-документ:
Сохраните созданный файл с именем my_menu.html в папке для документов вашего Web-сервера.
Запустите свой Web-браузер, в поле ввода Адрес введите
http://localhost/my_menu.html
и нажмите клавишу Enter. В рабочее окно браузера загрузится страница Мое Меню (Рис. 14.1).
Рис. 10.1. Страница Мое Меню
На Рис. 10.1 вы видите меню из нескольких пунктов для просмотра записей из таблицы my_music.
В следующем упражнении вы создадите сценарии, чтобы выполнить все пункты этого меню.
Выборка данных из таблицы my_music
Эти упражнени будут посвящены созданию различных вариантов сценариев на тему: выборка и отображение
данных. Большая часть сценариев будет повторяться, но это поможет вам лучше разобраться с подобными
сценариями.
В сценариях будет использоваться только одна новая функция mysql_fetch_array( ) Эта функция
получает результат запроса SQL и размещает его строки в массиве. Используя простой цикл while,
вы можете извлечь и отобразить элементы этого массива.
Итак, начнем создание первого сценария, с помощью которого получим результаты выборки,
упорядоченные по номеру записи ID.
Отображение записей, упорядоченных по номеру ID
В сценарии добавления записей одним из обязательных полей для ввода является ID (номер записи).
В этом сценарии мы выберем все записи в таблице my_music, упорядоченные по номеру записи. По
умолчанию значением параметра ORDER BY является ASC (Ascending - увеличение), таким образом,
записи будут выбираться из таблицы в порядке возрастания номеров ID, т.е. сначала запись с ID
равным 1, затем - 2 и т.д.
Создайте с помощью текстового редактора новый файл.
Начните блок РНР:
Чтобы создать переменную для хранения имени базы данных, введите код:
Создайте переменную для хранения имени таблицы базы данных:
Создайте переменную для хранения результата функции mysql_connect ( ):
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания сценария и
вывода сообщения в случае, если будет невозможно подключиться к серверу MySQL.
Чтобы создать переменную для хранения результата функции mysql_select_db( ), введите код
Символ @ используется для подавления предупреждений, а функция die( ) - для прерывания сценария и
вывода сообщения в случае, если будет невозможно выбрать базу данных.
Чтобы создать переменную для оператора SQL, введите код:
Если вы выбираете все поля таблицы, то вы можете использовать воператоре SQL вместо имен полей символ *.
Чтобы создать переменную для хранения результата функции mysql_guery ( ), введите код:
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания
сценария и вывода сообщения в случае, если будет невозможно выполнить запрос.
Начните цикл while, который из переменной $result будет извлекать данные о каждой
записи в массив с именем $row:
Чтобы получить каждый элемент записи и присвоить ему подходящее имя, введите код:
Произведем небольшое форматирование имени исполнителя. Поскольку некоторые исполнители
имеют только имя, а у других и имя и фамилия и название группы содержится в поле artist_ln,
используем оператор if. . .else, который разберется со всем этим.
Начните оператор if... else с проверки наличия имени исполнителя:
Создайте переменную $artist_fullname, которая будет содержать строку с удаленными
начальными и конечными пробелами, состоящую из имени и фамилии, разделенных пробелом.
Функция trim ( ) удаляет лишние пробелы в начале и в конце строки.
Продолжите оператор if. . .else и определить переменную $artist_fullname в случае,
если данные в переменной $artist_fn отсутствуют:
Произведем еще небольшое форматирование даты. Введем еще один оператор if.. .else, чтобы
проверить поле даты. Если вы не введете дату при записи в таблииy, то при выборке этого
поля MySQL вернет значение 0000-00-00. В этом случае мы будем вместо даты выводить на экран
слово "неизвестна".
Для этого введите код:
Чтобы создать переменную $display_block для хранения всех сформирована записей, введите код:
В переменной $display_block формируются две HTML-строки. Одна содержит название звукозаписи,
выделенное полужирным шрифтом и имя исполнителя или группы в скобках. А следующая строка
содержит ваши замечания и в скобках дату приобретения и формат записи.
Завершите оператор цикла:
Завершите блок РНР:
Введите блок HTML:
Чтобы отобразить результат, введите код:
Чтобы поместить в конце страницы ссылку для возврата к основному меню, введите код:
Завершите HTML-блок и документ:
Сохраните созданный файл с именем sel_byid.php в папке для документов вашегo Web-сервера.
Запустите браузер, в поле Адрес введите
http://localhost/my_menu.html
нажмите клавишу Enter. В рабочее окно браузера загрузится страница Мое Меню (Рис. 10.1).
Щелкните мышью на ссылке Упорядочить по номеру ID. В рабочее окно браузера загрузится страница
Моя Музыка (упорядочено по ID) (Рис. 10.2).
Рис. 10.2. Страница Моя Музыка (упорядоченная по ID)
Выведенные на этой странице данные о вашей музыкальной коллекции будут упорядочены по возрастанию
номера записи.
Следующий сценарий выведет на экран результаты запроса, упорядоченные по дате приобретения.
Отображение записей, упорядоченных по дате
Хотя поле даты является не обязательным, но в сценарии, добавляющем записи, обработка поля даты
присутствует и, независимо от наличия данных в поле даты, они помешаются в таблицу.
Вы создадите сценарий, который будет выбирать записи из таблицы упорядоченных по дате.
Создайте с помощью текстового редактора новый файл.
Начните блок РНР:
Чтобы создать переменную для хранения имени базы данных, введите код:
Создайте переменную для хранения имени таблицы базы данных:
Создайте переменную для хранения результата функции mysql_connect ( ):
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания сценария и
вывода сообщения в случае, если будет невозможно подключиться к серверу MySQL.
Чтобы создать переменную для хранения результата функции mysql_select_db( ), введите код
Символ @ используется для подавления предупреждений, а функция die( ) - для прерывания сценария и
вывода сообщения в случае, если будет невозможно выбрать базу данных.
Чтобы создать переменную для оператора SQL, введите код:
В параметре ORDER BY используется значение DESC (Descending-уменьшение, убывание),
поэтому записи будут выбираться в порядке уменьшения поля date_asq, т.е. сначала самая
поздняя дата, затем - более ранняя и т.д.
Чтобы создать переменную для хранения результата функции mysql_guery ( ), введите код:
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания
сценария и вывода сообщения в случае, если будет невозможно выполнить запрос.
Начните цикл while, который из переменной $result будет извлекать данные о каждой
записи в массив с именем $row:
Чтобы получить каждый элемент записи и присвоить ему подходящее имя, введите код:
Произведем небольшое форматирование имени исполнителя. Поскольку некоторые исполнители
имеют только имя, а у других и имя и фамилия и название группы содержится в поле artist_ln,
используем оператор if. . .else, который разберется со всем этим.
Начните оператор if... else с проверки наличия имени исполнителя:
Создайте переменную $artist_fullname, которая будет содержать строку с удаленными
начальными и конечными пробелами, состоящую из имени и фамилии, разделенных пробелом.
Продолжите оператор if. . .else и определить переменную $artist_fullname в случае,
если данные в переменной $artist_fn отсутствуют:
Произведем еще небольшое форматирование даты. Введем еще один оператор if.. .else, чтобы
проверить поле даты. Если вы не введете дату при записи в таблииy, то при выборке этого
поля MySQL вернет значение 0000-00-00. В этом случае мы будем вместо даты выводить на экран
слово "неизвестна".
Для этого введите код:
Чтобы создать переменную $display_block для хранения всех сформирована записей, введите код:
В переменной $display_block формируются две HTML-строки. Одна содержит название звукозаписи,
выделенное полужирным шрифтом и имя исполнителя или группы в скобках. А следующая строка
содержит ваши замечания и в скобках дату приобретения и формат записи.
Завершите оператор цикла:
Завершите блок РНР:
Введите блок HTML:
Чтобы отобразить результат, введите код:
Чтобы поместить в конце страницы ссылку для возврата к основному меню, введите код:
Завершите HTML-блок и документ:
Сохраните созданный файл с именем sel_byid.php в папке для документов вашегo Web-сервера.
Запустите браузер, в поле Адрес введите
http://localhost/my_menu.html
нажмите клавишу Enter. В рабочее окно браузера загрузится страница Мое Меню (Рис. 10.1).
Щелкните мышью на ссылке Упорядочить по дате приобретения(в порядке убывания). В рабочее окно браузера загрузится страница
Моя Музыка (упорядочено по дате приобретения) (Рис. 10.3).
Рис. 10.3. Страница Моя Музыка (упорядочено по дате приобретения)
Как видно из Рис. 10.3, теперь записи из таблицы my_music отображены в порядке уменьшения даты
приобретения. Далее вы создадите сценарий, который отобразит записи, упорядочив их по названию записи.
Отображение записей, упорядоченных по названию звукозаписи
Поле title было определено в сценарии добавления записей как обязательное. Сценарий, который вы
создадите сейчас, будет отображать записи, упорядочивая их в алфавитно-цифровом порядке по названию
записи.
Создайте с помощью текстового редактора новый файл.
Начните блок РНР:
Чтобы создать переменную для хранения имени базы данных, введите код:
Создайте переменную для хранения имени таблицы базы данных:
Создайте переменную для хранения результата функции mysql_connect ( ):
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания сценария и
вывода сообщения в случае, если будет невозможно подключиться к серверу MySQL.
Чтобы создать переменную для хранения результата функции mysql_select_db( ), введите код
Символ @ используется для подавления предупреждений, а функция die( ) - для прерывания сценария и
вывода сообщения в случае, если будет невозможно выбрать базу данных.
Чтобы создать переменную для оператора SQL, введите код:
Чтобы создать переменную для хранения результата функции mysql_guery ( ), введите код:
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания
сценария и вывода сообщения в случае, если будет невозможно выполнить запрос.
Начните цикл while, который из переменной $result будет извлекать данные о каждой
записи в массив с именем $row:
Чтобы получить каждый элемент записи и присвоить ему подходящее имя, введите код:
Произведем небольшое форматирование имени исполнителя. Поскольку некоторые исполнители
имеют только имя, а у других и имя и фамилия и название группы содержится в поле artist_ln,
используем оператор if. . .else, который разберется со всем этим.
Начните оператор if... else с проверки наличия имени исполнителя:
Создайте переменную $artist_fullname, которая будет содержать строку с удаленными
начальными и конечными пробелами, состоящую из имени и фамилии, разделенных пробелом.
Продолжите оператор if. . .else и определить переменную $artist_fullname в случае,
если данные в переменной $artist_fn отсутствуют:
Произведем еще небольшое форматирование даты. Введем еще один оператор if.. .else, чтобы
проверить поле даты. Если вы не введете дату при записи в таблииy, то при выборке этого
поля MySQL вернет значение 0000-00-00. В этом случае мы будем вместо даты выводить на экран
слово "неизвестна".
Для этого введите код:
Чтобы создать переменную $display_block для хранения всех сформирована записей, введите код:
В переменной $display_block формируются две HTML-строки. Одна содержит название звукозаписи,
выделенное полужирным шрифтом и имя исполнителя или группы в скобках. А следующая строка
содержит ваши замечания и в скобках дату приобретения и формат записи.
Завершите оператор цикла:
Завершите блок РНР:
Введите блок HTML:
Чтобы отобразить результат, введите код:
Чтобы поместить в конце страницы ссылку для возврата к основному меню, введите код:
Завершите HTML-блок и документ:
Сохраните созданный файл с именем sel_bytitle.php в папке для документов вашегo Web-сервера.
Запустите браузер, в поле Адрес введите
http://localhost/my_menu.html
нажмите клавишу Enter. В рабочее окно браузера загрузится страница Мое Меню (Рис. 10.1).
Щелкните мышью на ссылке Упорядочить по названию записи. В рабочее окно браузера загрузится страница
Моя Музыка (упорядочено по названию записи) (Рис. 10.4).
Рис. 10.4. Страница Моя Музыка (упорядочено по названию записи)
На Рис. 10.4 вы видите, что записи расположены в алфавитном порядке.
Далее вы создадите сценарий для отображения записей таблицы, упорядоченных по имени исполнителя.
Отображение записей, упорядоченных по имени исполнителя
Этот сценарий будет иметь небольшую хитрость, потому что вы должны принимать во внимание, что данные
об исполнителе могут быть разными: некоторые исполнители имеют только имя, а у других и имя, и фамилия
и название группы содержится в поле artist_ln. Поэтому создаваемый сценарий будет выводить записи из
таблицы my_music, упорядоченные по полному имени исполнителя.
Создайте с помощью текстового редактора новый файл.
Начните блок РНР:
Чтобы создать переменную для хранения имени базы данных, введите код:
Создайте переменную для хранения имени таблицы базы данных:
Создайте переменную для хранения результата функции mysql_connect ( ):
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания сценария и
вывода сообщения в случае, если будет невозможно подключиться к серверу MySQL.
Чтобы создать переменную для хранения результата функции mysql_select_db( ), введите код
Символ @ используется для подавления предупреждений, а функция die( ) - для прерывания сценария и
вывода сообщения в случае, если будет невозможно выбрать базу данных.
Чтобы создать переменную для оператора SQL, введите код:
Внутри оператора SQL мы по существу создали новое поле из двух существующих полей, используя
для этого функцию concat ( ). Эта строковая функция MySQL объединяет поля artist_fn и artist_ln,
вставляя между ними пробел. Выражение as artist_fullname присваивает это новое значение полю
с именем artist_fullname.
Функция trim( ) все также удаляет лишние пробелы. Все выражение trim(concat
(artist_fn,' '.artistjn)) as artist_fullname заменяет блок оператора if...else внутри
оператора цикла while, который использовался в предыдущих сценариях.
Чтобы создать переменную для хранения результата функции mysql_guery ( ), введите код:
Символ @ используется для подавления предупреждений, а функция die ( ) для прерывания
сценария и вывода сообщения в случае, если будет невозможно выполнить запрос.
Начните цикл while, который из переменной $result будет извлекать данные о каждой
записи в массив с именем $row:
Чтобы получить каждый элемент записи и присвоить ему подходящее имя, введите код:
Произведем еще небольшое форматирование даты. Введем еще один оператор if.. .else, чтобы
проверить поле даты. Если вы не введете дату при записи в таблииy, то при выборке этого
поля MySQL вернет значение 0000-00-00. В этом случае мы будем вместо даты выводить на экран
слово "неизвестна".
Для этого введите код:
Чтобы создать переменную $display_block для хранения всех сформирована записей, введите код:
В переменной $display_block формируются две HTML-строки. Одна содержит название звукозаписи,
выделенное полужирным шрифтом и имя исполнителя или группы в скобках. А следующая строка
содержит ваши замечания и в скобках дату приобретения и формат записи.
Завершите оператор цикла:
Завершите блок РНР:
Введите блок HTML:
Чтобы отобразить результат, введите код:
Чтобы поместить в конце страницы ссылку для возврата к основному меню, введите код:
Завершите HTML-блок и документ:
Сохраните созданный файл с именем sel_bytitle.php в папке для документов вашегo Web-сервера.
Запустите браузер, в поле Адрес введите
http://localhost/my_menu.html
нажмите клавишу Enter. В рабочее окно браузера загрузится страница Мое Меню (Рис. 10.1).
Щелкните мышью на ссылке Упорядочить по имени исполнителя. В рабочее окно браузера загрузится страница
Моя Музыка (упорядочено по имени исполнителя) (Рис. 10.5).
Рис. 10.5. Страница Моя Музыка (упорядочено по имени исполнителя)
Записи на странице расположены в алфавитном порядке по имени исполнителя.
В следующих Главах вы прервете работу с базами данных, чтобы немного узнать об аутентификации
пользователя, сессиях и о файлах куки (cookie).
|