לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 08-12-2007, 20:34
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
[MySQL]שאילתא אחת בלבד להחלפת שיטת הרקורסיה - תכנון נכון של הטבלה במסד

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

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

מבחינת צד הלקוח (JS, CSS) - העניין טופל.
מבחינת צד השרת - אני מסתבך במציאת השאילתא הרצויה.

על מנת שיהיה אפשר להבין איך צריך לקבל את התוצאות מהשאילתא, אציג את עיקרון התפריט הרקורסיבי שכתבתי:
קוד:
<!--HTML--> <ul id='menu'> <li><a>Title1</a> <ul> <li><a>Sub Title1</a></li> <li><a>Sub Title2</a> <ul> <li>Sub Sub title...</li> </ul> </li> </ul> </li> <li>Title2 <ul> <li><a>Sub Of Title2-#1</a></li> <li><a>Sub Of Title2-#2</a></li> </ul> </li> <li><a>Contact Us</a></li> </ul>


הרעיון הוא שאקבל את התוצאות ממש לפי הסדר הנ"ל - מלמעלה למטה, וכך ישר אציג את הפלט למשתמש.

בינתיים, חשבתי על 2 שיטות לבניית הטבלה שלי:

שיטה 1: (עם parent_ID)

menus:

menu_id - INT, AUTO_INCREMENT
menu_title - VARCHAR
menu_isParent - BOOL, DEFAULT false
menu_parentId - INT, DEFAULT 0
menu_position - INT, DEFAULT 1
menu_creationTime - INT, DEFAULT 0

שיטה 2: (רשימה מקושרת)

menus:

menu_id - INT, AUTO_INCREMENT
menu_title - VARCHAR
menu_nextId - INT, DEFAULT 0
menu_creationTime - INT, DEFAULT 0

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

חשבתי על דרכים שונות וביניהם פיסקאות ORDER BY ו-JOIN'ים שונים, אבל זה לא היה מביא לי תוצאה מספיק טובה ובמקרים מסוימים גורם לכפילות נתונים...

כל עזרה תתקבל בברכה!
תודה רבה,
דור.

[נ.ב. פתחתי אשכול חדש, ולא כתבתי זאת באשכול האחרון הקרוב שפתחתי, כי שני הנושאים שונים לגמרי...]

נערך לאחרונה ע"י DCD בתאריך 08-12-2007 בשעה 20:48.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:03

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר