הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   פורום עץ "מדורג" (https://hosts.co.il/forums/showthread.php?t=22528)

sUP 25-05-06 22:28

פורום עץ "מדורג"
 
אהלן חברים,
פורום אני יודע לבנות, אבל השאלה שלי היא איך לעשות אותו מדורג,
כלומר: "תגובה לתגובה לתגובה לתגובה.. בלה בלה בלה וכן הלאה.."

הצעות, רמזים, משו? =]

תודה

Pro-HostCoil 25-05-06 22:30

תסביר יותר נכון על מה ת'מדבר..?

sUP 25-05-06 22:32

נו כמו בתפוז, נענע, וואלה שאפשר להגיב לתגובה ולא רק לאשכול..
וזה מציג כזה מדורג יפה

d0rix 25-05-06 22:32

מה הבעיה פשוט לעשות תבניות...

sUP 25-05-06 22:36

ציטוט:

נכתב במקור על ידי MetaCode
מה הבעיה פשוט לעשות תבניות...

חחח זה לא ממש אומר לי הרבה

adiga000 25-05-06 22:38

תעשה ככה במסד שיש 3 טורים מיוחדים לזה
טור 1 בשם
topic
השני
post
השלישי
to

אם זה תגובה לנושא ראשי
אז בtopic יהיה מס' הנושא ובposts יהיה כתוב 0

ואם זה תגובה להודעה אז
בtopic יהיה כתוב 0 וPosts מס' התגובה אליו מגיבים.

ובTO יהיה כתוב לאיזה תגובה זה שייך

אחר כך הקובץ יהיה תנאי
ציטוט:


<?Php
$query = mysql_query("SELECT * FROM topic WHERE id='id' ORDER BY id ASC");
$result=mysql_fetch_array($query);
echo "$result[text]";
$query = mysql_query("SELECT * FROM posts WHERE topic='topicid' ORDER BY id ASC ");
while ($result=mysql_fetch_array($query)) (
if ($result[topic]=="1") {
echo "->$result[subject]"; <Br> $result[text]";
} else {
echo "";
}
if ($result[post]=="1") {
echo "-->post for post : $result[to]";
echo "<br>";
echo "-->$result[subject]"; <Br> $result[text]";
} else {
echo "";
}
}


sUP 25-05-06 22:42

העא? :|

eLad 25-05-06 22:54

השאלה שלך לא מובנת

אתה צריך תכנון מסד? אתה צריך עזרה באלגוריתם? מה בדיוק?

כי לכתוב לך את הקוד במלואו אני לא אעשה את זה

sUP 26-05-06 00:22

אני צריך את ההסבר לאיך לעשות את זה..

miniature 26-05-06 11:31

אתה עושה שליפת נתונים לכל נושא, תגובה, וכדו'.
אבל תמקד את מה שאתה צריך.

eLad 26-05-06 12:12

ציטוט:

נכתב במקור על ידי sUP
אני צריך את ההסבר לאיך לעשות את זה..

יש כל מיני שיטות איך לבנות פורום עץ

ניקח את השיטה הפשוטה (למתחילים), המסד ייראה ככה (רק השדות הרלוונטים):
קוד:

nMessageId | nForumId | nParentId | nLevelId | dDate
nParentId - ה ID של הודעת אב
nLevelId - יחזיק את השרשור (כלומר ייטפל בהזחה)
dDate - תאריך הכתיבה של ההודעה

כל הודעת בן תקבל את ה ID של הודעת האב.
הודעת בן תקבל levelId של 0 והודעות נכד 1, נינים 2 וכך הלאה

במידה ויש יותר מהודעת בן לאותו שרשור נניח, תסדר לפי התאריך (מי שיופיע ראשון זה מי שנכתב קודם)

avii 26-05-06 12:22

הינה מאמר שמסביר איך בומים את זה
http://webmaster.org.il/article.asp?id=146
תהנה

sUP 26-05-06 18:37

אלעד תודה רבה =]

אבי, תודהעל הנסיון אבל זה לא מה שאני מחפש

MasterNir 26-05-06 19:37

אלעד, מה המטרה של ה-LevelId?

sUP 27-05-06 12:49

הדירוג של ההודעה..

MasterNir 27-05-06 14:13

כן, הבנתי, העומק שלה ביחס לעץ... אבל בשביל מה צריך את זה?

sUP 27-05-06 14:45

ציטוט:

נכתב במקור על ידי MasterNir
כן, הבנתי, העומק שלה ביחס לעץ... אבל בשביל מה צריך את זה?

שזה יציג את זה מדורג.. |Rolleyes|

MasterNir 27-05-06 18:05

בשביל מה?
אתה מכניס לכל ענף (הודעה) את ה-ID של הענף שמעליו (ההודעה אליה הוא מגיב) ולהודעות חדשות מכניס NULL.
ואז עושה פונקציה רקורסיבית שמקבלת ID ומדפיסה את הענפים דרגה אחת תחתיו וקורא לה.

eLad 27-05-06 18:12

ציטוט:

נכתב במקור על ידי MasterNir
בשביל מה?
אתה מכניס לכל ענף (הודעה) את ה-ID של הענף שמעליו (ההודעה אליה הוא מגיב) ולהודעות חדשות מכניס NULL.
ואז עושה פונקציה רקורסיבית שמקבלת ID ומדפיסה את הענפים דרגה אחת תחתיו וקורא לה.

ואיך בדיוק אתה מחלק את הרווחים? כלומר, איך אתה יודע כמה לעשות "הזחה"?

אני אתן לך דוגמא קטנה -
בסוגריים מופיע ככה: (ID ההודעה, ID של הודעת האב)

אהלן חבר'ה מה המצב? (56 , 0)
.....הכל טוב אחי, מה איתך? (78 , 56)
.....סבבה גבר (102 , 56)
...........אה יוסי מה קורה לא רואים אותך (105 , 102)
................וואלה הכל טוב.. בא למשחק בשבת? (222 , 105)
.....................מה איזה משחק? (333 , 222)
..........................של מכבי בצ'כונה (355 , 333)
................הופה הנה יוסי תראו (250 , 105)


עכשיו, איך בדיוק אתה מבצע את ההזחה להודעות החלק מההודעה שה ID שלה הוא 105?
אם היית משתמש ב levelID אז היית יכול לבצע משהו כזה:

קוד:

style= "width: 20 * levelID px;"
קאפיש?

MasterNir 28-05-06 10:32

או שכל פעם שאתה יורד בעץ להוסיף אחד... :S

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

sUP 28-05-06 12:00

אז ניר איך ניתן לעשות את זה?

MasterNir 28-05-06 14:53

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

eLad 28-05-06 17:05

ציטוט:

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

אתה לא יעיל כי אתה משתמש ברקורסיה.. יש שיטות אחרות לחלק את העבודה

ותאמין לי ששדה אחד של מספר לא יעלה לך כ"כ הרבה משקל ב DB


כל הזמנים הם GMT +2. הזמן כעת הוא 05:57.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ