פורסם 2007 באפריל 2318 שנים אני בונה כרגע אתר לפרוייקט לבגרות (HTML, JavaScript, ASP).החלטתי לבנות אתר קניות וירטואלי (לא אמיתי כמובן).אני צריך עזרה בקשר לעגלת הקניות באתר.מה שאני עשיתי זה:1) יצרתי משתנה Session שלתוכו נוספים המוצרים כשבין כל מוצר ומוצר מפריד הסימן ; (נקודה פסיק).לדוגמה, Battlefield 2142;FIFA 07;Need for Speed Carbon; זה מה שיהיה לי במשתנה ה- Session (בעגלה).2) בדף ה- ASP של העגלה השתמשתי בפונקציה Split שמקבלת מחרוזת ומחזירה מערך עם חלקים מהמחרוזת כשבין כל תא ותא מפריד הסימן ; .לדוגמה, ממשתנה ה- Session שכתבתי למעלה אני אוכל לקבל מערך שבו התא הראשון יכיל את הערך Battlefield 2142, השני את הערך FIFA 07, והשלישי את הערך Need for Speed Carbon ואלו הם למעשה המוצרים שבעגלה.3) במערך הזה השתמשתי כדי להראות את המוצרים בעגלה.4) נתקלתי קצת בבעיה כאשר רציתי להציג את הכמות של המוצרים אבל גם את הבעיה הזאת פתרתי בעזרת הפונקציות Filter ו- UBound.זה הקוד של הדף של עגלת הקניות (שלבים 2 - 4):<%Set Con = Server.CreateObject("ADODB.Connection")Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/myData.mdb") & ";"Set RS = Server.CreateObject("ADODB.Recordset")mySQL = "SELECT name, price FROM Softwares ORDER BY name"RS.Open mySQL, Con, 3, 3cart = Split(Session("cart"), ";")allTotal = 0%><h1><center>העגלה שלך</center></h1><form action="showSoftware.asp" method="post" name="showSoftware"><input type="hidden" name="software" value="" /></form><table border="1" align="center"><tr><th>מוצר</th><th>כמות</th><th>מחיר</th><th>סה"כ</th><th>קנייה / הסרה</th></tr><%Do Until RS.EOFname = RS.Fields("name")amount = UBound(Filter(cart, name)) + 1price = RS.Fields("price")total = amount * priceallTotal = allTotal + totalIf amount > 0 Then%><tr><td><a href="JavaScript:showSoftware('<% =name %>')"><% =name %></a></td><td><% =amount %></td><td><% =price %></td><td><% =(total & " ¤") %></td><td><form action="removeFromCart.asp" method="post" name="remove"><input type="hidden" name="software" value="<% =name %>" /><input type="submit" value="הסר מהעגלה" /></form></td></tr><%End IfRS.MoveNextLoopIf allTotal > 0 Then%><tr><td colspan="3">סה"כ לתשלום</td><td><% =(allTotal & " ¤") %></td><td><button onclick="confirmBuy()">קנה מוצרים</button></td></tr><%End If%></table><%RS.CloseSet RS = NothingCon.CloseSet Con = Nothing%>רציתי לדעת מה אתם חושבים על הרעיון (הוא עובד אבל הצעות שיפור יתקבלו בברכה) ואם יש לכם רעיונות אחרים טובים יותר אני אשמח.
פורסם 2007 באפריל 2318 שנים זו דרך סטנדרטית לבצע את מה שרצית וכך למעשה בהרבה מן המקרים העניין מתבצע.אם עלית על הרעיון לבד, כל הכבוד.
פורסם 2007 באפריל 2318 שנים כדאי אולי להשתמש במספר המזהה היחודי של הפריט ולא בשם שלו. וגם כדאי לשלוף מהמסד נתונים ישירות את הנתונים הרלוונטים בלבד, ולא לעבור על כולו ולראות האם הסכום גדול מ 0.
פורסם 2007 באפריל 2318 שנים 1) אני ממליץ לעשות את מה שOMNI הציע.2) אתה יכול לשמור בSESSION את מספר הפריטים, דבר שיחסוך לך זמן.
פורסם 2007 באפריל 2318 שנים עומס יתר על הזכרון של השרתתאר לך 100 משתמשים כל אחד קונה בבמוצע 5 פריטים כל פריט אתה שומר את כל המידע על הפריט (כולל התאור שלו ?) בערך כ- 30 בתים , תעשה את החשבון תכנות ב- JavaScript מועד לתקלות תאימות עם דפדפנים אחרים
פורסם 2007 באפריל 2318 שנים ה session נשמרים בדיסק, ונטענים לזכרון בעת הצורך, כאשר אז הם לוקחים זכרון שולי יחסית לאינטרפטר שמריץ את הקוד. למרות ששוב, עדיף לשמור את המזהה.ואיפה ראית פה JavaScript ?
פורסם 2007 באפריל 2418 שנים מחבר כדאי אולי להשתמש במספר המזהה היחודי של הפריט ולא בשם שלו. וגם כדאי לשלוף מהמסד נתונים ישירות את הנתונים הרלוונטים בלבד, ולא לעבור על כולו ולראות האם הסכום גדול מ 0.דבר ראשון, לא עשיתי שדה של מזהה אז אני לא יכול להשתמש במזהה של הפריטים.שנית, איך אני יכול לשלוף רק את הנתונים הרלוונטים? לבנות משפט SQL עם הרבה ORים? זה לא יהיה מסורבל?אתה יכול לשמור בSESSION את מספר הפריטים, דבר שיחסוך לך זמן.איך אני יכול לעשות את זה? דוגמה מילולית או דוגמת קוד תעזור לי מאוד.
פורסם 2007 באפריל 2418 שנים אז תעשה שדה כזה, זה א"ב של מסדי נתונים. אולי זה יהיה מסורבל, אבל אם יש לך מסד נתונים ענק זה יותר נכון.בהנחה שמספר הפריטים בעגלה לא ענק זה לא כזה קריטי לעומת הדברים האחרים.
פורסם 2007 באפריל 2418 שנים בSQL יש את IN שמאפשר לך לשלוף רשומות שעמודה מסויימת מוכלת ברשימה מסויימת.select * from items where item_id in (1, 2, 3, 4)ישלוף לך פריטים שהמספר הסידורי שלהן הוא 1, 2, 3, 4.http://www.1keydata.com/sql/sqlin.htmlובקשר לשני:Session("count") = 5
פורסם 2007 באפריל 2518 שנים מחבר בSQL יש את IN שמאפשר לך לשלוף רשומות שעמודה מסויימת מוכלת ברשימה מסויימת.select * from items where item_id in (1, 2, 3, 4)ישלוף לך פריטים שהמספר הסידורי שלהן הוא 1, 2, 3, 4.http://www.1keydata.com/sql/sqlin.htmlובקשר לשני:Session("count") = 5הבנתי את השורה של ה- SQL. תודה זה יעזור לי.בקשר לפקודה השנייה, במה מספר הפריטים יכול לעזור לי?חשבתי שהתכוונת לשמור את הכמות של כל פריט.
פורסם 2007 באפריל 2718 שנים מחבר סליחה, אתה צודק.טעות שלי.בכל מקרה, התכוונתי לכמות של כל פריט ואם יש דרך לשמור איכשהו את הכמות של כל פריט ופריט במקום לכתוב את אותו המוצר פעמיים.
פורסם 2007 באפריל 2718 שנים תעשה שהפורמט של המידע שאתה שומר הוא מס' פריט, כמות שלו, מס' פריט, כמות שלו וכו'..
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.