almas1
دوشنبه 17 فروردین 1394, 05:24 صبح
سلام دوستان
menus table:
menuid
menu_parent_id
menu_iscollection
menu_posi
menu_title
menu_link
menu_ordering
settings table:
setid
settings_menus table (table map with two fields):
setid
menuid
بر طبق مقدار متغیر $setid از جدول ستینگ، کوئری برای گرفتن آی دی منوهایی که متعلق به این ستینگ هستند رو از جدول نقشه انجام میدم.
$SettingsCurrentID = $row['setid'];
/* query for get maps menus for current settings by SettingsCurrentID */
$sql = "SELECT setid,menuid FROM settings_menus WHERE setid = ?";
$stmt = $conn->prepare($sql);
if (!$stmt) {
throw new Exception (implode(' ',$conn->errorInfo()),0);
}
function maps_settings_menus($stmt,$mom){
global $conn;
$res = $stmt->execute(array($mom));
if(!$res) {
throw new Exception( implode(' ',$stmt->errorInfo()),1);
}
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
$nextMom = $row['menuid'];
echo $mom.'->'.$nextMom.'<br />';
}
}
maps_settings_menus($stmt,$SettingsCurrentID);
حالا آی دی منوها رو دارم، البته باید به صورت آرایه درشون بیارم
حالا مجموعه منوها باید بر اساس والد و فرزند از دیتابیس واکشی بشن
Recursive menu:
$menuHtml='';
function createMenu($parentId,$menuposi){
global $menuHtml;
global $nextMom;
global $conn;
$query = $conn->prepare('SELECT * FROM menus WHERE menu_parent_id = ? AND menu_posi = ?');
$query->bindParam(1, $parentId, PDO::PARAM_INT);
$query->bindParam(2, $menuposi, PDO::PARAM_STR);
$query->execute();
#$result = $query->fetch(PDO::FETCH_OBJ);
$rowCount = $query->rowCount();
if ($rowCount == 0) return;
if ($parentId == 0)
$menuHtml.="<ul id=\"menu\">\r\n";
else
$menuHtml.='<ul>';
while($row = $query->fetch(PDO::FETCH_OBJ))
{
$menuHtml.='<li><a href="'.$row->menuid.'">'.$row->menu_title.'</a>';
createMenu($row->menuid);
$menuHtml.='</li>';
}
$menuHtml.='</ul>';
return $menuHtml;
}
اما نمیدونم چطور این دو مرحله رو با هم ترکیب کنم
1) گرفتن منوهای تنظیم جاری
2) پرینت مجموعه منوها در موقعیتهای مختلف بر حسب ترتیبشون
با تشکر
menus table:
menuid
menu_parent_id
menu_iscollection
menu_posi
menu_title
menu_link
menu_ordering
settings table:
setid
settings_menus table (table map with two fields):
setid
menuid
بر طبق مقدار متغیر $setid از جدول ستینگ، کوئری برای گرفتن آی دی منوهایی که متعلق به این ستینگ هستند رو از جدول نقشه انجام میدم.
$SettingsCurrentID = $row['setid'];
/* query for get maps menus for current settings by SettingsCurrentID */
$sql = "SELECT setid,menuid FROM settings_menus WHERE setid = ?";
$stmt = $conn->prepare($sql);
if (!$stmt) {
throw new Exception (implode(' ',$conn->errorInfo()),0);
}
function maps_settings_menus($stmt,$mom){
global $conn;
$res = $stmt->execute(array($mom));
if(!$res) {
throw new Exception( implode(' ',$stmt->errorInfo()),1);
}
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
$nextMom = $row['menuid'];
echo $mom.'->'.$nextMom.'<br />';
}
}
maps_settings_menus($stmt,$SettingsCurrentID);
حالا آی دی منوها رو دارم، البته باید به صورت آرایه درشون بیارم
حالا مجموعه منوها باید بر اساس والد و فرزند از دیتابیس واکشی بشن
Recursive menu:
$menuHtml='';
function createMenu($parentId,$menuposi){
global $menuHtml;
global $nextMom;
global $conn;
$query = $conn->prepare('SELECT * FROM menus WHERE menu_parent_id = ? AND menu_posi = ?');
$query->bindParam(1, $parentId, PDO::PARAM_INT);
$query->bindParam(2, $menuposi, PDO::PARAM_STR);
$query->execute();
#$result = $query->fetch(PDO::FETCH_OBJ);
$rowCount = $query->rowCount();
if ($rowCount == 0) return;
if ($parentId == 0)
$menuHtml.="<ul id=\"menu\">\r\n";
else
$menuHtml.='<ul>';
while($row = $query->fetch(PDO::FETCH_OBJ))
{
$menuHtml.='<li><a href="'.$row->menuid.'">'.$row->menu_title.'</a>';
createMenu($row->menuid);
$menuHtml.='</li>';
}
$menuHtml.='</ul>';
return $menuHtml;
}
اما نمیدونم چطور این دو مرحله رو با هم ترکیب کنم
1) گرفتن منوهای تنظیم جاری
2) پرینت مجموعه منوها در موقعیتهای مختلف بر حسب ترتیبشون
با تشکر