coldfusion / קוקיס ו-coldfusion / נתיב מאגר המידע
נתיב מאגר המידע
כולנו יודעים שיש דרכים מרובות להתמודדות עם כל משימת תכנות, ושיש גם אלטרנטיבות לדרכי הקוקיס שלי. בואו נתחיל עם כמה שיטות קוקי-מאגרי מידע מסוג "hybrid" (האהובות עלי) - פתחו את cookiedata.mdb ועקבו אחרי.
אוקיי, קודם כל בואו נשמור את הערך שהייתם אחרת שומרים בקוקי בשדה טקסט של מאגר מידע במקום, ואז נעקוב אחריו בעזרת משדה ID אוטומטי השמור בקוקי. כדי לדעת כיצד מאגר המידע עשוי להיראות, פתחו את הטבלה "Example1" במאגר המידע אותו הורדתם. הצורה בה זה עובד היא שאתם מבצעים את אותן הפעולות לבניית ושמירת קוקיס (כפי שפורטו בעמודים הקודמים), אבל אתם ניגשים למאגר המידע בכל פעם כדי שהמשתמש יעדכן אותו. הקוד שלכם עשוי להיראות בערך כך (בהתחשב שכך ששמרתם את מחרוזת הקוקי שלכם במשתנה myTrail):
<!---to insert--->
<cftransaction>
<cfquery name="insertcookie" datasource="mydatasource">
INSERT INTO Example1 (StringData) VALUES ('#myTrail#') </cfquery>
<cfquery name="getcookie" datasource="mydatasource">
SELECT Max(ID) AS myID FROM Example1 </cfquery>
<cfcookie name="TrailID" value="#getcookie.myID#> <cftransaction>
<!---to retrieve it and display--->
<cfquery name="displaycookie" datasource="mydatasource">
SELECT StringData FROM Example1 WHERE ID = #Cookie.TrailID# </cfquery>
<cfoutput>
#displaycookie.StringData# </cfoutput>
<!---to update--->
<cfquery name="updatecookie" datasource="mydatasource">
UPDATE Example1
SET StringData = '#myTrail#'
WHERE ID = #Cookie.TrailID#
</cfquery>
(שימו לב לשימוש ב-cftranslation, ששומר שהדברים יזרמו בצורה אחידה וחלקה).
היתרון בשיטה הזאת הוא שבסופו של דבר אתם מקבלים הרבה פחות מידע השמור בקוקי, ומכאן מסתכנים הרבה פחות במעבר על גבולותיו. הוויתור? יש לכם כמות מידע גדולה לתחזק במאגר המידע, במיוחד אם אתם עובדים ברמת הפר-לקוח. אז, איך נמנעים מלסמוך על מאגר המידע שיכיל כל פעולה שעשה המשתמש באתר שלכם? ההצעה שלי היא לעשות שימוש בשיטת hybrid מתקדמת עוד יותר.
לדוגמא, אתם יכולים להוסיף יכולות "translation" (תרגום) נוספות לקוד קריאת הקוקיס שלכם, לשמור מידע כגון כותרות עמודים ומיקומים במאגר ולשמור מספרי ID של עמודים בקוקי (כדי לראות למה אני מתכוון, הביטו בטבלה "Example2", אליה הוספתי קצת מידע לדוגמא כדי לפשט את הדברים עוד יותר).
הגישה הזאת נותנת לכם את הטוב מבין שני עולמות:
יש לכם כמות מידע מוגבלת לתחזק ורשימה מותאמת אישית בקצה של המשתמש שנותן לך את כל אותן אפשרויות הפעולה. במקום לשמור קישורים מלאים וטקסט בקוקי, אתם פשוט שומרים רשימה מופרדת בפסיקים של IDים, אשר מתייחסת ל-''I, והתוכנה כבר דואגת לנתח את ה-IDים ולחפש אותם בטבלה. משתני מאגר המידע משמשים אז לבניית הקישורים בשביל פירורי הקוקיס ע"י מעבר מחזורי דרך הרשימה וקישור בשרשרת של הקוד הבא:
<a href="#myQuery.PageURL#">#myQuery.PageTitle#</a> /
זכרו כשאתם מנסים את השיטה הזאת שהתווית <cfloop> עובדת עם רשימות, כל עוד אתם מגדירים אינדקס. אז תשתמשו בפרמטרים "list=" ו-"index=" כאשר אתם יוצרים את השביל שלכם. הבנתם? יופי! עכשיו בואו נסיים במעבר על האופציות האחרות שלכם.
עמוד הבא: אלטרנטיבות אחרות >>
|