עגלת קניות באתר - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


Aviv C

Recommended Posts

אני בונה כרגע אתר לפרוייקט לבגרות (HTML, JavaScript, ASP).

החלטתי לבנות אתר קניות וירטואלי (לא אמיתי כמובן).

אני צריך עזרה בקשר לעגלת הקניות באתר.

מה שאני עשיתי זה:

1) יצרתי משתנה Session שלתוכו נוספים המוצרים כשבין כל מוצר ומוצר מפריד הסימן ; (נקודה פסיק).

לדוגמה, 2142;FIFA 07;Need for Speed Carbon; זה מה שיהיה לי במשתנה ה- Session (בעגלה).

2) בדף ה- ASP של העגלה השתמשתי בפונקציה Split שמקבלת מחרוזת ומחזירה מערך עם חלקים מהמחרוזת כשבין כל תא ותא מפריד הסימן ; .

לדוגמה, ממשתנה ה- Session שכתבתי למעלה אני אוכל לקבל מערך שבו התא הראשון יכיל את הערך 2142, השני את הערך 07, והשלישי את הערך 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.

קישור לתוכן
שתף באתרים אחרים

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

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

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

טעות שלי.

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...