הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 08-05-09, 22:36   # 1
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

עזרה בבנייה של תבנית עץ

אהלן, אני מנסה לבנות סוג של תבנית עץ, אבל חסר לי איזה משהו שאני לא מצליח להגיע אליו.
אני בעצם רוצה שהוא יציג קטגוריות ותת-קטגוריות. (קחו לדוגמא את פורום תפוז) הקוד הבא מציג תת-קטגוריה אבל ברגע שלאותה תת-קטגוריה יש גם תת-קטגוריה, אז משהו משתבש.
חשבתי אולי לעבוד עם אובייקט רשימות אבל אם כבר זה יהיה המוצא האחרון שלי.
להלן חלק מהקוד:
קוד:
while($value = mysql_fetch_assoc($rs)) :
		if($value['msg_Parent'] == 0):
			// Do Something
			foreach($sub_msgs_res as $rows)
			{
				if($rows['msg_Parent'] == $value['msg_id'])
				{
					// Do Something
				}
			}
			
		endif;
	endwhile;

Last edited by Shillo; 08-05-09 at 22:40..
  Reply With Quote
ישן 08-05-09, 22:58   # 2
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

הטבלה שלך במסד צריכה להראות ככה
id | cat_id | name

כאשר ID = הID של ההודעה הנוכחית
CAT_ID = הID של התגובה אליה התגובה הזו משוייכת
במידה וזוהי תגובה שלא מגיבה לתגובה אחרת (במילים פשוטות - אשכול) אז תניח בשדה זה 0
NAME וכולו' = דברים נוספים על התגובה הנוכחית

והקוד שלך אמור להיות משהו כזה:
PHP קוד:
function fetch_comments($commentid=-1$l=1)
{
    static 
$b "";
    
    if (
$commentid == -1)
    {
        
$a mysql_query("SELECT `id` FROM `comments` WHERE `comment_id` = 0 LIMIT 1");
        
$a mysql_fetch_assoc($a);
        
$commentid $a['id'];
    }
    
    
$t mysql_query("SELECT * FROM `comments` WHERE `comment_id` = {$commentid}");
    while (
$tt mysql_fetch_assoc($t))
    {
        
$b .= style_comment($tt$l+1);
        
fetch_comments($tt['id'], $l+1);
    }
    
    return 
$b;
}

echo 
fetch_comments(); 
כאשר הפונקציה style_comment() מקבל מערך של מידע על התגובה, והפרמטר השני הוא "עומק" התגובה - לפי זה אתה עושה PADDING מימין כדי להראות את העץ

אתה מוזמן פעם הבאה לחפש כאן בפורום כי אני בטוח שכבר עניתי למישהו בעבר
__________________
  Reply With Quote
ישן 08-05-09, 23:26   # 3
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

תודה, אבל לא הבנתי בדיוק את המימוש שלה.
  Reply With Quote
ישן 09-05-09, 00:22   # 4
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

מימוש של מה?
__________________
  Reply With Quote
ישן 09-05-09, 10:05   # 5
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

ציטוט:
נכתב במקור על ידי nitsanbn צפה בהודעה
מימוש של מה?
מימוש של הפעולה שכתבת fetch_comments
  Reply With Quote
ישן 09-05-09, 03:14   # 6
daMn
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
גיל: 34
הודעות: 2,050

daMn לא מחובר  

אתה צריך לעבוד עם parent בצורה רקורסיבית, אתה שולף את הרמה הראשונה לצורך העניין 0 ואז בצורה רקורסיבית נכנס עד לתת קטגוריה האחרונה.
__________________
"חינוך למדעי המחשב לא יכול להפוך אף אחד למתכנת מומחה יותר מאשר לימוד על מברשות וצבעים יכול להפוך מישהו לצייר מיומן."
(אריק ס. ריימונד)
  Reply With Quote
ישן 09-05-09, 10:34   # 7
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

יש לי טעות קטנה שעכשיו הבנחתי בה

הקוד התקין:
PHP קוד:
<?php
function fetch_comments($commentid=0$l=1)
{
    static 
$b "";
    
    
$t mysql_query("SELECT * FROM `comments` WHERE `comment_id` = {$commentid}");
    while (
$tt mysql_fetch_assoc($t))
    {
        
$b .= style_comment($tt$l);
        
fetch_comments($tt['id'], $l+1);
    }
    
    return 
$b;
}

echo 
fetch_comments();
ולעניינו
בהתחלה ב $commentid שווה לאפס, זהו המצב שבו אנחנו שולפים את ה"נושאים"
לאחר מכן אנחנו שולפים מהטבלת תגובות איפה שהcomment_id שזהו הID של התגובה שאליה התגובה הנוכחית מוגבת ומוסיפים אותה לBUFFER של ההדפסה
אחרכך אנחנו מבצעים את אותו דבר בעבור התגובה הנוכחית
זה ממשיך הלאה והלאה ככה בעבור כל "נושא" זה שולף את התגובות שבתוכו
הפונקציה style_comment מקבלת 2 פרמטרים, אחד מערך ASSOCIATIVE עם מידע על התגובה והשני זהו פרמטר INT שמכיל את רמת ההירככיה הנוכחית, באמצעותו תוכל ליישר את התגובות בעץ ולהראות מי הגיב למי

יש שאלות??
__________________
  Reply With Quote
ישן 09-05-09, 15:44   # 8
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

תודה, הבנתי את זה, אבל הפעולה מחזירה שגיאות אלא אם כן אני פותח MySQL וגם אז שום דבר לא מודפס.
  Reply With Quote
ישן 09-05-09, 15:57   # 9
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

אז תכתוב טבלאת מעקב יש מצב שאני טועה חח
__________________
  Reply With Quote
ישן 09-05-09, 16:48   # 10
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

לא הבנתי בדיוק את הקטע של style_comment(), התכוונת שאני צריך לבנות אותה?
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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