06-12-2007, 23:07
|
|
|
|
חבר מתאריך: 01.05.06
הודעות: 7,861
|
|
לולאה שמתעקשת לזכור את סיום שליפתה הקודם.
אני מציג קטגוריות, ובתוך כל קטגוריה פורום.
אני שולף את -כל- הפורומים ב SQL ובעזרת PHP מקטלג אותם לפי ה assign שלהם לכל קטגוריית האם שלהם.
המבנה הוא כזה:
קוד PHP:
$query1 = mysql_query("בחר את כל הקטגוריות"); $query2 = mysql_query("בחר את כל הפורומים");[/left] [left]while($category = mysql_fetch_assoc($query1)) { while($forum = mysql_fetch_assoc($query2)) { } }
נגיד ויש לי: קטגוריה1: פורום1 פורום2 פורום3
. הלולאה החיצונית רצה פעמיים כמספר הקטגוריות, והפנימית שולפת את כל הפורומים (5) ובעזרת PHP אני מחליט אם הפורום שייך לקטגוריה או לא.
אבל, וזה אבל גדול כלכך שאני יושב עליו כבר יום שלם
יוצא שהלולאה הפנימית רצה 5 פעמים * 2 קטגוריות (כמו שכבר אמרתי, אתן ל PHP לעשות את הסלקציה).
מסיבה שלא ברורה לי, אחרי שהלולאה הפנימית רצה 5 פעמים, PHP זוכר שהיא שלפה את כל הפורומים שיש, בריצה השניה שלה שאמורה שוב לשלוף 5 פורומים, היא "נגמרת" ולא רצה יותר בכלל.
לפי ההיגיון הפשוט, הלולאה החיצונית אמורה לאפס כל פעם את הריצה של הfetch, אבל יוצא שרק הקטגוריה הראשונה תמיד תעבוד, וכל השאר לא.
ובניסוח אחר: "אחרי שהלולאה הפנימית שולפת את כל הפורומים, אפילו אם מריצים את הלולאה שוב, היא כבר לא שולפת יותר כלום"
למה זה בכלל קורה? יתכן סיכוי שזהו באג בPHP?
נערך לאחרונה ע"י netaneldj בתאריך 06-12-2007 בשעה 23:09.
|