Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dizayn_gos(Ответы).doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.63 Mб
Скачать

Часть 2. Разработка web-узлов. Практическое задание.

  1. Написать код для создания ролловера (с использованием JavaScript). Названия и размер изображений выбрать произвольно.

<img src="1.jpg" onmouseover="this.src = '2.jpg';" onmouseout="this.src = '1.jpg'; " >

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

Соединение с базой данных в двух словах сводится к следующему:

$db_server = 'сервер баз данных (обычно localhost)';

$db_user = 'пользователь/администратор';

$db_password = 'пароль';

$db_name = 'имя базы';

$connected = @mysql_connect($db_server, $db_user, $db_password);

if($connected) {

$select_db = mysql_select_db($db_name);

if(!$select_db) die('No DB connection');

}

else {

die('No DB connection');

}

Этот код следует держать в отдельном файле (например, db.php) и включать однократно при помощиrequire_once('db.php'). Предположим, что база данных уже есть (её проще всего создать при помощи phpMyAdmin или другого инструмента). Далее требуется создать таблицу, в которой будут храниться данные. Например, таблица для пользователей и их паролей, в которой также хранятся уникальные идентификаторы пользователей и их электронные адреса:

$query_create = mysql_query("CREATE TABLE `users` (

`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,

`name` VARCHAR( 255 ) NOT NULL ,

`email` VARCHAR( 255 ) NOT NULL ,

`password` VARCHAR( 255 ) NOT NULL ,

PRIMARY KEY ( `id` )

)");

Все поля не могут быть пустыми (NOT NULL), число идентификатора автоматически увеличивается на единицу при создании нового пользователя (AUTO_INCREMENT), поля могут быть не только типов INT(целое число), VARCHAR (разеые символы), но и LONGTEXT (длинный текст), DATETIME (дата и время) и т.п.

В функцию PHP mysql_query() в двойных кавычках помещается тело запроса; принято названия полей и таблиц MySQL писать в обратных кавычках, а переменные PHP внутри тела запроса в одинарных кавычках. Первичный ключ, по которому можно идентифицировать запись — id, как о том говоритPRIMARY KEY.

Этот код выполняется однократно, допустим, через самостоятельно созданную СуБД или просто во временной странице. Далее название этой таблицы можно занести в переменную:

$table = "users";

и с этой переменной работать.

Далее рассмотрены основные типы запросов, без которых невозможно обойтись.

1. Запись данных: insert

Допустим, мы приняли данные из формы:

$name = @$_POST['name'];

$password = @$_POST['password'];

$email = @$_POST['email'];

Теперь эти данные запишем как новую строку БД:

$result = mysql_query("INSERT INTO `$table` (`name`, `password`, `email`) VALUES ('$name', '$password', '$email')");

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

2. Чтение данных: select

Самый популярный тип запроса, извлекающий нужные данные из БД. Допустим, нужно извлечь все данные о пользователе по известному имени, хранящемуся в переменной $login:

$query = mysql_query("SELECT * FROM `$table` WHERE `name` = '$login'");

Звёздочка обозначает «всё». Оператор WHERE — условие. Условия можно группировать, а выбирать только определённые типы полей:

$query = mysql_query("SELECT `name`, `email` FROM `$table` WHERE `name` = '$login' OR `name` = '$login2'");

Теперь, когда мы запросили данные, они хранятся в т.наз. ресурсе, содержащемся в переменной$query (её можно называть как угодно). Ресурс может содержать одну строку (если совпадение по условию одно), а может и несколько (допустим, если мы запросили все данные без условий:

$query = mysql_query("SELECT * FROM `$table`");

то запрос вернёт всю информацию обо всех пользователях).

Если мы точно знаем, что запрос вернул одну строку с результатом, то достаточно прочитать данные из ресурса и занести в массив:

$sets = mysql_fetch_array($query);

Теперь у нас есть массив, названия ключей которого совпадают с полями из таблицы, например,$sets['email'] хранит в себе электронный адрес того пользователя, который был «прочитан» из базы.

Функция mysql_fetch_array() выбирает из ресурса по одной строке за раз, поэтому для обращения ко всем строкам нужно считывать данные из ресурса циклом:

$emails = array();

while($set = mysql_fetch_array($query)) {

$emails[] = $set['email'];

}

Так мы получаем массив всех электронных адресов всех пользователей, которые вернул запрос. Так же циклически можно эти данные сразу обрабатывать.

Чтобы упорядочить данные ещё на этапе запроса, можно сразу сортировать их:

$query = mysql_query("SELECT * FROM `$table` ORDER BY `id` DESC");

— в данном случае будет происходить обратная (DESC) сортировка по идентификатору (ORDER BY `id`) пользователей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]