Отчет2
.doc
Отчет по практической работе 2
От Швыряева Юрия 195 группа
Тема: публикация данных из БД на web-сервере
Задание 1.1.
Создать файл common.php с глобальными переменными, содержащими имя сервера, имя пользователя, пароль, имя БД. Создать файл 1_1.php, в котором подключить файл common.php командой INCLUDE (см. лекцию). Вывести сообщение о корректности подключения к серверу и выбору БД.
Задание 2.1.
Задание 2.2.
Задание 2.3.
Создать файл 1_2_3.php, в нем написать скрипт, который выводит содержимое таблицы Reader c использованием функции mysql_fetch_array. Проверить корректность работы файла при добавлении новых читателей.
Задание 3.1.
Создать файл 1_3_1.php, который выводит список читателей (фамилия и имя) с указанием названий книг, которые за каждым числятся. Вывод сделать в виде равномерно-заполненных строк, т.е. разрешить повторение фамилий читателей (см рис. 1) вариант 1. Для перемещения по результирующему массиву использовать функцию mysql_fetch_object().
Создать файл 1_3_2.php, который выводит список книг для каждого читателя как представлено на рис. 2. Для этого провести упорядочение результатов в sql-запросе по фамилии с использованием раздела order by Name_reader и вывести сначала фамилию читателя, а под ней список книг, которые за данным читателем числятся (см. рис.2).
Рис. 2. Вывод книг у читателей.
Задание 4
Задание 5.1.
Создать файл 1_5_1_form.html, в котором формируется форма с одним текстовым полем, где будет вводиться название области знаний. Написать скрипт, который будет запускаться при нажатии на кнопку Submit данной формы и будет выводить список книг, по требуемой области знаний (рис.4 и рис. 5).
Рис. 4. Форма для ввода названия области знаний
Рис. 5. Результат обработки
Задание 6.
Разработать универсальную функцию, которая бы позволяла выводить данные из любой таблицы БД в виде таблицы.
Действительно, универсальный запрос, который выводит содержимое таблицы
SELECT * FROM $table_name
Перемещаться по строкам мы умеем, нам теперь необходимо научиться перемещаться по столбцам и выводить названия столбцов. Для этого воспользуемся дополнительными функциями:
mysql_list_fields($database,$table_name) – функция позволяет получить список полей таблицы $table_name в БД $database.
mysql_num_fields($list_f) – функция, которая позволяет сосчитать число полей в таблице.
function print_table($table_name) {
include (‘common.php’);
/ * сначала делаем то же, что и раньше: устанавливаем
соединение, выбираем базу и получаем список и число полей в таблице, заданной переменной */
$db=@mysql_connect($server,$user,$password) or die ('Ошибка подключения : ' . msql_error($link));
$select_db= @mysql_select_db($dbname) OR die('Ошибка в БД '.$dbname.' '.mysql_error());
$list_f = mysql_list_fields($dbname,$table_name);
$n1 = mysql_num_fields($list_f);
// сохраним имена полей в массиве $names
for($j=0;$j<$n1; $j++){
$names[] = mysql_field_name ($list_f,$j);
}
$sql = "SELECT * FROM $table_name"; // создаем SQL запрос
$q = mysql_query($sql,$conn) or die(); // отправляем
// запрос на сервер
$n = mysql_num_rows($q); // получаем число строк результата
//рисуем HTML-таблицу (красивую)
echo " <TABLE BORDER=0 CELLSPACING=0 width=90%
align=center><tr><TD BGCOLOR='#005533' align=center>
<font color='#FFFFFF'><b>$table_name</b></font></td>
</tr></TABLE>";
echo "<table cellspacing=0 cellpadding=1 border=1
width=90% align=center>";
// отображаем названия полей
echo "<tr>";
foreach ($names as $val){
echo "<th ALIGN=CENTER BGCOLOR='#C2E3B6'>
<font size=2>$val</font></th>";
}
for($i=0;$i<$n; $i++){
// получаем значение поля в виде ассоциативного массива
while($row = mysql_fetch_array($q)) {
echo "<tr>";
foreach ($names as $k => $val){
echo "<td><font size=2> $row[$val]</font></td>";
// выводим значение поля
}
echo "</tr>";
}
}
echo "</table>";
}
?>
Разберите скрипт, скопируйте его себе во вновь созданный файл tab_print.inc и отладьте, для этого создайте новый скрипт 1_6.php, в нем командой INCLUDE пригрузите файл tab_print.inc и далее сделайте вызов разработанной функции с заданным именем таблицы БД.
Функция выводит таблицу в следующем виде (рис. 7):
Рис. 7. Пример работы функции print_table
Модифицируйте скрипт, так чтобы имя таблицы передавалось как параметр, например по протоколу GET, проверьте работоспособность данного скрипта на всех таблицах.
Закончите работу и предъявите все выполненные задания преподавателю, получите зачет по второму практическому занятию.