14-04-2007, 16:09
|
|
|
|
חבר מתאריך: 02.10.05
הודעות: 2,355
|
|
הערה דיי חשובה על הדרך הזאת:
רקורסיה זו שיטה שידועה כדורשת משאבים רבים, הוספת 2 שאילתות לכל קריאה בפונקציה זה מעשה מאוד לא יעיל, אפשר להגיע ככה בקלות ל-50 שאילתות בדף, נניח ש- 10 גולשים נכנסים לדף בו זמנית, משהו שהוא דיי סביר, המסד נתונים יצטרך להתמודד עם 500 שאילתות, ובכלל אם השרת כולל עוד אתרים נוצר עומס גדול על השרת.
בגלל זה, מה שעושים זה קודם כל שולפים את כל ההודעות ומכניסים אותם למערך, דו מימדי בדרך כלל.. ואז עושים את הרקורסיה על כל המערך.
הדרך הזאת עדיין לא הדרך הכי יעילה.. במקרה אני בונה עכשיו גם מערכת פורומים, ושם אני מוציא פלט מוזר ללקוח, ללא עיצוב, ובצד לקוח מעבד את הפלט ומכין את העיצוב.
הפלט שיוצא הוא בעצם מחרוזת עם כל העמודות מופרדות ב- '*' וככה אני עושה את זה ב- JS:
קוד PHP:
function showMessage(index, deep) { if(deep == 1) { finalText += '<div class="msg" onclick="showNhide(\'linking_'+recArray[index+4]+'\');">'; finalText += '<img src="images/mn.gif" width="20" height="20" alt="mes" />'; finalText += recArray[index+1]; finalText += '<\/div>'; finalText += '<div id="linking_'+recArray[index+4]+'" style="display: none;">'; finalText += '<div class="msgcont">'+recArray[index+2]+'<\/div>'; finalText += '<div class="btn_bar"><img src="images/quick.gif" width="120" height="19" alt="" /><img src="images/full.gif" width="119" height="19" alt="" /><img src="images/edit.gif" width="48" height="19" alt="" /><img src="images/earse.gif" width="56" height="19" alt="" /><\/div>'; for (var a=0;a<recArray.length;a+=cntFields) { if (recArray[a]==recArray[index+3]) showMessage(a, 2); } finalText += '<\/div>'; } else { var ped = (deep - 1) * 20; finalText += '<div class="msg" style="margin-right : '+ped+'px;" onclick="showNhide(\'mess_'+recArray[index+3]+'\');">'; if(recArray[index+2].length == 0) //if the string is empty.. { finalText += '<img src="images/me.gif" width="20" height="20" alt="" />'; finalText += recArray[index+1]; finalText += '<\/div>'; finalText += '<div style="display: none;" id="mess_'+recArray[index+3]+'">'; finalText += '<div style="margin-right : '+ped+'px;" class="msgcont">-ללא תוכן-<\/div>'; finalText += '<div style="margin-right : '+ped+'px;" class="btn_bar"><img src="images/quick.gif" width="120" height="19" alt="" /><img src="images/full.gif" width="119" height="19" alt="" /><img src="images/edit.gif" width="48" height="19" alt="" /><img src="images/earse.gif" width="56" height="19" alt="" /><\/div><\/div>'; } else { finalText += '<img src="images/mf.gif" width="20" height="20" alt="" />'; finalText += recArray[index+1]; finalText += '<\/div>'; finalText += '<div style="display: none;" id="mess_'+recArray[index+3]+'">'; finalText += '<div style="margin-right : '+ped+'px;" class="msgcont">'+recArray[index+2]+'<\/div>'; finalText += '<div style="margin-right : '+ped+'px;" class="btn_bar"><img src="images/quick.gif" width="120" height="19" alt="" /><img src="images/full.gif" width="119" height="19" alt="" /><img src="images/edit.gif" width="48" height="19" alt="" /><img src="images/earse.gif" width="56" height="19" alt="" /><\/div><\/div>'; } for (var a=0;a<recArray.length;a+=cntFields) { if (recArray[a]==recArray[index+3]) showMessage(a, deep + 1); } } }
_____________________________________
|