Скачиваний:
39
Добавлен:
04.04.2013
Размер:
728.06 Кб
Скачать

Проектирование системы администрирования

Система администрирования должна обеспечивать выполнение семи различных функций:

  1. Добавление новой группы товаров

  2. Изменение названия группы товаров

  3. Удаление группы товаров вместе со всеми изделиями, принадлежащими ей

  4. Добавление нового изделия в одну групп

  5. Изменение стоимости изделия

  6. Удаление изделия из группы

  7. Изменение курса доллара

Предлагается реализовать интерфейс, содержащий вертикальное меню из семи пунктов (в соответствии с описанными выше функциями). Следует так же предусмотреть область для вывода форм, при помощи которых оператор мог бы управлять данными. Эскиз интерфейса представлен на рисунке.

На основе эскиза опишем шаблон интерфейса на языке HTML.

<html>

<head>

<title>Система администрирования</title>

</head>

<body>

<table width="100%" cellpadding="0" cellspacing="0" border="0">

<tr>

<td width="25%">

<!-- Начало меню -->

<table width="100%" cellpadding="0" cellspacing="5">

<tr>

<td><b>Разделы</b></td>

</tr>

<tr>

<td><a href="admin.php?param=1">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=2">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=3">Удалить</a></td>

</tr>

<tr>

<td><br><b>Наименования</b></td>

</tr>

<tr>

<td><a href="admin.php?param=4">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=5">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=6">Удалить</a></td>

</tr>

<tr>

<td><br><b>Курс USD</b></td>

</tr>

<tr>

<td><a href="admin.php?param=7">Изменить</a></td>

</tr>

</table>

<!-- Окончание меню -->

</td>

<td valign="top">

<!-- Название текущей функции в переменной $title -->

<div align="left"><font size="5"><? echo $title; ?></font></div>

<br>

<form action="admin.php" method="post">

<!-- Управляющая форма в переменной $content -->

<? echo $content; ?>

<!-- Признак текущей функции в переменной $content -->

<input type="hidden" name="param" value="<? echo $param; ?>">

</form>

</td>

</tr>

</table>

</body>

</html>

Данный шаблон представляет собой таблицу с двумя ячейками. В левую ячейку вложена таблица, содержащая пункты меню. В правой ячейке отображается название текущей функции и управляющая форма.

Создадим файл admin.php, в котором будет храниться представленный выше шаблон, а так же код программы, написанной на языкеPHP.

Каждый элемент меню является ссылкой на скрипт admin.php. При вызове через любую из ссылок в меню, скрипту будет передаваться параметрparamсо значением, являющимся признаком вызываемой функции.

Рассмотрим элемент шаблона, отвечающий за отображение названия текущей функции и управляющей формы:

<td valign="top">

<!-- Название текущей функции в переменной $title -->

<div align="left"><font size="5"><? echo $title; ?></font></div>

<br>

<form action="admin.php" method="post">

<!-- Управляющая форма в переменной $content -->

<? echo $content; ?>

<!-- Признак текущей функции в переменной $content -->

<input type="hidden" name="param" value="<? echo $param; ?>">

</form>

</td>

При вызове скрипта, на основании полученного признака текущей функции (param) будут определены значения переменных $titleи $content. Конструкция, определяющая значения этих переменных, выглядит следующим образом:

if (!isset($param)) $param=1;

switch ($param) {

case 1:

$title='Добавление раздела';

$content=func1();

break;

case 2:

$title='Изменение раздела';

$content=func2();

break;

case 3:

$title='Удаление раздела';

$content=func3();

break;

case 4:

$title='Добавление наименования';

$content=func4();

break;

case 5:

$title='Изменение наименования';

$content=func5();

break;

case 6:

$title='Удаление наименования';

$content=func6();

break;

case 7:

$title='Изменение курса USD';

$content=func7();

}

В первой строке проверяется, установлено ли значение переменной $param(при первом запуске скрипта эта переменная не инициализирована, т.к. скрипт запускается без параметров). Если значение не установлено, то переменной $paramприсваивается значение 1. Далее следует условная конструкция, выполняющая один из семи блоков кода в зависимости от значения переменной $param.

Каждый из семи блоков кода инициализирует значение переменной $titleв зависимости от выбранной функции. Значение переменной $content(текст, описывающий управляющую форму) формируется соответствующей выполняемому блоку функцией. Рассмотрим функциюfunc1.

function func1() {

$content='<b>Название:</b>

<br><input type="text" size="45" maxlength="50" name="product">

<br><input type="submit" name="add" value="Добавить">';

return $content;

}

Представленная выше функция формирует строку, в которой описаны два элемента формы: поле для ввода текста (названия раздела, т.е. группы товаров), а так же кнопка для отправки данных формы на сервер. Заголовок формы, определяющий адрес обработчика и метод передачи данных на сервер был описан в шаблоне.

Программа, состоящая из шаблона пользовательского интерфейса, модуля выборки блока исполняемого кода и функции, формирующей управляющую форму, представлен ниже.

<?

function func1() {

$content='<b>Название:</b>

<br><input type="text" size="45" maxlength="50" name="product">

<br><input type="submit" name="add" value="Добавить">';

return $content;

}

//скрипт будет выполняться начиная с этой строки

if (!isset($param)) $param=1;

switch ($param) {

case 1:

$title='Добавление раздела';

$content=func1();

break;

case 2:

$title='Изменение раздела';

$content=func2();

break;

case 3:

$title='Удаление раздела';

$content=func3();

break;

case 4:

$title='Добавление наименования';

$content=func4();

break;

case 5:

$title='Изменение наименования';

$content=func5();

break;

case 6:

$title='Удаление наименования';

$content=func6();

break;

case 7:

$title='Изменение курса USD';

$content=func7();

}

?>

<html>

<head>

<title>Система администрирования</title>

</head>

<body>

<table width="100%" cellpadding="0" cellspacing="0" border="0">

<tr>

<td width="25%">

<!-- Начало меню -->

<table width="100%" cellpadding="0" cellspacing="5">

<tr>

<td><b>Разделы</b></td>

</tr>

<tr>

<td><a href="admin.php?param=1">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=2">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=3">Удалить</a></td>

</tr>

<tr>

<td><br><b>Наименования</b></td>

</tr>

<tr>

<td><a href="admin.php?param=4">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=5">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=6">Удалить</a></td>

</tr>

<tr>

<td><br><b>Курс USD</b></td>

</tr>

<tr>

<td><a href="admin.php?param=7">Изменить</a></td>

</tr>

</table>

<!-- Окончание меню -->

</td>

<td valign="top">

<!-- Название текущей функции в переменной $title -->

<div align="left"><font size="5"><? echo $title; ?></font></div>

<br>

<form action="admin.php" method="post">

<!-- Управляющая форма в переменной $content -->

<? echo $content; ?>

<!-- Признак текущей функции в переменной $content -->

<input type="hidden" name="param" value="<? echo $param; ?>">

</form>

</td>

</tr>

</table>

</body>

</html>

При запуске скрипта переменной $paramбудет присвоено значение 1. В соответствии со значением $paramбудут инициализированы функции $titleи $content, причем для инициализации переменной $contentбудет вызвана функцияfunc1. Значения переменных $param, $titleи $contentбудут подставлены в шаблон, на основе которого будет сформирована и отосланаhtml-страница следующего вида:

<html>

<head>

<title>Система администрирования</title>

</head>

<body>

<table width="100%" cellpadding="0" cellspacing="0" border="0">

<tr>

<td width="25%">

<table width="100%" cellpadding="0" cellspacing="5">

<tr>

<td><b>Разделы</b></td>

</tr>

<tr>

<td><a href="admin.php?param=1">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=2">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=3">Удалить</a></td>

</tr>

<tr>

<td><br><b>Наименования</b></td>

</tr>

<tr>

<td><a href="admin.php?param=4">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=5">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=6">Удалить</a></td>

</tr>

<tr>

<td><br><b>Курс USD</b></td>

</tr>

<tr>

<td><a href="admin.php?param=7">Изменить</a></td>

</tr>

</table>

</td>

<td valign="top">

<div align="left"><font size="5">Добавление раздела</font></div>

<br>

<form action="admin.php" method="post">

<b>Название:</b>

<br><input type="text" size="45" maxlength="50" name="product">

<br><input type="submit" name="add" value="Добавить">

<input type="hidden" name="param" value="1">

</form>

</td>

</tr>

</table>

</body>

</html>

Если ввести в поле "Название раздела" название группы товаров и нажать на кнопку добавить, будет запущен скрипт admin.php. В качестве параметров он получит ему будут переданы значенияproduct(содержащее строку с названием группы товаров),add(информирующее скрипт о том, что была нажата кнопка "Добавить") иparam(содержащее признак текущей функции, т.е. 1). Следует заметить, что значениеparamпередается в виде скрытого параметра (элемент формы типаhidden) и на экране не отображается.

Скрипт запустит блок кода, соответствующий значению переменной $param=1. Будут инициализированы переменные $titleи $content. В результате будет сформирована страница, ни чем не отличающаяся от представленной выше. Однако никаких изменений в базе данных не произойдет, т.к. данные, введенные пользователем в форму нигде не обрабатываются.

Для того, чтобы добавить в базу данных новую группу товаров, необходимо создать блок, обрабатывающий данные, полученные от формы.

Для этого добавим в начало скрипта строки, устанавливающие соединения с сервером баз данных и выбирающие активную базу данных:

mysql_connect("localhost","",""); //устанавливает соединение

mysql_select_db("mybase"); //выбирает активную базу данных

if (!isset($param)) $param=1;

switch ($param) {

case 1:

$title='Добавление раздела';

$content=func1();

break;

................... // фрагмент кода пропущен, чтобы не перегружать текст

case 7:

$title='Изменение курса USD';

$content=func7();

}

Внесем изменения в функцию func1.

function func1() {

global $product, $add;

if (isset($add) && ($product!='')) {

$q=mysql_query("select description from products where description='$product'");

if (mysql_num_rows($q)>0) $msg='Раздел уже существует';

else {

mysql_query("insert into products values(null,'$product')");

$msg='Раздел добавлен';

}

}

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').

'<b>Название:</b><br><input type="text" size="45" maxlength="50" name="product">

<br><input type="submit" name="add" value="Добавить">';

return $content;

}

В начале функции переменные $productи $addобъявляются глобальными. Это необходимо для того, чтобы получить доступ к их значениям из тела функции.

Далее осуществляется проверка, инициализирована ли переменная $addи не является ли значение переменной $productпустой строкой. Возможны три варианта:

  1. Значение переменной $addне установлено. Это означает, что функция запускается первый раз (например при первом запуске скрипта или переходе по соответствующей ссылке). Соответственно форма не была заполнена и нужно просто отобразить ее в шаблоне. Функция формирует строку, описывающую элементы управляющей формы, и возвращает ее для подстановки в шаблон интерфейса. При формировании строки (в самом начале) проверяется, инициализирована ли переменная $msg(диагностическое сообщение) и если инициализирована, то строка должна начинаться со значения переменной $msg, написанного синими буквами. Если переменная $msgне инициализирована, то в начало строки добавляется "пустая строка", т.е. фактически ничего не добавляется. В результате, строка, описывающая управляющую форму ничем не отличается от предыдущего результата работы функции, описанного выше.

  2. Переменная $addинициализирована, но переменная $productимеет значение "пустая строка". Это означает что пользователь нажал на кнопку "Добавить" (т.е форма уже была предварительно отображена), но не ввел данные в поле "Название раздела". Поскольку в базе данных не может быть раздела без имени, функция игнорирует нажатие и вновь возвращает строку, содержащую описание формы (теоретически, в этой ситуации было бы грамотно выводить диагностическое сообщение о том, что необходимо заполнить поле "Название раздела", однако практически это не было реализовано, дабы не перегружать текст программы)

  3. Переменная $addинициализирована и значение переменной $productне является пустой строкой. Это означает, что пользователь заполнил поле формы и нажал на кнопку "Добавить". Получив эти данные, функция делает запрос к базе данных, чтобы проверить, существует ли раздел с именем, являющимся значением $product. Фактически это осуществляется следующим образом: функция посылает запрос на выборку названия раздела при условии, что название раздела равно значению$product.

Если в результирующем наборе, сформированном в результате запроса, содержится хотя бы одна запись (более нуля записей), это говорит о том, что раздел с данным названием уже зарегистрирован. Функция инициализирует переменную $msgзначением 'Раздел уже существует', формирует строку с описанием управляющей формы (в начало строки подставляется сгенерированное диагностическое сообщение) и возвращает строку для подстановки в шаблон.

Если результирующий набор не содержит записей, функция добавляет информацию о разделе в базу данных, инициализирует переменную $msgзначением 'Раздел добавлен', формирует строку с описанием формы и соответствующим диагностическим сообщением, после чего возвращает сформированную строку для подстановки в шаблон.

Таким образом можно добавлять в базу данных неограниченное количество не совпадающих разделов. Кратко, алгоритм работы системы управления выглядит следующим образом:

Установка соединения с базой данных;

Если не определен признак управляющей функции, то установить его значение в 1;

Выбрать блок кода, соответствующий признаку управляющей функции;

Инициализировать заголовок текущей функции;

Вызвать функцию формирования управляющей формы;

Если форма заполнена корректно, то внести изменения в базу данных;

Если инициализировано диагностическое сообщение, то добавить его к строке;

Присоединить к строке описание управляющей формы;

Вернуть результирующую строку для подстановки в шаблон;

Сформировать страницу на основе шаблона, заголовка, формы и признака функции;

Рассмотрим программную ветвь, отвечающую за изменение названия раздела (группы товаров). Принципы работы программы остаются неизменными, поэтому рассмотрение сведется к анализу функции func2.

function func2() {

global $product,$pid,$change;

if (isset($change) && ($product!='')) {

$q=mysql_query("select description from products where description='$product'");

if (mysql_num_rows($q)>0) $msg='Раздел уже существует';

else {

mysql_query("update products set description='$product' where pid=$pid");

$msg='Раздел изменен';

}

}

$q=mysql_query("select * from products order by pid");

if (mysql_num_rows($q)>0) {

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').'<b>Название:</b><br><select name="pid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["pid"].'">'.$r["description"];

$content.='</select><br><br><b>Новое название:</b><br><input type="text" name="product" size="45" maxlength="50">

<br><input type="submit" name="change" value="Изменить">';

}

else $content='';

return $content;

}

Переменные $product, $pidи $changeобъявляются глобальными. Далее следует проверка, была ли заполнена форма. Если форма не была заполнена, или была заполнена не корректно (т.е. поле "Новое название" оставлено пустым), функция формирует строку с управляющей формой (процесс формирования будет рассмотрен ниже). Если форма заполнена корректно, функция проверяет, существует ли в базе данных раздел, название которого совпадает с новым названием изменяемого раздела. Если такой раздел существует, функция формирует соответствующее сообщение. Если не существует, функция изменяет название выбранного раздела и создает диагностическое сообщение.

Формирование строки, описывающей управляющую форму начинается с проверки, зарегистрированы ли какие-либо разделы в базе данных. Если не зарегистрированы, для подстановки в шаблон возвращается пустая строка. Если разделы существуют, функция встраивает в результирующую строку диагностическое сообщение (если оно есть). Далее формируется элемент формы с именем pid– выпадающий список, содержащий в качестве названий зарегистрированные разделы, а в качестве значений – соответствующие названиям идентификаторы разделов. На следующем этапе к строке присоединяется элемент для ввода текстовой строки (product), в который будет вводиться новое название для выбранного раздела, а так же добавляется кнопка (change) для отправки содержимого формы на сервер.

Разобраться в том, как работают функции удаления раздела и добавления наименования (изделия) читателю предлагается самостоятельно. Этот шаг призван улучшить понимание принципов функционирования системы администрирования. Полный текст программы будет представлен ниже.

Далее будет рассмотрена функция изменения стоимости наименования (изделия).

function func5() {

global $pid,$mid,$price,$status,$select,$change;

if (!isset($status)){

$q=mysql_query("select * from products order by pid");

if (mysql_num_rows($q)>0) {

$content='<b>Раздел:</b><br><select name="pid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["pid"].'">'.$r["description"];

$content.='</select>

<br><input type="submit" name="select" value="Выбрать">

<br><input type="hidden" name="status" value="1">';

}

else $content='';

}

elseif ($status==1) {

$q=mysql_query("select mid,firm,model from models where pid=$pid order by mid");

if (mysql_num_rows($q)>0) {

$content='<b>Модель:</b><br><select name="mid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["mid"].'">'.$r["firm"].' '.$r["model"];

$content.='</select>

<br><input type="submit" name="select" value="Выбрать">

<br><input type="hidden" name="status" value="2">';

}

else $content='';

}

elseif ($status==2) {

$q=mysql_query("select * from models where mid=$mid");

$r=mysql_fetch_array($q);

$content='<b>'.$r["firm"].' '.$r["model"].'</b>

<br><input type="text" name="price" value="'.$r["price"].'"><b>USD</b>

<br><input type="submit" name="change" value="Изменить">

<br><input type="hidden" name="status" value="3">

<br><input type="hidden" name="mid" value="'.$mid.'">';

}

elseif ($status==3) {

$price=(double) $price;

mysql_query("update models set price=$price where mid=$mid");

$content='<font color="blue">Изменения внесены</font>';

}

return $content;

}

Представленная выше функция выглядит несколько громоздко по сравнению с предыдущими. Это связано с тем, что предыдущие управляющие формы были одношаговыми, т.е. для достижения цели необходимо было заполнить и обработать только одну форму. Изменение стоимости наименования (изделия) будет проходить в три этапа:

  1. Выбор раздела (группы товаров)

  2. Выбор наименования (изделия)

  3. Изменение стоимости изделия

Определение этапа будет осуществляться при помощи переменной $status, значение которой будет изменяться и последовательно передаваться от одной формы к другой.

Функция может обращаться значениям глобальных переменных $pid, $mid, $price, $status, $select, $change если они инициализированы.

При первом запуске функции переменная $statusне установлена. Функция определяет, зарегистрированы ли в базе данных какие-либо разделы. Если не зарегистрированы, то для подстановки в шаблон возвращается пустая строка. Если разделы зарегистрированы, то создается форма, содержащая выпадающий список разделов, скрытый параметрstatusсо значением 1 и кнопку для отправки данных.

Если значение переменной $status=1 , это означает, что на предыдущем этапе пользователь выбрал раздел. Функция проверяет, зарегистрированы ли какие-нибудь наименования (изделия) в данном разделе (группе товаров). Если нет, то для подстановки в шаблон возвращается пустая строка. Если зарегистрированы, функция формирует строку, содержащую элемент формы "выпадающий список" с набором наименований, скрытый параметрstatusсо значением 2 и кнопку для отправки данных.

Если значение переменной $status=2, это означает, что пользователь выбрал изменяемое наименование. Функция формирует результирующую строку, содержащую форму со следующими элементами: строка для ввода текста с установленной в ней ценой изделия, скрытый параметрmid– идентификатор изделия, скрытый параметрstatus– со значением 3 и кнопку для отправки данных.

Если значение переменной $status=3, функция приводит явным образом к форматуdouble(вещественное число) значение переменной $price(новая стоимость изделия), вносит изменения в базу данных и формирует результирующую строку, содержащую диагностическое сообщение 'Изменения внесены'.

Для закрепления материала функцию удаления наименования читателю предлагается реализовать самостоятельно. Удаления наименования реализуется путем внесения некоторых изменений в описанную выше функцию.

Рассмотрим функцию изменения курса доллара.

function func7() {

global $rubl,$change;

if (isset($change) && ($rubl!='')) {

$fp=fopen("usd","w");

fputs($fp,$rubl);

fclose($fp);

$msg='Изменения внесены';

}

$fp=fopen("usd","r");

$rubl=fgets($fp);

fclose($fp);

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').'<b>Курс USD</b>

<br><input type="text" name="rubl" value="'.$rubl.'">

<br><input type="submit" name="change" value="Изменить">';

return $content;

}

Переменные $rublи $changeобъявляются глобальными. Если форма для изменения курса была заполнена правильно, в файлusdзаписывается новое значение курса и формируется диагностическое сообщение 'Изменения внесены'.

Далее файл usdоткрывается для чтения, из него считывается значение текущего курса доллара. На следующем этапе формируется описание управляющей формы, состоящее из поля для ввода текста с указанным в нем текущем курсе, а так же кнопки отправления данных на сервер.

Ниже приводится полный текст программы "Система администрирования".

<?

//Добавление нового раздела

function func1() {

global $product, $add;

if (isset($add) && ($product!='')) {

$q=mysql_query("select description from products where description='$product'");

if (mysql_num_rows($q)>0) $msg='Раздел уже существует';

else {

mysql_query("insert into products values(null,'$product')");

$msg='Раздел добавлен';

}

}

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').

'<b>Название:</b><br><input type="text" size="45" maxlength="50" name="product">

<br><input type="submit" name="add" value="Добавить">';

return $content;

}

//Изменение названия раздела

function func2() {

global $product,$pid,$change;

if (isset($change) && ($product!='')) {

$q=mysql_query("select description from products where description='$product'");

if (mysql_num_rows($q)>0) $msg='Раздел уже существует';

else {

mysql_query("update products set description='$product' where pid=$pid");

$msg='Раздел изменен';

}

}

$q=mysql_query("select * from products order by pid");

if (mysql_num_rows($q)>0) {

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').'<b>Название:</b><br><select name="pid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["pid"].'">'.$r["description"];

$content.='</select><br><br><b>Новое название:</b><br><input type="text" name="product" size="45" maxlength="50">

<br><input type="submit" name="change" value="Изменить">';

}

else $content='';

return $content;

}

//Удаление раздела

function func3() {

global $pid, $del;

if (isset($del)) {

mysql_query("delete from products where pid=$pid");

mysql_query("delete from models where pid=$pid");

$msg="Раздел удален";

}

$q=mysql_query("select * from products order by pid");

if (mysql_num_rows($q)>0) {

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').'<b>Название:</b><br><select name="pid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["pid"].'">'.$r["description"];

$content.='</select><br><input type="submit" name="del" value="Удалить">';

}

else $content=(isset($msg) ? '<font color="blue">'.$msg.'</font>' : '');

return $content;

}

//Добавление наименования

function func4() {

global $pid,$firm,$model,$price,$add;

if (isset($add) && ($firm!='') && ($model!='') && ($price!='')) {

$q=mysql_query("select mid from models where firm='$firm' and model='$model'");

if (mysql_num_rows($q)>0) $msg='Модель уже присутствует в каталоге';

else {

$price=(double) $price;

mysql_query("insert into models values(null,$pid,'$firm','$model',$price)");

$msg='Модель добавлена';

}

}

$q=mysql_query("select * from products order by pid");

if (mysql_num_rows($q)>0) {

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').'<b>Раздел:</b><br><select name="pid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["pid"].'">'.$r["description"];

$content.='</select><br><br><b>Фирма:</b><br><input type="text" name="firm" size="50" maxlength="50">

<br><br><b>Модель:</b><br><input type="text" name="model" size="50" maxlength="50">

<br><br><b>Цена (USD):</b><br><input type="text" name="price" size="10" maxlength="10">

<br><input type="submit" name="add" value="Добавить">';

}

else $content='';

return $content;

}

//изменение наименования

function func5() {

global $pid,$mid,$price,$status,$select,$change;

if (!isset($status)){

$q=mysql_query("select * from products order by pid");

if (mysql_num_rows($q)>0) {

$content='<b>Раздел:</b><br><select name="pid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["pid"].'">'.$r["description"];

$content.='</select>

<br><input type="submit" name="select" value="Выбрать">

<br><input type="hidden" name="status" value="1">';

}

else $content='';

}

elseif ($status==1) {

$q=mysql_query("select mid,firm,model from models where pid=$pid order by mid");

if (mysql_num_rows($q)>0) {

$content='<b>Модель:</b><br><select name="mid">';

while($r=mysql_fetch_array($q))

$content.='<option value="'.$r["mid"].'">'.$r["firm"].' '.$r["model"];

$content.='</select>

<br><input type="submit" name="select" value="Выбрать">

<br><input type="hidden" name="status" value="2">';

}

else $content='';

}

elseif ($status==2) {

$q=mysql_query("select * from models where mid=$mid");

$r=mysql_fetch_array($q);

$content='<b>'.$r["firm"].' '.$r["model"].'</b>

<br><input type="text" name="price" value="'.$r["price"].'"><b>USD</b>

<br><input type="submit" name="change" value="Изменить">

<br><input type="hidden" name="status" value="3">

<br><input type="hidden" name="mid" value="'.$mid.'">';

}

elseif ($status==3) {

$price=(double) $price;

mysql_query("update models set price=$price where mid=$mid");

$content='<font color="blue">Изменения внесены</font>';

}

return $content;

}

//Удаление наименования

function func6() {

//Здесь будет ваша функция

}

//Изменение курса доллара

function func7() {

global $rubl,$change;

if (isset($change) && ($rubl!='')) {

$fp=fopen("usd","w");

fputs($fp,$rubl);

fclose($fp);

$msg='Изменения внесены';

}

$fp=fopen("usd","r");

$rubl=fgets($fp);

fclose($fp);

$content=(isset($msg) ? '<font color="blue">'.$msg.'</font><br><br>' : '').'<b>Курс USD</b>

<br><input type="text" name="rubl" value="'.$rubl.'">

<br><input type="submit" name="change" value="Изменить">';

return $content;

}

//Начало программы

mysql_connect("localhost","","");

mysql_select_db("mybase");

if (!isset($param)) $param=1;

switch ($param) {

case 1:

$title='Добавление раздела';

$content=func1();

break;

case 2:

$title='Изменение раздела';

$content=func2();

break;

case 3:

$title='Удаление раздела';

$content=func3();

break;

case 4:

$title='Добавление наименования';

$content=func4();

break;

case 5:

$title='Изменение наименования';

$content=func5();

break;

case 6:

$title='Удаление наименования';

$content=func6();

break;

case 7:

$title='Изменение курса USD';

$content=func7();

}

?>

<!-- Шаблон пользовательского интерфейса -->

<html>

<head>

<title>Система администрирования</title>

</head>

<body>

<table width="100%" cellpadding="0" cellspacing="0" border="0">

<tr>

<td width="25%">

<table width="100%" cellpadding="0" cellspacing="5">

<tr>

<td><b>Разделы</b></td>

</tr>

<tr>

<td><a href="admin.php?param=1">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=2">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=3">Удалить</a></td>

</tr>

<tr>

<td><br><b>Наименования</b></td>

</tr>

<tr>

<td><a href="admin.php?param=4">Добавить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=5">Изменить</a></td>

</tr>

<tr>

<td><a href="admin.php?param=6">Удалить</a></td>

</tr>

<tr>

<td><br><b>Курс USD</b></td>

</tr>

<tr>

<td><a href="admin.php?param=7">Изменить</a></td>

</tr>

</table>

</td>

<td valign="top">

<div align="left"><font size="5"><? echo $title; ?></font></div>

<br>

<form action="admin.php" method="post">

<? echo $content; ?>

<input type="hidden" name="param" value="<? echo $param; ?>">

</form>

</td>

</tr>

</table>

</body>

</html>