Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

Выбор строк из таблицы

После выбора имени таблицы и подтверждения ввода управление передается скрипту view_form.php. Результат работы скрипта показан на рисунке:

Рис. 3. Страница вывода таблицы

Из таблицы PHOUSE скрипт выбрал все строки и отобразил в виде таблицы. Левая колонка таблицы служит для указания текущей строки в списке строк.

Код скрипта view_form.php:

<?php #view_form.php include( "check.inc" ); include( "var.inc" ); // получаем имя таблицы, переданное в запросе $table = $_REQUEST["table"]; // формируем текст запроса $sql = "select * from ".$table.";"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" dir="ltr"> <head> <title>Выберите таблицу</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> </head> <body> <?php echo '<form name="list_data" action="edit_form.php" method="post">'; addVar( "table", $table ); // формируем список управляющих кнопок // проверяем, пустая ли таблица if( isempty_data( $sql ) ) { // если таблица пустая, то в кнопках "Удалить" и "Редактировать" // нет нужды addVar( "cntrow", 0 ); // добавляем на форму управляющие кнопки out_list_buttons("doaction", 0); } else { addVar( "cntrow", 1 ); // добавляем на форму управляющие кнопки out_list_buttons("doaction", 1); } // выводим список строк таблицы out_data_list( "keyvalue", "keyname", $sql, 1000 ); echo '</form>'; // добавляем на форму управляющие кнопки function out_list_buttons( $name, // имя переменной, куда будет сохранено заданное значение, // в зависимости от выбранной кнопки $cntrow // если параметр <= 0, то кнопки "Изменить строку" и // "Удалить строку" не добавляем ) { addVar( $name, "-1" ); echo '<br>'; echo button_with_act( "add", "Добавить строку", "1", $name ); if( $cntrow > 0 ) { echo button_with_act( "edit", "Изменить строку", "2", $name ); echo button_with_act( "del", "Удалить строку", "3" , $name); } echo button_with_act( "choosetab", "Выбрать таблицу повторно", "4" , $name); } // выводим на форму содержимое таблицы в виде списка function out_data_list( $name, // имя переменной, в которую будет присваиваться значение ключа // текущегй строки таблицы $keysavename, // имя переменной на клиентской странице // в которой будет хранится название ключевого поля $sql, // текст SQL-запроса $cntrow // максимальное число строк в результате запроса ) { try { // выполняем запрос $ar = get_result( $sql, $cntrow ); } catch (Exception $e) { // обрабатываем ошибку // выведем сообщение об ошибке echo $e->getMessage(); // завершаем генерацию страницы exit; } // формируем строку заголовков // выводим в заголовки имена полей echo '<table border="1" >'; echo "<tr>\n"; echo "<td> </td>\n"; foreach( $ar[0] as $val ) { echo "<td> " . $val[fname] ."</td>\n"; } echo "</tr>\n"; $i = 0; // проходим по всем строкам foreach( $ar[1] as $res ) { echo "<tr>\n"; // создаем колонку, в которой будет находится индикатор // текущей строки echo '<td><input type=radio name="'.$name.'" value = '.$res[0]; if( $i == 0 ) { // по умолчанию индикатор на первой строке echo " checked "; $i++; } echo '></td>'; // формируем значения колонок для строки foreach( $res as $var ) { echo "<td>" . $var ."</td>\n"; } } echo "</tr>\n"; echo '</table>'; // добавляем на клиентскую страницу переменную с именем ключевого // поля addVar( $keysavename, $ar[0][0][fname] ); } ?> </body> </html>

Имя таблицы получаем из элемента «table» в массиве $_REQUEST. При помощи функции isempty_data определяется, какие кнопки нужны для работы с данными. В случае непустой таблицы это кнопки: «Добавить строку», «Изменить строку», «Удалить строку», «Выбрать таблицу повторно». Для пустой таблицы присутствуют только кнопки «Добавить строку» и «Выбрать таблицу повторно».

Код для кнопок создается вызовом функции button_with_act, в этой функции указывается, какой переменной должно быть присвоено значение при нажатии данной кнопки, а также само значение. Это значение можно будет прочитать из скрипта - обработчика формы (скрипт edit_form.php). В нашем случае по этому значению (переменная «doaction») определяется, какие действия следует предпринять в скрипте – обработчике.

Собственно список строк таблицы выводится функцией out_data_list. Первая колонка содержит индикатор (радио-кнопка), позволяющий выбрать текущую строку. С каждым полем индикатора связано значение ключа соответствующей строки таблицы. Это значение помещается в переменную «keyvalue» и доступно в скрипте – обработчике формы. Помимо переменной «keyvalue» задается значение переменной «keysavename», которая содержит имя ключевого поля таблицы.