После выполнения запроса вся последующая работа с результатами осуществляется уже со структурами в памяти (массивами). Функции get_result, exec_sql, isempty_data содержат код по обработке ошибок, в случае возникновения ошибки выполняется генерация исключения, которое должно быть обработано в вызывающем коде. Для генерации текста ошибки используется дополнительная функция gen_error_message.
Вернемся к файлу after_login.php. После установления соединения с БД выполняется генерация страницы для выбора таблицы при помощи скрипта ch_table.inc. Результирующая страница выглядит следующим образом:
// создать код, формирующий список с заданным именем // на основе запроса к БД function create_list_fromdb( $name, // имя списка $sql, // текст SQL-запроса, в спискебудет отображаться // первое поле в результате $cntrow // максимальное количество элементов в списке ) {
// формируем массив значений для списка foreach( $ar[1] as $val ) { $res[] = $val[0]; }
// создаем код для формирования списка return create_view_list( $name, $res ); }
?> </body> </html>
Регистрация переменной "table"
Список таблиц создается функцией create_list_fromdb на основе запроса:
select * from TABLES;
TABLES – это таблица словаря данных HyTech, в котором содержится информация о таблицах. В результате запроса создается массив с именами таблиц. Этот массив передается в функцию create_view_list, которая формирует корректные теги HTML для формирования списка. Помимо тегов HTML создается еще функция на JavaScript, которая возвращает значение текущего элемента списка. Эта функция используется при обработке события нажатия кнопки «Ok» для присвоения значения текущего элемента списка переменной «table». Значение переменной «table» будет передано в скрипт view_form.php (этот скрипт указан в заголовке формы как скрипт обработки). Далее переменная «table» будет использована в качестве имени таблицы при выборке данных.
Переменная «table» регистрируется специальной функцией addVar. Эта функция создает на форме «скрытый» элемент ввода, тем не менее, значение этого элемента будет передано в запросе POST на сервер в скрипт обработки. Код функции addVar содержится в файле var.inc. Вот этот файл:
<?php #var.inc
// добавить на страницу скрытый элемент ввода (переменную) // этому элементу можно присвоить значение, которое будет // передано в скрипт - обработчик формы function addVar( $vname, // имя переменной $value // значение по умолчанию ) {
echo '<input type = hidden value = "'. $value. '" name = "'. $vname.'" >';
}
// получить кусок кода для клиентской страницы, // извлекающий значение переменной, // заданной элементом ввода function getVar_Client( $vname // имя переменной ) {
return "document.forms[0].".$vname.".value";
}
// получить кусок кода для клиентской страницы, // создающий кнопку, при нажатии которой будет // присвоено значение заданной переменной // и управление будет передано скрипту-обработчику // формы (на сервер) function button_with_act( $name, // имя кнопки $text, // текст на кнопке $val, // значение, присваиваемое переменной $actname // имя переменной ) { return '<button name="'.$name.'" type="submit" '. ' onclick="document.forms[0].'.$actname.'.value = '.$val. '">'.$text.'</button>'; }
?>
Данные функции активно используются в других скриптах.