עבור לתוכן

עגלת קניות באתר

Featured Replies

פורסם

אני בונה כרגע אתר לפרוייקט לבגרות (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, 3
cart = 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.EOF
name = RS.Fields("name")
amount = UBound(Filter(cart, name)) + 1
price = RS.Fields("price")
total = amount * price
allTotal = allTotal + total
If 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 If
RS.MoveNext
Loop
If allTotal > 0 Then
%>
<tr>
<td colspan="3">סה"כ לתשלום</td>
<td><% =(allTotal & " ¤") %></td>
<td><button onclick="confirmBuy()">קנה מוצרים</button></td>
</tr>
<%
End If
%>
</table>
<%
RS.Close
Set RS = Nothing
Con.Close
Set Con = Nothing
%>

רציתי לדעת מה אתם חושבים על הרעיון (הוא עובד אבל הצעות שיפור יתקבלו בברכה) ואם יש לכם רעיונות אחרים טובים יותר אני אשמח.

פורסם

זו דרך סטנדרטית לבצע את מה שרצית וכך למעשה בהרבה מן המקרים העניין מתבצע.

אם עלית על הרעיון לבד, כל הכבוד.

פורסם

כדאי אולי להשתמש במספר המזהה היחודי של הפריט ולא בשם שלו. וגם כדאי לשלוף מהמסד נתונים ישירות את הנתונים הרלוונטים בלבד, ולא לעבור על כולו ולראות האם הסכום גדול מ 0.

פורסם

1) אני ממליץ לעשות את מה שOMNI הציע.

2) אתה יכול לשמור בSESSION את מספר הפריטים, דבר שיחסוך לך זמן.

פורסם

עומס יתר על הזכרון של השרת

תאר לך 100 משתמשים כל אחד קונה בבמוצע 5 פריטים כל פריט אתה שומר את כל המידע על הפריט (כולל התאור שלו ?) בערך כ- 30 בתים , תעשה את החשבון

תכנות ב- JavaScript מועד לתקלות תאימות עם דפדפנים אחרים

פורסם

ה session נשמרים בדיסק, ונטענים לזכרון בעת הצורך, כאשר אז הם לוקחים זכרון שולי יחסית לאינטרפטר שמריץ את הקוד. למרות ששוב, עדיף לשמור את המזהה.

ואיפה ראית פה JavaScript ?

פורסם
  • מחבר

כדאי אולי להשתמש במספר המזהה היחודי של הפריט ולא בשם שלו. וגם כדאי לשלוף מהמסד נתונים ישירות את הנתונים הרלוונטים בלבד, ולא לעבור על כולו ולראות האם הסכום גדול מ 0.

דבר ראשון, לא עשיתי שדה של מזהה אז אני לא יכול להשתמש במזהה של הפריטים.

שנית, איך אני יכול לשלוף רק את הנתונים הרלוונטים? לבנות משפט SQL עם הרבה ORים? זה לא יהיה מסורבל?

אתה יכול לשמור בSESSION את מספר הפריטים, דבר שיחסוך לך זמן.

איך אני יכול לעשות את זה? דוגמה מילולית או דוגמת קוד תעזור לי מאוד.

פורסם

אז תעשה שדה כזה, זה א"ב של מסדי נתונים. אולי זה יהיה מסורבל, אבל אם יש לך מסד נתונים ענק זה יותר נכון.

בהנחה שמספר הפריטים בעגלה לא ענק זה לא כזה קריטי לעומת הדברים האחרים.

פורסם

ב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 יש את 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. תודה זה יעזור לי.

בקשר לפקודה השנייה, במה מספר הפריטים יכול לעזור לי?

חשבתי שהתכוונת לשמור את הכמות של כל פריט.

פורסם

בהודעה הראשונה רצית לדעת איך אפשר לדעת את מספר הפריטים בעגלה.

פורסם
  • מחבר

סליחה, אתה צודק.

טעות שלי.

בכל מקרה, התכוונתי לכמות של כל פריט ואם יש דרך לשמור איכשהו את הכמות של כל פריט ופריט במקום לכתוב את אותו המוצר פעמיים.

פורסם

תעשה שהפורמט של המידע שאתה שומר הוא מס' פריט, כמות שלו, מס' פריט, כמות שלו וכו'..

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים