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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 13-08-07, 19:19   # 1
-roee-
חבר על
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
מיקום: IL
הודעות: 864

-roee- לא מחובר  

[PHP] רקורסיה

שלום,

אני בונה עכשיו מן מערכת קטגוריות שיהיה דרכה אפשרות ליצור תתי קטגוריות ללא הגבלה.
אז בניתי משהו כזה:
אם זו קטגוריה ראשית (כלומר מופיעה בדף הבית) אז אני מכניס למסד בעמודה is_first אפס. כלומר is_first=0
ואז בדף הבית אני שולף את הקטגוריות הראשיות על ידי where is_first='0'

עכשיו עשיתי תת קטגוריה שבעצם הID של קטגורית האב שלה הוא ה is_first של התת קטגוריה
לדוגמא יש לי קטגוריה ראשית שהID=1, is_first=0
אני יוצר תת קטגוריה שהis_first=1...
ואז פשוט אני שולף את התתי קטגוריות של הקטגוריה הראשית על ידי where is_first='$myID' כאשר ה myID הוא הID של הקטגוריה הנוכחית..

הבעיה היא שאני נתקעתי בקטגוריה שאחרי התת קטגוריה.. כלומר אני יוצר קטגוריה שלישית, שזה יראה נגיד משו כזה:
קטגוריה ראשית -> תת-קטגוריה --> תת-תת קטגוריה
ואז ה is_first שלה יהיה שווה ל2 (ה ID של התת קטגוריה)..

אז אני רוצה לדעת איך אני מוציא את הקטגוריה הראשית ובכלל את כל הרצף של הקטגוריות שהיו עד עכשיו מה תת-תת קטגוריה..

מקווה שהבנתם..

תודה
__________________
בברכה,
רועי
  Reply With Quote
ישן 13-08-07, 19:37   # 2
4ior
חבר וותיק
 
4ior's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,451

4ior לא מחובר  

אם היית נותן את הפונקציה, הייתי מתקן לך את הבעיה הספציפית...
אבל בעקרון קח את הפונקציה של הרקורסיה:
PHP קוד:
function print_subs($id,$i){
    
$sql="SELECT * FROM `category` WHERE `pid`='".$id."'";
    
$result=mysql_query($sql) or die(mysql_error());
    if(
mysql_num_rows($result)>0){
        while(
$row=mysql_fetch_array($result)){
            for (
$x=0;$x<$i;$x++) echo "-";
            echo 
$row['title']."<br />";
            
print_subs($row['id'],$i+1);                    
        }
    }

ואתה קורא לה ככה: print_subs(0,0);
  Reply With Quote
ישן 13-08-07, 19:46   # 3
-roee-
חבר על
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
מיקום: IL
הודעות: 864

-roee- לא מחובר  

ציטוט:
נכתב במקור על ידי 4ior צפה בהודעה
אם היית נותן את הפונקציה, הייתי מתקן לך את הבעיה הספציפית...
אבל בעקרון קח את הפונקציה של הרקורסיה:
PHP קוד:
function print_subs($id,$i){
    
$sql="SELECT * FROM `category` WHERE `pid`='".$id."'";
    
$result=mysql_query($sql) or die(mysql_error());
    if(
mysql_num_rows($result)>0){
        while(
$row=mysql_fetch_array($result)){
            for (
$x=0;$x<$i;$x++) echo "-";
            echo 
$row['title']."<br />";
            
print_subs($row['id'],$i+1);                    
        }
    }

ואתה קורא לה ככה: print_subs(0,0);

מה בעצם הפונקציה הזאת עושה?

מדפיסה את ה ID של כל התתי קטגוריות בקטגוריה מסויימת?
__________________
בברכה,
רועי
  Reply With Quote
ישן 13-08-07, 20:02   # 4
4ior
חבר וותיק
 
4ior's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,451

4ior לא מחובר  

לא, היא מדפיסה את הכותרת של הקטגוריה..
  Reply With Quote
ישן 13-08-07, 20:25   # 5
-roee-
חבר על
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
מיקום: IL
הודעות: 864

-roee- לא מחובר  

ELAD-A עזר לי..
תודה אחי
__________________
בברכה,
רועי
  Reply With Quote
ישן 14-08-07, 01:12   # 6
O-B
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: בבית
גיל: 35
הודעות: 1,423
שלח הודעה באמצעות ICO אל O-B

O-B לא מחובר  

ממש אבל ממש לא יעיל..
אם יש לך 100 קטגוריות?..
אתה תבצע select 100 פעמים?..

לא נראה לי פתרון טוב..
הפתרון שאני מציע זה לשלוף את כל הקטגוריות למערך דו-מימדי
ואז לעבוד איתו...
__________________
בברכה עובד, מפתח אתרים.
  Reply With Quote
ישן 14-08-07, 09:04   # 7
Daniel
אחראי פורום
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
הודעות: 2,875

Daniel לא מחובר  

תקרא על JOIN, כי כמו ש-O-B אמר, ברגע שיהיה קצת יותר קטגוריות, או שהרבה יכנסו לאתר,....
  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. הזמן כעת הוא 13:08.

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