PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ساخت یک صفحه مانند انجمن ها



Sp|R|T
September 16th, 2012, 05:55
سلام

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

اسم تیبل ها : talar و sub_talar

خب تا الان من با یک foreach اومدم توی صفحه php ایم، تالار ها رو بنمایش در آوُردم که تا اینجا هیج مشکلی ندارم

و حالا من میخوام زیر مجموعه هایی واسه تالار هام بسازم، یعنی اینکه مثلآ تالار موبایل، چندتا زیر مجموعه بنام nokia , sony و ... داشته باشه

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

ممنون میشم در این مورد راهنماییم کنید.

sir-mammad
September 22nd, 2012, 00:06
چقدر کلی سوال پرسیدید شما !
من متوجه نشدم ، کاملتر توضیح بدید راحت تر به پاسخ می رسید
اما در کل بابت چیزی که استنباط کردم ، یه فیلد در sub_talar بسازید و در اون شناسه talar مربوط به هر کدوم رو قرار بدید
در حلقه for شناسه های اون تالار رو از ساب_تالار فراخوانی کنید

Sp|R|T
September 26th, 2012, 13:03
چقدر کلی سوال پرسیدید شما !
من متوجه نشدم ، کاملتر توضیح بدید راحت تر به پاسخ می رسید
اما در کل بابت چیزی که استنباط کردم ، یه فیلد در sub_talar بسازید و در اون شناسه talar مربوط به هر کدوم رو قرار بدید
در حلقه for شناسه های اون تالار رو از ساب_تالار فراخوانی کنید

ممنون داداش بابت پاسخگویتون

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

1- talar
2- sub_talar

فیلداش هم :

مال talar:
id, talarname, talardes

مال sub_talar:
id, subname, subdec, talar_id

خب الان من اومدم تمامی تالار که داخل دیتالیس هسش (تیبل talar) رو با یک foreche توی صفحم به نمایش در آوردم...

حالا من میخوام نام هایی که داخل تیبل sub_talar با مقدار talar_id تیبل talar هسش رو بنمایش در بیارم

یعنی هر ساب تالار در زیر تالار خودش نمایش بده

ممنون میشم راهنماییم کنید

parsspace
September 26th, 2012, 14:07
این چیزی که میخوای رو بر اساس تعداد بازدید ها و تعداد تالار ها و تعداد زیر تالار ها به چند صورت میتوان پیاده سازی کرد ولی حالت نورمالش رو من برات به صورت شبه کد پیاده سازی میکنم از روش چیزی که میخوای رو طراحی کن.




$subforums = array();
$result = query('SELECT * FROM SUBFORUMS');
while($Row = mysql_fetch($result))
$subforums[$result['talar_id']][] = $result;

$result = query('SELECT * FROM FORUMS');
while($Row = mysql_fetch($result))
{
echo $Row['talarname'];
if(isset($subforums[$Row['id']]))
foreach($subforums[$Row['id']] as $sub)
echo $sub['subname'] . '<br />' . $sub['subdec'];
}


اینطوری میتونی با ۲ تا کوئری لیست انجمن ها و زیر انجمن هاتو نشون بدی منتها اگه تعداد خیلی زیاد باشه تکنیک دیگه ای داره که خیلی پیچیده تره و البته اگه خواستی میتونم راهنماییت کنم

Sp|R|T
September 26th, 2012, 18:22
این چیزی که میخوای رو بر اساس تعداد بازدید ها و تعداد تالار ها و تعداد زیر تالار ها به چند صورت میتوان پیاده سازی کرد ولی حالت نورمالش رو من برات به صورت شبه کد پیاده سازی میکنم از روش چیزی که میخوای رو طراحی کن.




$subforums = array();
$result = query('SELECT * FROM SUBFORUMS');
while($Row = mysql_fetch($result))
$subforums[$result['talar_id']][] = $result;

$result = query('SELECT * FROM FORUMS');
while($Row = mysql_fetch($result))
{
echo $Row['talarname'];
if(isset($subforums[$Row['id']]))
foreach($subforums[$Row['id']] as $sub)
echo $sub['subname'] . '<br />' . $sub['subdec'];
}


اینطوری میتونی با ۲ تا کوئری لیست انجمن ها و زیر انجمن هاتو نشون بدی منتها اگه تعداد خیلی زیاد باشه تکنیک دیگه ای داره که خیلی پیچیده تره و البته اگه خواستی میتونم راهنماییت کنم


ممنون داداش

من کدی که دادین رو جایگزین کردم، ولی فقط تالار هارو نشون میده و زیرتالار ها رو نشون نمیده

یعنی این کد بی تاثیر بود:


if(isset($subforums[$Row['id']]))
foreach($subforums[$Row['id']] as $sub)
echo $sub['subname'] . '<br />' . $sub['subdec'];


و ارروزی هم ندارم (display_error فعال هستش)

parsspace
September 26th, 2012, 20:38
ye print_f begir bebin ok e?
print_f($subforums);

Sp|R|T
October 20th, 2012, 14:35
ممنون دوستان
من الان یه اسکریپت simple forum ایی رو پیدا کردم و خیلی ساده هم هسش و درک کدهایی که درونش قرار داده واسم راحته

فقط اون قسمتی که کوئری گرفته که ساب فروم ها اضافه شده رو ندونستم چی به چیه...

سکریپت بدون هیچ مشکلی کار میکنه، فقط یه توضیح در مورد کوئری زیر میخوام

ممنون میشم کمکم کنید :)


<?php
$dn1 = mysql_query('select c.id, c.name, c.description, c.position, (select count(t.id) from talar_topics as t where t.parent=c.id and t.id2=1) as topics, (select count(t2.id) from talar_topics as t2 where t2.parent=c.id and t2.id2!=1) as replies from talar_categories as c group by c.id order by c.position asc');
$nb_cats = mysql_num_rows($dn1);
while($dnn1 = mysql_fetch_array($dn1))
{
?>
<tr>
<td class="forum_cat"><a rel="nofollow" href="list_topics.php?parent=<?php echo $dnn1['id']; ?>" class="title"><?php echo htmlentities($dnn1['name'], ENT_QUOTES, 'UTF-8'); ?></a>
<div class="description"><?php echo $dnn1['description']; ?></div></td>
<td><?php echo $dnn1['topics']; ?></td>
<td><?php echo $dnn1['replies']; ?></td>
<?php
if(isset($_SESSION['username']) and $_SESSION['username']==$admin)
{
?>
<td><a rel="nofollow" href="delete_category.php?id=<?php echo $dnn1['id']; ?>"><img src="<?php echo $design; ?>/images/delete.png" alt="Delete" /></a>
<?php if($dnn1['position']>1){ ?><a rel="nofollow" href="move_category.php?action=up&amp;id=<?php echo $dnn1['id']; ?>"><img src="<?php echo $design; ?>/images/up.png" alt="Move Up" /></a><?php } ?>
<?php if($dnn1['position']<$nb_cats){ ?><a rel="nofollow" href="move_category.php?action=down&amp;id=<?php echo $dnn1['id']; ?>"><img src="<?php echo $design; ?>/images/down.png" alt="Move Down" /></a><?php } ?>
<a rel="nofollow" href="edit_category.php?id=<?php echo $dnn1['id']; ?>"><img src="<?php echo $design; ?>/images/edit.png" alt="Edit" /></a></td>
<?php
}
?>
</tr>
<?php
}
?>

فقط از یک کوئری اومده کلی رکورد بیرون کشیده که این کار درکش خیلی واسم سخت شده..

راسی در مورد این که گفته مثلآ c.id ، این c یعنی چی ؟
as توی mysql به چه درد میخوره ؟ (یعنی اومده به اصطلاح foreche کرده ؟)

و در آخر، میشه این کوئری که قرار داده رو بازش کرد و تبدیل به چند کوئری کنیم ؟ (واسه درک بهتر کد)

اگه امکانش هس، چطور ؟

Sp|R|T
October 23rd, 2012, 04:46
دوستان کسی نیست یک توضیح مختصری در مورد اینجور کوئری ها بده ؟ :(


$dn2 = mysql_query('select t.id2, t.authorid, t.message, t.timestamp, u.username as author, u.avatar from talar_topics as t, users as u where t.id="'.$id.'" and u.id=t.authorid order by t.timestamp asc');



چرا قبل فیلدا بعضی u و بعضی t گذاشته ؟

کلآ میخوام بدونم این کوئری چطور اجرا میشه

اومیدوارم که بی جواب نمونه...