Логика вызова программ при выборе пункта меню
Для каждого типа пользователей определен свой набор пунктов главного меню. Посмотрим, как реализована логика выбора программ для каждого пункта главного меню. При авторизации пользователя на сайте в переменных SESSION сохраняется
значение типа пользователя, которое берется из базы данных (таблица users поле type). При выборе пункта меню происходит вызов xajax-функции Mainmenu с аргументом, значение которого равно id записи для пары "тип пользователя — пункт главного меню" в таблице mainmenu базы данных. Содержимое файла mainmenu.php приведено в листинге 3.22. Из таблицы mainmenu получаем значения полей prgprg и prgdiv. Значение поля prgprg — списки наборов подпрограмм, разделенные символом ;. Значение поля prgdiv — списки блоков, куда выводятся результаты наборов подпрограмм, разделенные символом ;. Преобразуем строки значения в массив и последовательно выбираем из массива подпрограмму, выполняем ее, а результат выводим в соответствующий блок. Если для подпрограммы необходимо выполнить сценарий JavaScript на стороне клиента, то отправляем код на исполнение.
Листинг 3.22
function MainMenu($Id)
{
$objResponse = new xajaxResponse();
$objResponse->assign("flag_ajax","value",’yes’);
// подключение к базе данных
require_once("mybaza.php");
// формирование меню для пользователя
$query1="SELECT id,name FROM mainmenu WHERE status=’".$_SESSION[type]."’ && visible=’yes’ ORDER BY sort ASC ";
$rez1=mysql_query($query1);
while($row1=mysql_fetch_assoc($rez1))
{
// активный пункт меню
if($row1[id]==$Id)
{
$dataheader3.="     ".$row1[name];
} else
// неактивный пункт меню – ссылка
$dataheader3.="    <a href=’javascript:void(null)’ onclick=’
xajax_MainMenu(".$row1[id].");’>".$row1[name]."</a>";
}
// вывод пунктов главного меню
$objResponse->assign("header3","innerHTML",$dataheader3);
// получить для открытого пункта меню набор программ и блоков
$query2="SELECT prgdiv,prgprg,id FROM mainmenu WHERE id=".$Id." ";
$rez2=mysql_query($query2);
$row2=mysql_fetch_row($rez2);
// перевести строку в массив
$arraydiv=explode(";",$row2[0]);
$arrayprg=explode(";",$row2[1]);
// выполнение программ
for($i=0;$i<count($arrayprg);$i++)
{$divcontent="";$script=""; switch(trim($arrayprg[$i]))
{
// выход из профиля
case "out":
$_SESSION[type]=1;
$query11="SELECT id,name FROM mainmenu WHERE status=’1′
&& visible=’yes’ ORDER BY sort ASC ";
$rez11=mysql_query($query11);$j=0; while($row11=mysql_fetch_assoc($rez11))
{$j++; if($j==1)
$divcontent="     ".$row11[name]; else
$divcontent.="     <a href=’ javascript:void()’ onclick=’xajax_MainMenu(".$row11[id].")
;’>".$row11[name]."</a>";
}
$query12="SELECT id FROM users
WHERE login=’".$_SESSION[session]."’ ";
$_SESSION[user]=mysql_result(mysql_query($query12),0);
$script="document.getElementById(‘flag_time1′).
value=".$_SESSION[user].";";
$script.="document.getElementById(‘header4′).innerHTML=
‘Нет сообщений’;";
break;
case "formvhod": $divcontent="<form name=’FormVhod’ id=’FormVhod’ action=’javascript:void(null);’ onsubmit=’
xajax.$(\"ButtonFormVhod\").disabled=true; xajax.$(\"ButtonFormVhod\").value=\"Подождите…\"; xajax_Vhod(xajax.getFormValues(\"FormVhod\"));’>
Логин <input type=’text’ id=’login’ name=’login’ value=”
size=10 maxlength=10>
Пароль <input type=’password’ id=’password’
name=’password’ value=” size=10 maxlength=10>
<input type=’submit’ id=’ButtonFormVhod’ value=’Вход —>’>
</form>"; break;
// редактирование категорий (админ)
case "clear": $divcontent="<table></table>";
break;
case "clearkorzina": $divcontent="<table></table>";
$script="document.getElementById(‘flag_korzina’).value=’no’;"; break;
// редактирование категорий (админ)
case "zagadminkategory":$divcontent=f_zag1(
"Редактирование категорий");
break;
case "adminkategory":
$divcontent="<div class=’menu’ id=’admin_path_kategory’ >
</div><div class=’menu’ style=’margin-left:0′ id=’admin_kategory1′>*******</div>";
break;
case "adminopenkategory":
$divcontent=f_admin_open_kategory(1); break;
case "adminpathkategory":
$divcontent="<b>Текущая категория :</b><br>
".f_string_kategory(1);
$divcontent.="<br><a href=’javascript:void();’ onclick=’
xajax_Delete_Admin_Kategory(1);’>Удалить</a>";
$divcontent.="<br><a href=’javascript:void();’ onclick=’
xajax_Rename_Admin_Kategory(1);’>Переименовать</a>";
$divcontent.="<br><a href=’javascript:void();’ onclick=’
xajax_Add_Admin_Kategory(1);’>Добавить</a>";
break;
// регистрация
case "zagreg": $divcontent=f_zag1("Регистрация");
break;
case "reg": $divcontent=f_form_reg_user(); break;
// курсы валют
case "zagrate": $divcontent=f_zag1("Курсы валют");
break;
case "rate": $divcontent=f_view_rate(); break;
// категории товаров
case "zagkategory": $divcontent=f_zag1("Заголовок");
break;
case "kategory":
$divcontent="<div class=’menu’ style=’margin-left:0′ id=kategory1></div>";
break;
case "openkategory":
$divcontent=f_open_kategory(1);
break;
// korzina
case "zagkorzina": $divcontent=f_zag1("Корзина");
break;
case "korzina": $divcontent=f_korzina_right(); break;
// alltovars
case "zagalltovars": $divcontent=f_zag1("Все товары");
break;
case "alltovars": $divcontent1=f_view_all_tovars(1);
$divcontent=$divcontent1[0]; break;
case "zagalltovarspage": $divcontent=""; break;
case "alltovarspage": $divcontent1=f_view_all_tovars(1);
$divcontent=$divcontent1[1]; break;
// newtovars
case "zagnewtovars": $divcontent=f_zag1("NEW товары");
break;
case "newtovars": $divcontent1=f_view_new_tovars(1);
$divcontent=$divcontent1[0]; break;
case "zagnewtovarspage": $divcontent=""; break;
case "newtovarspage": $divcontent1=f_view_new_tovars(1);
$divcontent=$divcontent1[1]; break;
// tovars АКЦИЯ
case "zagtovarsaction": $divcontent=f_zag1("АКЦИЯ !!!");
break;
case "tovarsaction": $divcontent1=f_view_tovars_action();
$divcontent=$divcontent1; break;
// search
case "zagsearchtovars": $divcontent=f_zag1("Поиск товаров");
break;
case "searchtovars": $divcontent1=f_form_search_tovars();
$divcontent=$divcontent1; break;
// search zakaz
case "zagsearchzakaz": $divcontent=f_zag1("Поиск заказов");
break;
case "searchzakaz": $divcontent=f_form_search_zakaz();
$script="calendar1=new Epoch(‘epoch_popup’, ‘popup’,
document.getElementById(‘datazakaz1′));";
$script.="calendar2=new Epoch(‘epoch_popup’,'popup’, document.getElementById(‘datazakaz2′));";
break;
// viewallzakaz
case "zagallzakaz": $divcontent=f_zag1("Все заказы");
break;
case "allzakaz": $divcontent1=f_view_all_zakaz(1);
$divcontent=$divcontent1[0]; break;
case "zagallzakazpage": $divcontent=""; break;
case "allzakazpage": $divcontent1=f_view_all_zakaz(1);
$divcontent=$divcontent1[1]; break;
// search zakaz_admin
case "zagsearchzakaz_admin": $divcontent=f_zag1("Поиск заказов (админ)");
break;
case "searchzakaz_admin": $divcontent=f_form_search_zakaz_admin();
$script="calendar1=new Epoch(‘epoch_popup’,'popup’, document.getElementById(‘datazakaz1′));";
$script.="calendar2=new Epoch(‘epoch_popup’,'popup’, document.getElementById(‘datazakaz2′));";
break;
// viewallzakaz_admin
case "zagallzakaz_admin": $divcontent=f_zag1("Все заказы");
break;
case "allzakaz_admin": $divcontent1=f_view_all_zakaz_admin(1);
$divcontent=$divcontent1[0]; break;
case "zagallzakazpage_admin": $divcontent=""; break;
case "allzakazpage_admin": $divcontent1=f_view_all_zakaz_admin(1);
$divcontent=$divcontent1[1]; break;
// messages + messages_admin
case "zagviewallmessages": $divcontent=f_zag1("Входящие сообщения");
break;
case "viewallmessages": $divcontent1=f_view_all_messages_in(1);
$divcontent=$divcontent1[0]; break;
case "zagviewallmessagespage": $divcontent=""; break;
case "viewallmessagespage": $divcontent1=f_view_all_messages_in(1);
$divcontent=$divcontent1[1]; break;
case "zagsearchmessage": $divcontent=f_zag1("Поиск сообщения");
break;
case "searchmessage": $divcontent=f_form_search_message_admin();
$script="calendar1=new Epoch(‘epoch_popup’,'popup’, document.getElementById(‘datazakaz1′));";
$script.="calendar2=new Epoch(‘epoch_popup’,'popup’, document.getElementById(‘datazakaz2′));";
break;
// users
case "zagallusers": $divcontent=f_zag1("Все пользователи");
break;
case "allusers": $divcontent1=f_view_all_users(1);
$divcontent=$divcontent1[0]; break;
case "zagalluserspage": $divcontent=""; break;
case "alluserspage": $divcontent1=f_view_all_users(1);
$divcontent=$divcontent1[1]; break;
// search users
case "zagsearchusers": $divcontent=f_zag1("Поиск пользователей");
break;
case "searchusers": $divcontent1=f_form_search_users();
$divcontent=$divcontent1; break;
// contacts
case "zagcontacts": $divcontent=f_zag1("Контакты");
break;
case "contacts": $divcontent1=f_view_contacts();
$divcontent=$divcontent1; break;
// tovarspartners
case "zagtovarspartners": $divcontent=f_zag1("У партнеров");
break;
case "tovarspartners": $divcontent1=f_tovars_partners();
$divcontent=$divcontent1; break;
// stat
case "zagstat1": $divcontent=f_zag1("Статистика");
break;
case "stat1": $divcontent1=f_stat_site1();
$divcontent=$divcontent1;
break;
// info oplata
case "zaginfooplata": $divcontent=f_zag1("Оплата");
break;
case "infooplata": $divcontent1=f_info_oplata();
$divcontent=$divcontent1; break;
}
// вывести результат в соответствующий блок
$objResponse->assign($arraydiv[$i],"innerHTML",$divcontent);
// если есть javascript – отправить на выполнение
if(strlen($script)>0)
$objResponse->script($script);
}
$objResponse->assign("flag_ajax","value",’no’); return $objResponse;
}
?>
Источник: Петин В. А., Сайт на AJAX под ключ. Готовое решение для интернет-магазина. — СПб.: БХВ-Петербург, 2011. — 432 с.: ил. + CD-ROM — (Профессиональное программирование)
Похожие посты:
- Поиск веб-страниц (0)
- Создание блока с закругленными краями (0)
- Создание выпадающего меню исключительно средствами CSS (0)
- Изменение фонового цвета строки при наведении на нее указателя мыши (0)
- Изменение вида элементов формы с помощью CSS (0)
- Управление отображением элемента (0)
- Первая программа на JavaScript (0)