رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
drop down چند مرحله ای ؟؟؟
#1
سلام لطفا راهنمایی کنید چطور میشه دراپ دانی ایجاد کرد که از دیتا بیس اطلاعات رو بگیره و به صورت زیر مجموعه ای نشون بده

مثل این عکس 

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


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;
        }
    }

پاسخ
تشکر شده توسط:
#4
(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
اینو چطور باید از دیتابیس بگیرم؟
پاسخ
تشکر شده توسط:
#5
ممنون از پاسختون 
من دارم از فریم ورک yii ورژن 2 استفاده میکنم و ساختارم MVC هستش.
این کد باید کجا استفاده کنم؟ در model یا کنترلر؟
خروجی کد چطور در index نشون بدم؟
پاسخ
تشکر شده توسط:
#6
خوب شما باید توسط یک تابع بازگشتی تا وقتی که زیرمجموعه ای وجود نداره مطالب رو از دیتابیس بخونید. برای مثال اول همه سطح 0 ها رو بخونید و بعد داخل حلقه foreach برای هر گزینه همه مطالبی که parent اونها با id اون دسته یکی هست رو بخونید و اگه چیزی وجود داشت به آرایه بصورت سطح 2 اضافه کنید و به همین شکل دوباره برای هرکدوم از خونه های سطح 1 و... کار رو تکرار کنید تا وقتی که دیگه هیچ فرزندی وجود نداشته باشه.
پاسخ
تشکر شده توسط:
#7
(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 روزی هست که درگیرشم.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان