View Full Version : طراحی دسته بندی محتوا
  
wallfa
جمعه 28 بهمن 1390, 01:41 صبح
دوستان میخواهم این برام تحلیل کنید حالا به هر صورت هر کسی هر جوری میتونه تحلیل کنه اشتباهات شما هم پذیراییم ! 
خوب به این نحوه
-- پدر بزرگ 
--- پدر 
----فرزند
-----الی آخر
هر کدوم زیر گروه اون یکی و باید موقع نمایش همینطور نشون داده بشه گفته باشم باید تا هر چند تا دلت میخواهد بتونه اینطوری دسته ها رو زیر مجموع کنه ! 
ببینم چغدر قدرت تحلیل دارید :متفکر:
buggen
جمعه 28 بهمن 1390, 06:22 صبح
اگه منظورتون رو درست فهمیده باشم
به صورت  recursive میشه یعتی توی طراحی دیتابیس یه فیلد از خود table به خودش باشه
مثلا tbl_category 
فیلد های id , name ,fk_category_id رو خواهد داشت
و اون foreign key به خود tbl_category وصل هست
فقط یکی از دوستانم می گفت این روش رو نمیشه رو mysql پیاده کرد ولی دلیل و صحت حرفش رو نمی دونم ولی خودم توی oracle و با جاوا پیاده سازی کردم
امیدوارم تونسته باشم کمکی کنم و درست فهمیده باشم مساله رو
MMSHFE
جمعه 28 بهمن 1390, 11:03 صبح
با PHP و MySQL هم میشه. کافیه یک جدول با فیلدهای id و name و parent ایجاد کنید و بعد، از کد زیر استفاده کنید:
function display($parent = 0, $level = 0) {
    $parent = is_numeric($parent) ? (int) $parent : 0;
    $level = is_numeric($level) ? (int) $level : 0;
    mysql_connect('localhost', 'root', '') or die('Connection error');
    mysql_select_db('dbname') or die('Database error');
    mysql_query('SET NAMES \'utf8\'');
    $parent = mysql_real_escape_string($parent);
    $items = mysql_query("SELECT * FROM `table` WHERE (`parent`='{$parent}') ORDER BY `id`");
    if($items && mysql_num_rows($items) > 0) {
        while($item = mysql_fetch_assoc($items)) {
            for($i = 0; $i < $level; $i++) {
                echo ' &nsbp;  ';
            }
            echo '<p>'.$item['text'].'</p>'.PHP_EOL;
            $count = mysql_result(mysql_query("SELECT COUNT(*) AS `count` FROM `table` WHERE (`parent`='{$item['id']}')"), 0, 0);
            if($count > 0) {
                display($item['id'], $level + 1);
            }
        }
        mysql_free_result($items);
    }
}
// Usage:
display();
موفق باشید.
wallfa
دوشنبه 01 اسفند 1390, 13:47 عصر
ممنون مهندس ، فقط فیلد نام باید نام دسته بندی بذارم یا شناسه ؟
MMSHFE
دوشنبه 01 اسفند 1390, 16:16 عصر
نام دسته بندی رو باید بگذارین. توی فیلد parent هم id والد رو میگذارین که برای ریشه میشه 0
موفق باشید.
wallfa
دوشنبه 28 فروردین 1391, 17:30 عصر
ممنون مهندس ولی این الان این ساختار چطور ایجاد میکنه : 
من امتحان کردم نفهمیدم ! 
  <ul>
  
    <li><a>دختر</a></li>
    
    <li>
    
      <a>پسر</a>
      <ul>
        <li>حسن </li>
        <li>رضا</li>
      </ul>
      
    </li>
    
  </ul>
MMSHFE
دوشنبه 28 فروردین 1391, 17:43 عصر
function display($parent = 0) {
    $parent = is_numeric($parent) ? (int) $parent : 0;
    mysql_connect('localhost', 'root', '') or die('Connection error');
    mysql_select_db('dbname') or die('Database error');
    mysql_query('SET NAMES \'utf8\'');
    $parent = mysql_real_escape_string($parent);
    $items = mysql_query("SELECT * FROM `table` WHERE (`parent`='{$parent}') ORDER BY `id`");
    if($items && mysql_num_rows($items) > 0) {
        echo '<ul>'.PHP_EOL;
        while($item = mysql_fetch_assoc($items)) {
            $count = mysql_result(mysql_query("SELECT COUNT(*) AS `count` FROM `table` WHERE (`parent`='{$item['id']}')"), 0, 0);
            if($count > 0) {
                echo '<li>'.PHP_EOL;
                echo '<a>'.$item['text'].'</a>'.PHP_EOL;
                display($item['id']);
                echo '</li>';
            }
            else {
                echo '<li><a>'.$item['text'].'</a></li>'.PHP_EOL;
            }
        }
        echo '</ul>'.PHP_EOL;
        mysql_free_result($items);
    }
}
 
// Usage:
display();
شرمنده فرصت نکردم تست کنم ولی ظاهراً باید درست کار کنه. موفق باشید.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.