خوب... این از صفحه اول...
حالا برویم سراغ صفحه forums
یک پروتکل انتقال داریم به نام GET و روشش این جوری است که در لینک عددی یا متنی همراه لینک ارسال میشه.
خط زیر را ببینید:
PHP:
echo'<a href="forums.php?f='.$forum_id.'">'.$name.'</a>';
در کد بالا لینک داده به صفحه forums.php ولی می بینید بعد لینک علامت سوال گذاشته و مساوی قرار داده و متغیر forum_id را به عنوان f فرستاده به اون صفحه.
حالا چون کد php است کمی شلوغ است ، ترتمیزش این طوری میشه:
در فایل forums.php این خط کد را داریم:
در کد بالا اون عدد که در لینک ارسال شده بود ، در متغیر $f ریخته شده.
پس راهی برای ارتباط صفحه اول سایت من با صفحه نمایش تالارها هست.
کل پروتکل GET همین دو خط بود.
ولی نمی دونم چرا infinityfree این پروتکل را از کار انداخت یکی دو ماه پیش و من مجبور شدم همه پروتکل ها را با روش POST بنویسم. در روش پست در فایل مبدا یک فرم با دکمه داریم ، روش دریافتش را هم که بارها در تمرینات فرم دیدید....
همون کدهایی است که من اسمشون را جواب به فرم گذاشتم.
پس فایل صفحه اول سایت این جوری صحبت می کنه با صفحه تالارها.. البته این یک روش است. و رایج ترین روش است فکر کنم.
حالا برگردیم به فروم دوقلوی من.
الان قسمت بالاده یعنی تالارهای قسمت بالای صفحه اول سایت من درست کار می کنند ،
چون فایل forums.php داره با ۴ جدول با پیشوند f1 کار می کنه ... همون جداول فروم اول ...
ولی باید وقتی پایین ده ، یعنی تالارهای پایین صفحه اول بهش پیام می دهند باید با جداول با پیشوند f2 کار کند.....
راه حل چیست؟
الان در لینک شماره تالار برای فایل forums.php ارسال میشه ولی این فایل باید بدونه از کدوم جدول بخونه ، با پیشوند f1 یا پیشوند f2.خوب یک راهش اینه وقتی صداش می زنیم علاوه بر شماره تالار ، شماره پیشوند را هم بگیم. مثلا این جوری:
h اول کلمه حالت است. یعنی داره به فایل forums.php میگه جداول سری دوم را استفاده کن.
و کدش این میشه:
PHP:
$f=$_GET['f'];
$h=$_GET['h'];
من راه ارتباط صفحه اول با صفجه بعدی را گفنم.
صفحه دوم با توجه به شماره تالار ، میره نگاه می کنه ببینه والد کدوم تالارها و تاپیک ها این شماره است ، اونها را لیست می کند.
یک کوئری select است و یک WHERE ... یعنی وقتی که...
کوئری اش اینه:
SQL:
$sql = "SELECT * FROM forums WHERE parent_id=$f";
$sql = "SELECT * FROM topics WHERE forum_id=$f";
پس در فایل forums.php فرزندان شماره تالار f که با خط
$f=$_GET['f'];
اول صفحه دریافت کردیم . شامل تالارها و تاپیکها با دو کوئری بالا.
چون هر تالار ممکن اسن هم زیرتالار داشته باشه و هم تاپیک.
می مونه اون متغیر $h که مشخص می کنه کدوم فروم است f1 یا f2
خب یک if می نویسیم میگیم اگر h یک بود فلان کوئری را اجرا کن و اگر h دو بود فلان کوئری را اجرا کن.
فقط کوئری صفحه forums.php برای دو فروم دوقلو فرق داره. کدش:
PHP:
if ( $h==1)
$sql = "SELECT * FROM f1_forums WHERE parent_id=$f";
if ($h==2)
$sql = "SELECT * FROM f2_forums WHERE parent_id=$f";
پس فقط کوئری های فایل forums.php برای دو حالا h فرق داره. چون برای تالارها ی کوئری داره و برای تاپیک ها یک کوئری گفتم کوئری ها.
پس باید برویم داخل تابع my_index و طرز صدا زدن ها را دو جور کنیم.