בולנט - דברים מיוחדים...     פרוטו - בניית אתרים

Israeli ASP Organization

ארגון ה-ASP הישראלי

מאמרים/דוגמאות קוד
קישורים
ספרות
חיפוש כללי:

חפש!
כלליHTMLASPASP.NETSQLמסדי נתוניםJavaScriptXML * XSLDHTML * CSSעיצוב וגרפיקהשרתיםComponentsפרסום ושיווקקידום אתריםקופירייטינגPHP
פרסומת
דף ראשי מדורים דרושים הרשמה למועדון אודותינו צור קשר
מיקום: מאמרים ודוגמאות קוד > כללי
מיקום: מאמרים ודוגמאות קוד > ASP

עגלת קניות

"אתר מכירות ללא עגלת קניות זה לא אתר מכירות" אמר לי פעם מישהו שלמד בסיון.
אז במאמר זה אני מתכוון להסביר אחת ולתמיד דרך אחת מיני רבות ליצירת עגלת קניות.
עגלת קניות מן הסתם תשמש אותנו באתר בו אנו מוכרים מוצרים. בכל עת ניתן להוסיף מוצרים לעגלה, לעדכן ולהסיר. וכאשר הלקוח מרוצה עם תכולת עגלתו הוא יכול לגשת אל "הקופה" ולקנות את המוצרים / השרותים.
הדרך בה אני רוצה ללמד אותכם להתעסק עם עגלת קניות היא בעצם להתיחס אל עגלת הקניות כאל טבלה ב-DB שתקרא למשל CART הטבלא נראית כך :

שדה ID מיצג את המפתח רשומה בטבלת CART ונצטרך אותו בכדי לאפשר הוספה/ הסרה/ עדכון של מוצרים/ שרותים, שדה
PROD_ID מייצג את ה-ID של כל מוצר ויקרא מתוך טבלת מוצרים. (PRODUCTS)
שדה amount מיצג את את הכמות של כל מוצר בעגלה ושדה SessionID מיצג את ה-ID של ה-Session הנוחכי.

נתחיל בשדה SessionID מכיוון שרבים אינם מבינים מהי מטרתו. ובכן, בכל פעם שגולש נכנס אל האתר, מתחיל Session בינו לבין השרת ו-Session זה ימשך עד 20 דקות (ברירת המחדל ב-IIS) לאחר הבקשה האחרונה של הגולש לדף מהשרת.
לכל Session יש ID משלו וכך אנו יכולים להבדיל ביניהם.
כאשר הגולש בוחר להוסיף מוצר לעגלת הקניות, כל מה שעלינו לבקש מהגולש הוא לספק לנו את המוצר שברצונו להוסיף ואת הכמות מאותו מוצר. הקוד שלנו יצטרך לזהות את ה-ID של המוצר, ולהוסיפ אותו בשדה prod_id ואת הכמות בשדה amount. שדה ה-ID יהיה שדה מסוג מספר אוטומטי ולכן אין לנו כל צורך לדאוג לערכיו.

בשדה SessionID נכתוב את ה-ID היחודי ל-Session שבין הלקוח הנוחכי לבין השרת.
(שים לב! במידה וישנם 100 גולשים בו זמנית, לכל אחד מהם יהיה SessionID שונה.)
בכדי לקבל את ה-ID של ה-Session הנוכחי, יש לכתוב Session.SessionID
ואת הערך שנקבל נכניס לטבלה תחת שדה SessionID.
זאת בעצם כל ההוספת לעגלת קניות. (כמובן שעליך להשתמש פה במשפט INSERT INTO של SQL או במטודה AddNew על אובייקט RecordSet)
מיד לאחר ההוספה, נשלח את הגולש אל דף אשר יודע להציג את תוכן עגלת הקניות שלו.
דף זה בעצם יבצע שאילצא פשוטה על טבלת CART כאשר בתנאי ה-Where של משפט ה-SQL.
אנו נשתמש ב-SessionID בכדי שנדע להציג אך ורק את המוצרים של המשתמש הנוכחי שביקש לראות את תוכן עגלת הקניות שלו.
על משפט ה-SQL להכיל בסופו את התנאי:

Where SessionID =" & Session.SessionID & ""
לאחר שנקבל את תוצאות השאילתא לתוך אובייקט RecordSet, נעבור על כל הרשומות באובייקט ונציג אותם.
מן הסתם, נצטרך להשתמש פה בפקודת JOIN במשפט ה-SQL בכדי לאחד בין טבלת CART וטבלת PRODUCTS בכדי שנוכל להראות לגולש את שם הפריט ואת מחירו ולא רק את מספר המק"ט שלו (ID).
כעת אסביר מה יש לעשות במידה ורוצים להראות בסוף עגלת הקניות את מחיר הסה"כ בכל פעם שמסתכלים על תוכן העגלה.
לפני שנעבור על אובייקט ה-RecordSet בכדי להציגו אנו נגדיר משתנה בשם total (לא חובה להגדיר משתנים ב-VBScript)
ונשווה אותו ל-0 (חובה להשוות ל-0) לאחר מכן, בכל פעם שנעבור על רשומה בכדי להציג אותה, נוסיף למשתנה total את תוצאת המכפלה של מחיר המוצר בכמותו.
total = total + rs("price") * rs("amount")

על שורה זו להיות כתובה בתוך הלולאה שעוברת על כל השורות באובייקט rs אשר מייצג את עגלת הקניות של הגולש הנוכחי. כך ברגע שנסיים לעבור על כל הרשומות, במשתנה total
יהיה לנו הערך הסה"כ לתשלום. וכל מה שנשאר לכם לעשות הוא להציגו response.write total . טוב, אז למנדנו איך מוסיפים מוצר לעגלה ואיך מראים את תוכנה, אבל איך מעדכנים כמויות או מסירים מוצרים? את זה כעת.
אפשרויות העדכון וההסרה יהיו בכל הצגת העגלה ליד כל רשומה של פריט יהיה קישור להסרת המוצר. כל מה שקישור זה צריך לעשות הוא לשלוח את ה-ID של כל רשומה מטבלה CART לקובץ אשר יודע להשתמש במשפט SQL-DELETE FROM ומשתמש ב-ID
בתנאי ה-where.

ההליך יראה כך:

<A Href=removefromcart.asp?id=<%=rs("id")%>>הסרת הפריט</A>
כאשר שורה זו תופיע כמובן בתוך הלולאה .
בכל רשומה תתאפשר הסרה של כל פריט בעגלה.
משפט ה-SQL בקובץ removefromcart.asp יראה בערך כך:
"DELETE * FROM CART WHERE ID =" & Request.QueryString("id")

לאחר הפעלת משפט ה-SQL על מסד הנתונים יש לשלוח את הגולש בחזרה אל הדף אשר מראה את תוכן העגלה, שליחה זו מתבצעת בעזרת הפקודה: Response.Redirect
וכך הגולש לא יראה את התהליך, ברגע שהגולש ילחץ על קישור ההסרה המוצר יעלם מעגלת הקניות.
את אופציית העדכון השמטתי בכוונה מכיוון שמאמר זה יצא ארוך מכפי שחשבתי ואינני רואה אפשרות זו כחיונית. במידה ואתם בכל זאת מתעקשים ואינכם יודעים כיצד, אשמח אם תפנו אלי את שאלותיכם לאימייל adamli@hotmail.com
(אם תשגעו אותי יותר מידי אני בטח יכנע ויוסיף את העדכון למאמר... :)
לסיכום, אני מקווה שהצלחתי להסביר מהי בעצם עגלת הקניות וכיצד ניתן ליישם אותה בדרך אחת.
אשמח לשמוע הערות, תיקונים או דרכים אחרות בהן ניתן ליישם את עגלת הקניות.
בהצלחה...



התגובות שלכם

         
01. 29/07/2005  מתן
רק חבל שאין דוגמא להורדה...


מחבר: אדם ליבסקירמת קושי: 0  ||  ציון: (6)כל הזכויות שמורות ל-IAO ©

חנות לסטלן  |   מתכונים  |   חגי ישראל  |   פורטל משחקים  |   חנויות מחשבים ו-ציוד הקפי  |   מגזין מסטול לסטלן המצוי  |   קליפרים  |   גידול צמחים פרחים  |   ספא פינוק מושלם