צפיות
תשובות
דבר מוזר בקוד בASP
אני אקצר (בדר"כ לא הרבה מגיבים להודועות שלי כאן מכיוון שהן ארוכות מדי, כנראה 🙂 ).
הקוד הבא:
If (Cart<>"") Then Cart=Cart&"|^^|"
Cart=Cart&Request.Form("ProductDetails")
Response.Cookies("GDUser")("LastTimeAddedProduct")=Now()
DB.Execute "UPDATE Users SET [Cart]='"&ReplaceSTR(Cart)&"' WHERE ([UserID]="&MyID&")"
Response.Redirect("Cart_Options.asp?Action=View")
אמור לקחת משתנה ולכתוב אותו לדאטא בייס תוך כדי דריסה על הקיים (הקוד פשוט ולכן לא אאריך יותר מדי).
הקוד נמצא בתוך משפט IF אחד (אפילו לא מקונן), ללא לופים לפניו או אחריו. ובכל זאת, הוא נותן תוצאות/נתונים שגויים (השגוי כאן שהוא כאילו מוסיף את המוצר לעגלה פעמים במקום פעם אחת).
גם אחרי בדיקות שערכתי, התגלה כי הקוד רץ פעמים לא משנה מה (ניסיתי לשים פלאגים וכו'. אך ללא הועיל). כמו-כן, זה לא רץ תמיד פעמיים. זה יכול לרוץ מספר פעמים פעם אחת, ואחרי הפעמים הללו פתאום תהיה פעם אחת שהקוד ירוץ פעמיים.
מוזר מאוד. האם מישהו נתקל פעם בבעיה כזו?
תודה מראש.
4 תשובות
נסה להוסיף בראש הדף
Response.CacheControl = "private"
וגם
Response.expires = -1
לא עובד
ניסיתי להוסיף את זה בראש הדף (כמעט, אחרי הגדרת השפה "<@ …" ועדיין הבעיה קיימת :
עוד רעיונות?
תן קצת יותר קוד, כולל התנאי המדובר.
הנה עוד מספר פרטים
את התוכן למשתנה Cart אני מביא בתחילת הדף ממאגר המידע, באם המשתמש מחובר (לכל משתמש יש שדה כזה).
לאחר מכן מתבצעת בדיקה אשר בודקת איזה פעולה המשתמש עושה. במידה והמשתמש מוסיף משהו לעגלה שלו, הקוד שניתן לעיל מתרחש. במידה ולא מתרחשים קודים אחרים. להלן עוד חלק מהקוד אשר מתבצע לאחר החיבור למאגר המידע וכו'.
לגבי המשתנה
LastTimeAddedProduct
של הקוקי, עשיתי את זה כדי לנסות למנוע את הקטע שאותו קטע קוד רץ פשוט פעמיים. אבל ללא הועיל.
שאר הקוד לפי דעתי לא רלוונטי אבל הנה הוא:
Action=Request.QueryString("Action")
If ((Action="Add") and (Request.Form("ProductDetails")<>"") and (Now()<>Request.Cookies("GDUser")("LastTimeAddedProduct"))) Then
If (Cart<>"") Then Cart=Cart&"|^^|"
Cart=Cart&Request.Form("ProductDetails")
Response.Cookies("GDUser")("LastTimeAddedProduct")=Now()
DB.Execute "UPDATE Users SET [Cart]='"&ReplaceSTR(Cart)&"' WHERE ([UserID]="&MyID&")"
Response.Redirect("Cart_Options.asp?Action=View")
ElseIf (Action="Update") Then
Dim I : I=0 : Dim CartItems : CartItems=""
While (I<=Int(Request.Form("NumberOfItems")))
If ((Request.Form("Del"&I)<>"on") and Int(Request.Form("Amount"&I)>0)) Then
If (CartItems<>"") Then CartItems=CartItems&"|^^|"
CartItems=CartItems&ReplaceSTR(Request.Form("Name"&I))&"|"&Request.Form("Amount"&I)&"|"&Request.Form("Price"&I)
End If
I=I+1
WEnd
ElseIf (Action=…)
…
…
End If
תודה שוב!