Разработка скриптов управления сайтом: работа с меню.
Создание интерфейсов добавления, изменения и удаления пунктов меню.
Создание общего интерфейса административной части работы с меню.
Меню
'; return $out; }Подключение файла "шапки административного интерфейса" и Определение переменных: глобальная таблица и глобальный файл.
Далее, если существует GET переменная des и она равна или edit или add тогда соответственно вызываются функции Редактирования или Добавления пункта меню
if (isset($_GET['des'])){ if ($_GET['des'] == 'edit') echo edit_table($_GET['id']); if ($_GET['des'] == 'add') echo edit_table(); }else{Иначе проверяем нет ли POST данных Редактирования или Добавления.
Если произошло редактирование пункта меню, обрабатываем данные. Получаем id записи которую редактировали (для того чтобы знать, какую именно запись менять). Обрабатываем Название пункта меню $_POST['name'] функцией addslashes, которая экранирует одинарные и двойные кавычки (для того чтобы SQL запрос был верен.
Например:
имя пункта меню= Товары "Пикачу"
При формировании SQL запроса без использования функции addslashes будет выглядеть так:
UPDATE vz_menu SET name="Товары "Пикачу"" WHERE id = 1
что вызовет ошибку после UPDATE vz_menu SET name="Товары " <- вот здесь
При формировании SQL запроса с использованием функции addslashes будет выглядеть так:
UPDATE vz_menu SET name="Товары \"Пикачу\"" WHERE id = 1
что не вызовет ошибки, так каккавычки экранированыif (isset($_POST['edit'])) { $id = $_POST['id']; $name = addslashes($_POST['name']); $sql = 'UPDATE '.$dbpf.'_'.$GLOBAL_TABLE.' SET name="'.$name.'" WHERE id = '.$id.''; $qur = mysql_query($sql); if ($qur) echo 'Пункт меню успешно изменен.'; else echo 'Пункт меню не изменен. Ошибка БД.'; }Если мы добавляем запись в таблицу, тогда сработает следующий код, который добавит запись в таблицу
if (isset($_POST['add'])) { $name = addslashes($_POST['name']); $sql = 'INSERT INTO '.$dbpf.'_'.$GLOBAL_TABLE.' VALUE (0,"'.$name.'")'; $qur = mysql_query($sql); if ($qur) echo 'Пункт меню успешно добавлен.'; else echo 'Пункт меню не добавлен. Ошибка БД.'; }Здесь проверяется наличие запроса на "пакетное" удаление записей из таблицы, через переменную $_POST['edit_group']
if (isset($_POST['edit_group'])){ if (isset($_POST['del'])){ foreach ($_POST['del'] as $key => $val){ $sql = 'DELETE FROM '.$dbpf.'_'.$GLOBAL_TABLE.' WHERE id='.$key.''; $qur = mysql_query($sql); } } }После всех проверок и выполнения действий выводим таблицу с внесенными результатами.
echo show_table(); }Функция для редактирования/добавления записи в таблицу. Если входной параметр пустой (автоматически присваивается 0) тогда происходит Добавление записи иначе Редактирование записи под номером который передан в функцию.
function edit_table($id=0){ GLOBAL $GLOBAL_TABLE,$GLOBAL_FILE,$dbpf; $out = '';Определяем глобальные переменные для использования их в функции. Если данную строку пропустить то внутри функции эти переменные будут равны пустому. И появятся ошибки о неопределенных переменных.
if ($id){Выбираем из базы данных запись под номером $id. И формируем массив $rez с данными записями.
$sql = 'SELECT * FROM '.$dbpf.'_'.$GLOBAL_TABLE.' WHERE id = '.$id.''; $qur = mysql_query($sql); $rez = mysql_fetch_assoc($qur); $regim = 'Редактирование пункта меню'; $button = ''; }else{Если переменная $id равна 0 тогда происходит добавление записи.
$rez['id'] = 0; $rez['name'] = ''; $regim = 'Добавление пункта меню'; $button = ''; }Формируем форму для редактирования записи пункта меню.
$out .= '
Функция отображения таблицы, для редактирования/добавления/удаления записей.
function show_table(){ GLOBAL $GLOBAL_TABLE,$dbpf; $out = '';
Подключаем глобальные перемнные. Формируем запрос к базе данных на выбоку всех записей и сортировке по полю id по убыванию (ORDER BY id DESC), т.е. новые записи будут первыми.
$sql = 'SELECT * FROM '.$dbpf.'_'.$GLOBAL_TABLE.' ORDER BY id DESC'; $qur = mysql_query($sql); $kol = mysql_num_rows($qur); $out .= ''; return $out; }
Также в предидущей функции реализованно оформление таблицы <tr class="table_tr"> - шапка таблицы и <tr class="table_tr_list"> - чередование строк. И формирование ссылок на редактирование, удаление и пакетное удаление записей.
include ("foot.php"); ?>
Результат работы в браузере.
Добавление записи
Редактирование записи
Отображение всех записей
Вау ! супер !