PDA

View Full Version : طراحی دسته بندی محتوا



wallfa
جمعه 28 بهمن 1390, 00:41 صبح
دوستان میخواهم این برام تحلیل کنید حالا به هر صورت هر کسی هر جوری میتونه تحلیل کنه اشتباهات شما هم پذیراییم !

خوب به این نحوه
-- پدر بزرگ
--- پدر
----فرزند
-----الی آخر

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

ببینم چغدر قدرت تحلیل دارید :متفکر:

buggen
جمعه 28 بهمن 1390, 05:22 صبح
اگه منظورتون رو درست فهمیده باشم
به صورت recursive میشه یعتی توی طراحی دیتابیس یه فیلد از خود table به خودش باشه
مثلا tbl_category
فیلد های id , name ,fk_category_id رو خواهد داشت
و اون foreign key به خود tbl_category وصل هست

فقط یکی از دوستانم می گفت این روش رو نمیشه رو mysql پیاده کرد ولی دلیل و صحت حرفش رو نمی دونم ولی خودم توی oracle و با جاوا پیاده سازی کردم

امیدوارم تونسته باشم کمکی کنم و درست فهمیده باشم مساله رو

MMSHFE
جمعه 28 بهمن 1390, 10: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 '&nbsp;&nsbp;&nbsp;&nbsp;';
}
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, 12:47 عصر
ممنون مهندس ، فقط فیلد نام باید نام دسته بندی بذارم یا شناسه ؟

MMSHFE
دوشنبه 01 اسفند 1390, 15:16 عصر
نام دسته بندی رو باید بگذارین. توی فیلد parent هم id والد رو میگذارین که برای ریشه میشه 0
موفق باشید.

wallfa
دوشنبه 28 فروردین 1391, 16:30 عصر
ممنون مهندس ولی این الان این ساختار چطور ایجاد میکنه :
من امتحان کردم نفهمیدم !



<ul>

<li><a>دختر</a></li>

<li>

<a>پسر</a>
<ul>
<li>حسن </li>
<li>رضا</li>
</ul>

</li>

</ul>

MMSHFE
دوشنبه 28 فروردین 1391, 16: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();

شرمنده فرصت نکردم تست کنم ولی ظاهراً باید درست کار کنه. موفق باشید.