|
|||||||||||||||
|
|
||||||||||||||
|
Имя поля |
Описание |
id | Уникальный идентификационный номер записи (ID) |
format | Тип носителя: CD, магнитофонная кассета, грампластинка и т. п. |
title | Название альбома |
artist_fn | Имя исполнителя |
artist_ln | Фамилия исполнителя |
rec_label | Название фирмы звукозаписи |
my_notes | Ваши заметки о записи |
date_asq | Дата приобретения |
В следующих упражнениях мы создадим последовательность форм, чтобы получить информацию о вашей таблице и послат ее в вашу базу данных My SQL. Первым шагом будет определение имени таблицы и числа полей, которые вы хотите в нее включить. Вторым шагом будет отобраение дополнительных полей формы, чтобы вы могли определит свойства колонок (полей) вашей таблицы. Третим шагом будет отправка запроса на создание таблицы к MySQL, проверка создания таблицы и вывод сообщения об успешном завершении всех операций.
Перед началом создания таблицы задержимся немного на типах данных и уникальных полях таблиц.
Для каждого поля таблицы определяется свой тип данных. В поле могут храниться данные только определенного для него типа. Для некоторых типов данных вы должны также задавать максимальную длину поля, для других типов данных длину поля указывать не нужно.
Очень важно определять подходящую длину полей. Например, если вы имеете 50-символьное поле типа VARCHAR (см. ниже), чтобы записывать в него название музыкальной записи, и попытаетесь поместить в это поле строку из ста символов, то строка будет обрезана до 50 символов.
Важно не только определять для поля подходящую длину, но также и поля с помощью правильного синтаксиса языка SQL, иначе таблица не будет создана. Например, если вы хотите использовать текстовый тип данных для поля my_notes, вы не можете задать его длину, потому что этот тип данных автоматически имеет определенную длину.
В следующей ниже таблице показан краткий перечень возможных типов данных, их описание и способ определения длины. Полный список типов данных вы можете найти на сайте, расположенном в Интернете по адресу: www.thickbook.com.
Тип данных |
Описание |
Нужно определять длину? |
INT |
Целое число в диапазоне от 0 до 4294967295 1 | Не требуется; по умолчанию 11 символов |
FLOAT |
Число с плавающей точкой | Не требуется; по умолчанию 10/2 (10 символов - целая часть; 2 символа - дробная часть) |
DATE |
Дата в формате ГГГГ-ММ-ДД, между 1000-01-01 и 9999- 12-31 | Нет |
CHAR |
Строка фиксированной длины от 1 до 255 символов | Не требуется; по умолчанию 1 |
VARCHAR |
Строка переменной длины от 1 до 255 символов | Да |
TEXT |
Поле с максимальной длиной до 65535 символов | Нет |
Использование уникальных идентификационных номероа (ID) поможет вам отслеживать ваши данные, а также поможет вам в дальнейшем, когда вы попытаетесь установить связи между несколькими таблицами. В таблице my_music тоже будет поле ID. Использование этого поля в качестве уникального, взамен title, позволит вам имет в вашей таблице две записи, которые имеют одинаковое имя. Например, если вы имеете альбом Strange Fire группы Indigo Gils, то вы можете дважды включить его в вашу таблицу: первый раз - как версию, выпущенную в 1987 году, и второйраз как версию, выпущенную в 1989 году.
Если вы не будете использовать уникальный идентификатор, то сможете поместить в таблицу только одну версию альбома, и ваша таблица не будет полной. Мы надеемся, что этот простой пример демонстрирует важность уникальных идентификаторов для каждой записи вашей таблицы. Важность использования уникальных идентификаторов будет заметна к концу книги, по мере создания вами большего количества элементов, управляемых базами данных.
Последовательность из двух форм для создания таблицы базы данных может показаться выходящей за пределы необходимого. Ведь мы уже познакомились с основным оператором SQL, создающим таблицы, в Главе 1 "Установка и настройка MySQL", когда создавали таблицу test_table командой
create table test_table (test_id int, test_note text);Когда вы используете сценарий РНР для создания таблицы, все ваши действия состоят в отправке точно такого же запроса к MySQL. Однако вы можете сделать процесс создания таблицы более гибким: создать основанный на форме интерфейс и назвать его "административный интерфейс".
Процесс создания административного интерфейса мы начнем с HTML-формы, затем создадим РНР-сценарий, который будет брать информацию из этой формы и динамически создавать другую форму. Наконец, мы создадим сценарий, который отправит сформированный SQL-запрос для создания таблицы.
Эта HTML-форма будет содержать два поля ввода: одно для имени таблицы, а другое - для количества полей, которое ваша таблица будет содержать.
http://localhost/show_createtable.html
и нажмите клавишу Enter. Браузер загрузит страницу Создание таблицы базы данных: Этап 1 (Рис. 8.1).Hа Рис. 8.1 вы видите созданную форму с полями для ввода имени таблицы и количества содержащихся в ней полей, а также кнопку для перехода к следующей части создания таблицы.
Далее мы продолжим процесс создания таблицы базы данных и создадим сценарий, который динамически создаст другую форму, основанную на значениях переменных $table_name и $num_fields.
На первом этапе мы создали переменные для хранения имени таблицы ($table_name) и количества полей, которое вы хотите поместить в таблицу ($num_fields). На этом этапе мы создадим сценарий РНР, отображающий дополнительную форму с элементами, необходимыми для последующего определения полей таблицы: имени, типа и длины.
Если хотя бы одно из значений не задано, то будет отображена первая форма и произойдет выход из сценария.
Начнем формирование переменной с именем $form_block, в которой будет содержаться форма с методом post и действием do_createtable.php. Помните о том, что нужно использовать символ маскирования (\) перед кавычками.
Поскольку сценарий создает следующую форму "на лету" (динамически) в одной большой строке, то вы можете вывести всю форму просто как строку после того, как уже будет закончен процесс синтаксического анализа. Таким образом, вы не застрянете на недостроенной странице, которая не будет отображаться, если возникнет ошибка.
Значение этой переменной вы будете использовать в конце последовательности для сообщения пользователю о том, что таблица была создана правильно.
Отобразим форму в виде HTML-таблицы, чтобы поля были лучше выровнены. Начнем co строки заголовков столбцов и пока закроем строку $form_block.
Также как цикл while, цикл for выполняется, пока условие истинно. В нашем случае цикл for начнется с переменной $i, имеющей значение 0 и будет продолжаться, пока $i меньше значения переменной $num_fields. После каждого цикла значение $i увеличивается на единицу.
Внутри цикла for происходит добавление к переменной $form_block. В каждом цикле добавляется одна строка HTML-таблицы для ввода параметров очередного поля таблицы SQL.
В этом коде мы начали формирование строки HTML-таблицы с тега начала строки и описания первой ячейки HTML-таблицы, в которую будет вводиться имя поля создаваемой таблицы SQL.
Использование квадратных скобок ([]) после field_name в поле ввода указывает на массив. Для каждого поля, определенного вами в этой форме, вы будете добавлять значение в массив $field_name. В массиве хранится много переменных в пронумерованных позициях, начиная с 0. Номер позиции увеличивается автоматически, как только массив возрастает. Например, если вы создали базу данных с шестью полями, то массив переменных $field_name будет содержать шесть переменных имен полей: $field_nama[0], $field_name[1], $field_name [2], $field_name[3], $field_name[4] и $field_name[5]
Заголовок нужен для того, чтобы пользователь знал, что он просматривает.
В следующем упражнении вы пройдете первый и второй этап, чтобы проверить, как вы подготовились к созданию таблицы.
Итак, вы создали на первом этапе работающую форму, с помощью которой можно задать имя таблицы и нужное количество содержащихся в ней полей, а на втором этапе вы создали форму для определения параметров каждого поля. Проверим, как это работает.
http://localhost/show_createtable.html
и нажмите клавишу Enter. Браузер загрузит страницу Создание таблицы базы данных: Этап 1 (Рис. 8.1) с формой, определяющей имя таблицы и количество содержащихся в ней полей.На Рис. 8.2 вы видите форму, динамически сформированную сценарием, который вы создали в предыдущем знакомстве. Эта форма содержит восемь строк, которые определяют восемь полей в каждой записи таблицы базы данных. Заполним эти поля, но не будем пока нажимать кнопку Создать Таблицу, так как для нее еще не создан сценарии.
Заполненная таблица должна выглядеть так,
как показано на Рис. 8.3
Рис. 8.3. Заполненная форма второго этапа создания таблицы
В следующем упражнении вы разработаете сценарий, который создаст таблицу в базе данных с параметрами, введенными в формы первого и второго этапа.
Сценарий, который вы создадите в этом упражнении, построит оператор SQL и отправит его к MySQL, чтобы создать таблицу my_music.
Символ @ используется для подавления предупреждений, а функция die( ) - для прерывания сценария и вывода сообщения в случае невозможности подключиться к базе данных.
Символ @ используется для подавления предупреждений, а функция die ( ) - для прерывания сценария и вывода сообщения в случае, если выбор базы данных закончится неудачей.
Функция mysgl_select_db ( ) требует указания двух аргументов: имени базы данных и идентификатора текущего подключения.
Цикл будет повторяться столько раз, сколько полей содержится в качестве элементов массиве $field_name.
Функция count ( ) подсчитывает количество элементов в массиве.
Поскольку некоторые поля могут иметь определенную длину, а некоторые - нет, введем оператор if...else. Если длина поля присутствует, то мы будем добавлять ее в оператор SQL.
Если длина поля не определена, то добавим к оператору SQL запятую (,), служащую разделителем между описаниями полей и закроем оператор if. . .else.:
Теперь оператор SQL содержит все параметры полей. Однако в результате работы оператора цикла for, в конце строки SQL-оператора, получилась лишняя запятая. Необходимо удалить ее, после чего оператор SQL может быть завершен. Для этого мы используем функцию substr ( ), которая вернет строку за исключением последнего символа.
Функция substr ( ) использует три аргумента. Первый определяет строку, второй указывает на номер символа, с которого нужно начать копировать строку, а третий - номер символа, на котором нужно закончить копирование. В нашем случае указано начать с первого символа (нумерация начинается с 0) и закончить предпоследним.
Символ @ используется для подавления предупреждений, а функция die ( ) - для прерывания сценария и вывода сообщения в случае, если будет невозможно выполнить запрос.
Функция mysql_query ( ) требует указания оператора SQL и идентифи катора текущего подключения.
Если значение переменной $result истина, значит запрос завершился успешно и создастся переменная с сообщением о создании таблицы.
В следующем упражнении вы проверите работоспособность созданного вами сценария.
Если вы пока еще не закрыли рабочее окно своего Web-браузера с заполненной формой (Рис. 8.3), то для проверки работы созданного сценария вам нужно только нажать кнопку Создать таблицу.
Чтобы убедиться в том, что таблица была действительно создана, выполните следующие действия:
В поле ввода браузера Адрес введитеhttp://localh.ost/db_listtable.php
и нажмите клавишу Enter.Обратившись по этому адресу, вы запустите сценарий db_listtable.php, который создали в предыдущей главе для отображения таблиц баз данных. В рабочее окно браузера будет загружена страница Таблицы MySQL (Рис. 8.5).
Из Рис. 8.5 следует, что была создана таблица my_music в базе данных test_DB.
В следующей главе вы создадите форму для сценария, добавляющего записи в таблицу my_music.
|
|
|