Логика вызова программ при выборе пункта меню

Опубликовал: Суббота, Ноябрь 17, 2012 в категории AJAX, PHP | Пока нет комментариев

Для каждого типа пользователей определен свой набор пунктов главного меню. Посмотрим, как реализована логика выбора программ для каждого пункта главного меню. При авторизации пользователя на сайте в переменных 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 — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>