تالار گفتمان nCIS.ir

نسخه‌ی کامل: drop down چند مرحله ای ؟؟؟
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام لطفا راهنمایی کنید چطور میشه دراپ دانی ایجاد کرد که از دیتا بیس اطلاعات رو بگیره و به صورت زیر مجموعه ای نشون بده

مثل این عکس 

[عکس: 6xyk9y.png]
خوب شما دارین از افرونه ها استفاده میکنید. خودش یه مثال داده. شما هم به همون ترتیب از دیتابیس بخونید و نمایش بدین. مشکل کجاست دقیقاً ؟
ببین به کارت میاد


public function display_children($table,$controller,$parentId=0, $level=0) {
    $result = $this->db->prepare("SELECT * FROM $table WHERE (`parent_id`='{$parentId}' AND `language`= '$this->lang') ORDER BY `id`");
    $result->execute();
    $menu= "";
    $menu .="<ul class="dropdown-menu">";
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        if (count($row) > 0) {
            $menu .="<li class="dropdown-submenu"><a href="{$this->config->baseUrl}{$this->lang}/$controller/category/id/{$row['id']}"><span>&#x25CF;</span>&nbsp;" . $row['title'] . "</a>";
            $menu .= $this->display_children($table,$controller,$row['id'], $level + 1);
            $menu .="</li>";
        } elseif (count($row) ==0) {
            $menu .="<li ><a href="{$this->config->baseUrl}{$this->lang}/$controller/category/id/{$row['id']}"><span>&#x25CF;</span>&nbsp;" . $row['title'] . "</a></li>";
        } else;
    }
        $menu .="</ul>";
        if(!empty($menu)){
            return $menu;
        }
    }

(27-10-1394، 07:45 ب.ظ)ADMIN نوشته: [ -> ]خوب شما دارین از افرونه ها استفاده میکنید. خودش یه مثال داده. شما هم به همون ترتیب از دیتابیس بخونید و نمایش بدین. مشکل کجاست دقیقاً ؟

مشکلم اینه چطور از دیتا بیس بخونه؟؟؟
چطور زیر مجموعه هارو میشه از دیتا بیس گرفت 
از arrayhelper استفاده میکنم همشو نشون میده
id شو محدود میکنم فقط یک لول نشون میده
مثال :
یه جدول داریم مثلا        وسایل نقلیه (parent)

                                   سواری(child 1)--------->سدان(child 2)&&کوپه(child 2)

                                   موتور سیکلت(child 1)---------->کراس(child 2)&&کیپس(child 2)

                                   دوچرخه(child 1)-------->کوهستان(child 2)&&کورسی(child 2)
                                                                            |
                                                                            |___>معمولی(child 3)&&حرفه ای(child 3)
البته چنتا parentداره هر کدوم چنتا child
اینو چطور باید از دیتابیس بگیرم؟
ممنون از پاسختون 
من دارم از فریم ورک yii ورژن 2 استفاده میکنم و ساختارم MVC هستش.
این کد باید کجا استفاده کنم؟ در model یا کنترلر؟
خروجی کد چطور در index نشون بدم؟
خوب شما باید توسط یک تابع بازگشتی تا وقتی که زیرمجموعه ای وجود نداره مطالب رو از دیتابیس بخونید. برای مثال اول همه سطح 0 ها رو بخونید و بعد داخل حلقه foreach برای هر گزینه همه مطالبی که parent اونها با id اون دسته یکی هست رو بخونید و اگه چیزی وجود داشت به آرایه بصورت سطح 2 اضافه کنید و به همین شکل دوباره برای هرکدوم از خونه های سطح 1 و... کار رو تکرار کنید تا وقتی که دیگه هیچ فرزندی وجود نداشته باشه.
(29-10-1394، 10:59 ق.ظ)ADMIN نوشته: [ -> ]خوب شما باید توسط یک تابع بازگشتی تا وقتی که زیرمجموعه ای وجود نداره مطالب رو از دیتابیس بخونید. برای مثال اول همه سطح 0 ها رو بخونید و بعد داخل حلقه foreach برای هر گزینه همه مطالبی که parent اونها با id اون دسته یکی هست رو بخونید و اگه چیزی وجود داشت به آرایه بصورت سطح 2 اضافه کنید و به همین شکل دوباره برای هرکدوم از خونه های سطح 1 و... کار رو تکرار کنید تا وقتی که دیگه هیچ فرزندی وجود نداشته باشه.

این کدو تو model استفاده میکنم 
public static function getMenu()
   {
       $role_id = 0;
       $result = static::getMenuRecrusive($role_id);
       return $result;
   }

   private static function getMenuRecrusive($parent)
   {

       $items = self::find()
           ->where(['parent_id' => $parent])
           ->orderBy('id')
           ->all();

       $result = [];

       foreach ($items as $item) {
           $result[] = [
               'label' => $item['persian_name'],
               'items' => static::getMenuRecrusive($item['id']),

           ];
       }
       return $result;
   }
ودر view از 
$form->field($model,category)->dropdownlist(category::getmenu();) 
برای نمایش query استفاده میکنم ولی جواب درستی نشون نمیده
ممنون میشم یه نمونه کد بدید که بشه از روش فهمید باید چیکار کنم الان 2,3 روزی هست که درگیرشم.