PDA

View Full Version : سوال: روش ساخت منو و زیر منو تودرتو



<body>
شنبه 27 تیر 1388, 20:02 عصر
سلام و تشکر از تمامی دوستان

دوستان عزیز متاسفانه بعد از یک سری جستجو آخرش به نتیجه نرسیدم
من میخواهم یک سری منو هایی ایجاد کنم که محدودیت در زیر شاخه های آنها نداشته باشم
در جستجو ها به مطالب انگلیسی برخوردم که نتونستم نتیجه ای بگیرم

ممنون میشم اگه آموزش کامل و یا نمونه کدی برای راهنمایی قرار بدهید


با تشکر فراوان:خجالت:

soheil.moradi
شنبه 27 تیر 1388, 20:40 عصر
کافیه اطلاعاتت را از بانک اطلاعات بگیری. بعد یک فانکشن بنویسی، ابتدای فانکشن یه شرط بگذاری که دوباره از بانک اطلاعات کسب اطلاعات می کنه که آیا رکورد دیگری با parent id منوی فعلی وجود داره، یه متغیر تعریف می کنی که اجازه بده دوباره یه کاری را انجام بده.
بعد از اینکه منوی فعلی را چاپ کردی، دوباره شرط می گذاری که اگر اون شرط اولی در ابتدای فانکشن مقدارش مساوی این بود که منوی فعلی، زیر منو داره، دوباره همین فانکشن را داخل فانکشن فعلی اجرا کن.

<body>
شنبه 27 تیر 1388, 21:01 عصر
آقا ممنون ولی میتونید یه نمه مبتدی تر توضیح دهید من به استادی شما نیستم شرمنده :متفکر:

soheil.moradi
یک شنبه 28 تیر 1388, 20:08 عصر
برای نمونه کد زیر را تست کن، البته شما نیاز به یک Table در دیتابیس داری
من فقط فانکشن این کد را برات مینویسم:

function MenuListing($menu_id=0, $step=-1){
$cehck_has_kids_query = mysql_query("SELECT * FROM `menu` WHERE `parent_id`=".$menu_id." ORDER BY `sort`");
if(mysql_num_rows($cehck_has_kids_query))
$hasKids = true;
else
$hasKids = false;
$spaces = '';
for($i=0; $i<$step; $i++) $spaces.='--- ';
if($menu_id){
$menu = mysql_fetch_assoc(mysql_query("SELECT * FROM `menu` WHERE `id`=".$menu_id));
echo $spaces.$menu['title'].'<br />';
}
if($hasKids){
while($kids = mysql_fetch_assoc($check_has_kids_query)){
MenuListing($kids['id'], $step+1);
}
}
}دوست عزیز توجه داشته باشید که این SQL Query را هم باید داخل یک دیتابیس وارد کنید و متصل بشید به این دیتابیس که سازندۀ یک Table هست که اطلاعات منوها را داخل این Table می ریزه:

CREATE TABLE `menu` (
`id` bigint(5) unsigned NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`parent_id` bigint(5) NOT NULL default '0',
`sort` bigint(5) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Dumping data for table `menu`
--

INSERT INTO `menu` VALUES (1, 'Menu 1', 0, 1);
INSERT INTO `menu` VALUES (2, 'Menu 2', 1, 1);
INSERT INTO `menu` VALUES (3, 'Menu 3', 2, 1);
INSERT INTO `menu` VALUES (4, 'Menu 4', 3, 1);
INSERT INTO `menu` VALUES (5, 'Menu 5', 4, 1);