Методичка: Разработка Web-приложений

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ALTER TABLE classics MODIFY year SMALLINT;

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

Добавление нового столбца

Предположим, что таблица создана и заполнена большим объемом данных и тут выяснилось, что нужен еще один столбец. Не стоит расстраиваться.

Рис. 5. Добавление нового столбца pages и просмотр таблицы

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

ALTER TABLE classics ADD pages SMALLINT UNSIGNED;

Эта команда добавляет новый столбец по имени pages, в котором используется тип данных UNSIGNED SMALLINT, подходящий для хранения значений вплоть до 65 535. Этого наверняка более чем достаточно для любой когда-либо изданной книги!

И если запросить у MySQL описание обновленной таблицы, воспользовавшись показанной далее командой DESCRIBE, то можно будет увидеть внесенные в нее изменения (рис. 5): DESCRIBE classics;

Переименование столбца

Посмотрев еще раз на рис. 5, можно заметить, что наличие в таблице столбца type может привести к путанице, поскольку такое же имя используется MySQL для идентификации типа данных. Но это не проблема -- изменим имя этого столбца на category:

ALTER TABLE classics CHANGE type category VARCHAR(16);

Обратите внимание на добавление VARCHAR(16) в конце этой команды.

Это связано с тем, что ключевое слово CHANGE требует указания типа данных даже в том случае, если вы не собираетесь его изменять, и VARCHAR(16) -- тот самый тип данных, который был указан при создании столбца type.

Удаление столбца

Поразмыслив, можно прийти к выводу, что столбец pages, в котором хранится количество страниц, не представляет для этой базы данных особой ценности, поэтому его можно удалить, используя ключевое слово DROP:

ALTER TABLE classics DROP pages;

Удаление таблицы

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

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

Пример 9. Создание, просмотр и удаление таблицы

CREATE TABLE disposable(trash INT);

DESCRIBE disposable;

DROP TABLE disposable;

SHOW tables;

Рис. 6. Создание, просмотр и удаление таблицы

Работа с MySQL через phpMyAdmin

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

Но перед тем, как пользоваться phpMyAdmin, это средство нужно установить. Для этого вызовите Zend UI путем набора в адресной строке браузера следующей строки и регистрации (рис. 18): http://localhost:10081/ZendServer/

Рис. 18. Инструментальная панель Zend

Теперь щелкайте на левой и правой стрелках справа от области DEPLOY SAMPLE APPS (Развертывание типовых приложений), пока не увидите логотип phpMyAdmin. Щелкните на этом логотипе, чтобы инициировать загрузку; затем, по ее окончании, нажмите кнопку Next (Далее). Нажмите еще раз такую же кнопку после просмотра информации README (Прочти меня), чтобы вызвать экран Application Details (Подробности приложения) (рис. 19).

Здесь, вероятно, нужно будет принять предлагаемые по умолчанию Display Name (Отображаемое имя) и Virtual Host (Виртуальный хост), но при этом следует указать имя каталога для phpMyAdmin, чтобы держать это средство в стороне от корневых файлов документа.

Я ввел имя phpmyadmin (полностью буквами в нижнем регистре, чтобы не приходилось вводить заглавные буквы для вызова этого средства путем набора URL-адреса).

Затем нужно продолжить настройку, нажимая кнопку Next (Далее) и принимая лицензионные соглашения до тех пор, пока не появится экран, показанный на рис. 20.

Здесь нужно установить флажок Use HTTP (Apache) Basic Authentication? (Использовать основную аутентификацию HTTP (Apache)?) и предоставить логин и пароль.

В качестве логина по умолчанию предлагается DBadmin, но я выбрал просто admin; вы же можете выбрать логин и пароль по своему усмотрению.

Если настройки менять не нужно, можно оставить поля IP, Port (Порт), Database User (Пользователь базы данных) и Password (Пароль) в том виде, в котором они отображаются на экране.

Работа с MySQL через phpMyAdmin

Рис. 19. Настройка phpMyAdmin для Zend

Рис. 20. Ввод параметров пользователя phpMyAdmin

Теперь нажмите кнопку Next (Далее), просмотрите показанную сводку и по готовности нажмите кнопку Deploy (Развернуть). Через несколько секунд вы увидите, что приложение было успешно развернуто, и с этого момента вы можете обратиться к phpMyAdmin путем ввода в сроку браузера следующего адреса: http://localhost/phpmyadmin

Рис. 21. Регистрация в phpMyAdmin

Это приведет к появлению диалогового окна, показанного на рис. 21, в котором перед тем, как нажать кнопку Log In (Зарегистрироваться), нужно будет ввести ваше имя пользователя и пароль. В браузере должно появиться изображение, показанное на рис. 22, и теперь вместо командной строки MySQL можно будет воспользоваться средством phpMyAdmin.

Использование phpMyAdmin

На левой панели главной страницы phpMyAdmin щелкните на раскрывающемся меню Databases (Базы данных) для выбора базы данных, с которой будете работать. Откроется база данных, и появятся ее таблицы. Отсюда можно осуществлять все основные операции над базами данных, включая их создание, добавление таблиц, индексов и многое другое. Документация по работе с программой phpMyAdmin выложена по адресу https:// docs.phpmyadmin.net.

Рис. 22. Основной экран phpMyAdmin

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

Задания к работе

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

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

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

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

5. Создать базу данных СамТУИТ

6. CGI. Проверка знания таблицы умножения и текстовый счетчик посещения страницы.

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

8. CGI. Любой психологический тест и текстовый счетчик посещения страницы.

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

10. CGI. Проверка знания языка HTML и текстовый счетчик посещения страницы.

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

12. CGI. Проверка знания правил дорожного движения и текстовый счетчик посещения страницы.

Практическое занятие №18

Тема: Фреймворк направленный на объект (yii, codilgniter) возможность обучения и разработка web приложений

Цель работы: научиться работать с фреймворком и применять их на практике.

Указание к работе: применить на практике использование фреймворков и показать на примере.

Запросы к базе данных MySQL с помощью mysqli

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

Создание файла входа в систему

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

Пример 1. Файл login.php

< ?php // login.php

$db_hostname = 'localhost';

$db_database = 'publications';

$db_username = 'username';

$db_password = 'password';

?>

Как и в предыдущей главе, будет использоваться база данных под названием publications, а переменным $db_username и $db_password будут присвоены имя пользователя и пароль, применяемые с MySQL.

Подключение к MySQL

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

Пример 2. Подключение к серверу MySQL с помощью mysqli

< ?php require_once 'login.php';

$connection = new mysqli($db_hostname, $db_username, $db_password, $db_ database); if ($connection->connect_error) die($connection->connect_error) ?>

В данном примере путем вызова метода mysqli со всеми значениями, извлеченными из файла login.php, создается новый объект по имени $connection.

Обратите внимание на усовершенствованную проверку возникновения ошибок, достигаемую за счет ссылки на свойство $connection->connect_error. Если оно имеет значение TRUE, вызывается функция die и выводятся подробности, объясняющие характер ошибки. Свойство connect_error объекта $connection содержит строку, детализирующую ошибку подкючения.

Объект $connection будет использован для обращения к базе данных MySQL в следующих примерах.

Построение и выполнение запроса

Отправка запроса к MySQL из PHP с помощью mysqli не сложнее вызова, используемого в расширении метода query. Как это делается, показано в примере 3.

Пример 3. Запрос к базе данных с помощью mysqli

< ?php

$query = "SELECT * FROM classics";

$result = $connection->query($query); if (!$result) die($connection->error); ?>

Как и в главе 10, переменной $query присвоено значение, соответствующее выполняемому запросу, но в данном случае это значение передается методу объекта $connection, который возвращает результат, помещаемый в объект $result. Все, что нужно, было сделано с применением $connection и перешло в $result, чтобы можно было воспользоваться тем, что вернулось из подключения.

При ошибке значением $result окажется FALSE; в противном случае это будет объект, к которому можно будет обратиться. Свойство error объекта $connection содержит строку с подробными сведениями об ошибке.

Извлечение результата

Возвращенным $result объектом можно воспользоваться для поэлементного извлечения требуемых данных, применяя для этого метод объекта fetch_assoc. В примере 4 предыдущие примеры объединены и расширены в программу, которую можно набрать и запустить самостоятельно для получения результатов, показанных на рис. 1. Я предлагаю сохранить этот сценарий под именем query-mysqli.php.

Запросы к базе данных MySQL с помощью mysqli

Пример 4. Поэлементное извлечение результатов с помощью mysqli

< ?php // query-mysqli.php require_once 'login.php';

$connection =

new mysqli($db_hostname, $db_username, $db_password, $db_database); if ($connection->connect_error) die($connection->connect_error)

$query = "SELECT * FROM classics";

$result = $connection->query($query); if (!$result) die($connection->error); $rows = $result->num_rows;

for ($j = 0 ; $j < $rows ; ++$j)

{

$result->data_seek($j);

echo 'Author: ' . $result->fetch_assoc()['author'] . '<br>';

$result->data_seek($j);

echo 'Title: ' . $result->fetch_assoc()['title'] . '<br>';

$result->data_seek($j);

echo 'Category: ' . $result->fetch_assoc()['category'] . '<br>';

$result->data_seek($j);

echo 'Year: ' . $result->fetch_assoc()['year'] . '<br>';

$result->data_seek($j);

echo 'ISBN: ' . $result->fetch_assoc()['isbn'] . '<br><br>'; }

$result->close();

$connection->close();

?>

В этом коде перед извлечением каждого элемента данных для поиска нужной строки при очередном проходе цикла вызывается метод data_seek объекта $result.

Затем для извлечения значения, сохраненного в каждой ячейке, вызывается метод fetch_assoc, а для вывода результата используются команды echo.

Процедурное использование mysql

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