php / יצירת דיון רב ממדי עם PHP ו-MYSQL / הנושאים העיקריים

הנושאים העיקריים



המשתמש יתחיל את השיטוט באתר במבט על רשימת הנושאים העיקריים. אלו שלא קשורים לאף נושא אחר שבא לפניהם. כאשר נושא מסומן, הקורא יוכל לראות את כותרות כל ההודעות שהוצבו כתגובה לנושא המקורי, ההודעות שמגיבות להודעות האלו, וכן הלאה. הכותרת של כל נושא תשמש כקישור לתוכנו המלא.

הצץ בדוגמא אם הדבר לא ברור

המשתמש ישתמש דבר ראשון ב- display_topic.phtml
כדי לעזור למשתמש לזכור את שורת הכתובת המדויקת, אילצתי את קובץ האינדקס של הספרייה להכיל את הקובץ הזה. מכיוון שהמשתמש רק נכנס לאתר, שום נושא לא יהיה ברור מראש.

הנה החלקים החשובים מהקובץ:


<?

if (empty($topic_id (( {$topic_id = 0;}

DisplayTopic($topic_id);

?>


למרות שתכנתנו את פונקצית DisplayTopic להציב את הערך 0 כברירת מחדל של הטיעון topic_id, עדיין מומלץ שנבדוק שהעסק אכן עובד, אחרת תופק הודעת שגיאה ברגע שנקרא לפונקציה.

כאשר הפונקציה נקראת עם ערך של 0, היא תגרום להצגת רשימת הנושאים העיקריים. הנה השאילתה שעושה את זה:

select distinct t.topic_id, t.parent_id, t.root_id, t.name,
t.description , t.author, t.author_host, t.create_dt, t.modify_dt

from px_topics t, px_topics r

where t.topic_id = r.root_id


אני מקווה ששמתם לב שיש לנו רק טבלה אחת, ובכל זאת אנו מבצעים צירוף.
בשורת ה-From יצרתי שני חלקים מאותה טבלה, וקראתי להם T ו- R. בשורת ה-Where אני מצרף את שתי הטבלאות כדי שהנושא והשורש יהיו שווים, כך אני מבטיח שהרשימה שתתקבל תכלול רק את הנושאים העיקריים. קצת מעוות, אבל בעצם פשוט מאוד.

הפונקציה ממשיכה ויוצרת HTML שיראה בערך ככה:

<a href="display_topic.phtml?topic_id=1">my first topic</a><br>
<a href="display_topic.phtml?topic_id=7">my second topic</a><br>
<a href="display_topic.phtml?topic_id=15">my third topic</a><br>
<a href="display_topic.phtml?topic_id=17">my fourth topic</a><br>
<a href="display_topic.phtml?topic_id=21">What should we have for lunch?</a><br>
<a href="display_topic.phtml?topic_id=18">Let's get out of here.</a><br>


המציאות לא הולכת להיות זהה למה שיצרנו כאן, אבל בואו נניח שכרגע זה מה שיש לנו במסד הנתונים.



עמוד הבא: פרטי הנושאים >>




גרום ל-PHP לעבוד

מעבר זריז על הקוד/b>

הנושאים העיקריים >

פרטי הנושאים

התשובה