После нажатия управляющей кнопки формируется запрос к скрипту save_data.php. Предположим, что ввели в форму ввода следующие данные:
Рис. 5. Страница добавления записи
Скрипт save_data.php предназначен для сохранения данных в БД. В случае новых данных они будут добавлены через оператор insrert, в случае изменения данных будет использован оператор update. Помимо добавления и изменения данных скрипт также используется для удаления. Все операторы insrert, update, delete формируются автоматически на основе переданных в скрипт переменных с именем таблицы, названием ключевого поля и значением ключевого поля.
Исходный текст срипта save_data.php следующий:
<?php #save_data.php
include( "check.inc" );
// переменные, переданные из формы редактирования // переменные, переданные из формы просмотра $table = $_REQUEST["table"]; // имя таблицы $keyname = $_REQUEST["keyname"]; // имя ключевого поля $keyvalue = $_REQUEST["keyvalue"]; // значение ключевого поля $doaction = $_REQUEST["doaction"]; // предполагаемое действие // 1 - добавить строку // 2 - изменить строку // 3 - удалить строку // 4 - перейти к форме выбора таблиц $result = $_REQUEST["result"]; // 1 - требуется выполнить // действия, указанные в $doaction, // в противном случае - перейти к // форме просмотра // проверяем, нужно ли выполнять действия, заданные в $doaction if( ($result != "1") or $_SESSION["save"]) { // если нет, то переходим к форме просмотра include("view_form.php"); exit; }
// формируем массив имен полей и их значений по // переменным, переданным в запросе $fieldarr = create_fieldarr();
if( $doaction == "1" ) {
// получаем текст SQL-запроса для добавления строки в таблицу $eq = insert_sql_text( $fieldarr, $table, $keyname, $keyvalue ); } elseif( $doaction == "2" ) {
// получаем текст SQL-запроса для изменения строки таблицы $eq = update_sql_text( $fieldarr, $table, $keyname, $keyvalue ); } elseif( $doaction == "3" ) {
// получаем текст SQL-запроса для удаления строки таблицы $eq = delete_sql_text( $fieldarr, $table, $keyname, $keyvalue );
} else { exit; }
try {
// выполняем код запроса exec_sql( $eq );
// пишем на страницу сообщение пользователю об успешности запроса if( $doaction == "1" ) { echo "Строка успешно добавлена в таблицу<br>"; } elseif( $doaction == "2" ) { echo "Строка в таблице успешно изменена<br>"; } elseif( $doaction == "3" ) { echo "Строка успешно удалена из таблицы<br>"; } } catch (Exception $e) { // обрабатываем ошибку // выведем сообщение об ошибке echo $e->getMessage();
// возвращаемся к форме просмотра при удалении // и к форме редактирования в остальных случаях if( $doaction == "3" ) { include("view_form.php"); } else { include("edit_form.php"); }
// формируем текст SQL-запроса на изменение данных function update_sql_text( $fieldarr, // массив имен полей и их значений $table, // имя таблицы $keyname, // имя ключевого поля $keyvalue // значение ключевого поля ) {
// формируем текст SQL-запроса на добавление данных function insert_sql_text( $fieldarr, // массив имен полей и их значений $table, // имя таблицы $keyname, // имя ключевого поля $keyvalue // значение ключевого поля ) {
$eq = "insert into ".$table.$fldlist.$vallist."); fix all;"; return $eq;
}
// формируем текст SQL-запроса на удаление данных function delete_sql_text( $fieldarr, // массив имен полей и их значений $table, // имя таблицы $keyname, // имя ключевого поля $keyvalue // значение ключевого поля ) {