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

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



  #4  
ישן 27-10-2005, 15:27
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
בתגובה להודעה מספר 3 שנכתבה על ידי tropit2005 שמתחילה ב "מפתאום לא רציתי את כל..."

קראתי בריפרוף את האשכול, ויכול להיות שלא הבנתי נכון את כוונת המשורר, אולם במידה וכן הבנתי - מדובר בקוד בזבזני ומיותר בהחלט אשר ברוב המקרים יגרום לזמן הריצה של הקוד שלך להיות ארוך ומיגע.
במידה ויש לך רק 2 קטגוריות, ועבור כל קטגוריה קיימות 10 תת קטגוריות, אנו מדברים על 3 שאילתות:
1. שאילתא ראשונה להוצאת נתוני הקטגוריות הראשיות.
2. שאילתא שניה להוצאת 10 תת הקטגוריות של הקטגוריה הראשית הראשונה.
3. שאילתא שלישית להוצאת 10 תת הקטגוריות של הקטגוריה הראשית השניה.
(שים לב שככל שיש לך יותר שאילתות, זמן הריצה של הקוד שלך יהיה כמובן ארוך יותר).
עד כאן הכל טוב ויפה, אולם מה קורה במצב בו יש לך 10 קטגוריות ראשיות? או 20? מדובר על n+1 שאילתות (כאשר n הוא כמובן מספר הקטגוריות הראשיות), ואני מדבר פה רק על החלק של ההדפסה של רשימת הקטגוריות... אני מתאר לעצמי שבדף הזה ירוצו עוד כמה שאילתות
הייתי ממליץ לך לחשוב על דרך לייעל את הנושא. אין פה צורך (לדעתי) ביותר מ-2 שאילתות על מנת לבצע את מה שאתה מבקש (כמובן, לצורך הדפסת הנתונים, ולא מעבר לזה).

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

בברכה, דקל
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 28-10-2005, 09:39
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
אתה שואל בפורום PHP, אז אני אענה לך לפי פורום PHP. לא בטוח שאפשר לעשות את זה ב ASP
בתגובה להודעה מספר 1 שנכתבה על ידי tropit2005 שמתחילה ב "לולאה מקוננת"

(אגב, תנחומי הכנים שאתה משתמש בשפה הנ"ל...)

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

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

אחרי ששלפנו את כל הטבלה הנ"ל (שאילתא אחת בלבד), אנחנו עושים משהו פשוט מאוד. אנחנו מבצעים while כל עוד יש נתונים במשתנה שאליו הוחזר המידע, ואז אנחנו מסתכלים בתוך מה שחזר על ה parentid ועל ה type. בהתאם ל parentid וה type מוסיפים למערך שאנחנו יוצרים מימדים כנדרש. לדוגמא:
קוד PHP:
 while ($data mysql_fetch_array($result)) {
 if (
$data["parentid"] = 0) {
  if (
$data["type"] = "link")
   
$menu[] = array("link"$data["url"]);
  if (
$data["type"] = "menu")
   
$menu[] = array("menu"$data["text"]);
 } else {
  if (
$data["type"] = "link")
  
$menu[$data["parentid"]][] = array("link"$data["url"]);
  if (
$data["type"] = "menu")
  
$menu[$data["parentid"]][] = array("menu"$data["text"]);
 }



התוצאה תהיה מערך רב מימדי שמכיל את כל מבנה התפריט שלך, שתוכל לראות יפה באמצעות ;(print_r($menu (שתעזור לך ליצור פונקציה שתדפיס את המערך הזה עם foreach...)

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 28-10-2005, 10:09
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
בקטע של הפונקציה אני הצעתי את הרקורסיה
בתגובה להודעה מספר 6 שנכתבה על ידי שימי שמתחילה ב "אתה שואל בפורום PHP, אז אני אענה לך לפי פורום PHP. לא בטוח שאפשר לעשות את זה ב ASP"

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

או אופציה יותר קלה זו שאילתא ראשונה לכל הקטגוריות הראשיות וכשעוברים עליהם עוד שאילתא לתת קטגוריות
כך שיש שאילתא לקטגוריות הראשיות + שאילתא*מספר הקטגוריות הראשיות.
פה לא עשית לפי סדר נכון.

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

פותח שאילתא1+לולאה1
-מגדיר את שאילתא2
-פותח שאילתא2+לולאה2
-סוגר לולאה2+שאילתא2
סוגר לולאה1+שאילתא1

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

בהצלחה!
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 28-10-2005, 10:37
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
אני לא הצעתי רקורסיה של שאילתות!!
בתגובה להודעה מספר 8 שנכתבה על ידי שימי שמתחילה ב "רקורסיה של שאילתות זו טעות. נקודה! תסתכל על הדף שאתה נמצא בו עכשיו"

אגב ב ASP זה גם לא יפעל...

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


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

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

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

הדף נוצר ב 0.05 שניות עם 10 שאילתות

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

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