16-10-2010, 17:46
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
התחלת הלימוד היא בלשאול את השאלה הנכונה.
או שאתה רוצה עזרה עם בעייה - ואז תציג את הבעייה ותבקש פתרונות
או שהחלטת שאתה יודע מה הפתרון שאתה רוצה (ולא מעניין אותך אם הוא טוב או לא) - ואז תשאל איך מממשים את הפתרון שכבר בחרת.
אי אפשר לעבוד עם חצי מידע, וצורת ההצגה עם כל הפרטים היא החשובה ביותר.
לענייננו:
בהנחה שאתה מעוניין לשמור רשימה של כל ההודעות שנקראו אי פעם, אין לך מנוס מאשר לאחסן את המידע הזה. אם אתה אכן מעוניין ללכת על רשימה כזו (ולא, לדוגמה, לתת פשוט את רשימת כל ההודעות מאז הביקור האחרון ואפשרות כמו שיש כאן, של "סמן פורום כנקרא" - שמאחסנת רק את ה id של הפורום שקראו אותו ואת תאריך הקריאה, ולא מידע שנצבר כל הזמן...) - כמובן שעלייך פשוט... לשמור את כל המידע. הגיוני, לא?
עכשיו, כיוון שעוגיות זה דבר מוגבל (אתה לא יכול לאחסן אין סוף מידע) - באיזשהוא שלב מידע ילך לאיבוד (ואתה אפילו לא תוכל לבחור איזה, כי כל לקוח וכמה שהוא מחליט לשמור [נראה לי]), ובכל מקרה, אתה צריך להעביר מידע הלוך-חזור מהלקוח לשרת בכל בקשה ובקשה ואז גם לסרוק אותו תכנותית.
פתרון יותר הגיוני, עבור שמירת כל ההודעות שנקראו, הוא פשוט לשמור עוד טבלה במסד הנתונים, עם id של המשתמש, id של ההודעה שנקראה, ונניח readtime. ליצור על הטבלה הזו אינדקס משולב על userid,msgid, ואז, כשאתה מוציא את רשימת ההודעות, לעשות JOIN על הטבלה הזו עם msg_tbl.userid = read_tbl.userid AND msg_tbl.msgid = read_tbl.msgid. ואז - כשתחזור השאילתא, או שיהיה לך readtime, או שיהיה לך NULL, ואז בפשטות תדע אם ההודעה נקראה או לא.
כמובן ששיטה זו מניחה שהמשתמש מחובר עם יוזר מסויים. אם אתה רוצה שהפיצ'ר יעבוד על יוזרים אקראיים, תוכל לממש אותו רעיון על session id של המשתמש (הייתי עושה את זה אולי בטבלה נפרדת - אל תשכח גם שם להגדיר אינדקסים...), ולנקות מהטבלה הנוספת הזאת רשומות ישנות מעבר ליממה, נניח.
זו השיטה שלי. מה אתה אומר?
עריכה: בעע, fealls כתב את זה לפני ולא שמתי לב...
|