שלח תשובה

זירת השאלות

512
צפיות
4
תשובות

דבר מוזר בקוד בASP

,‏ 1 במאי, 2005

אני אקצר (בדר"כ לא הרבה מגיבים להודועות שלי כאן מכיוון שהן ארוכות מדי, כנראה 🙂 ).

הקוד הבא:


  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 תשובות

  1. אוריקס הגיב:

    נסה להוסיף בראש הדף


    Response.CacheControl = "private"
    וגם
    Response.expires = -1

  2. Shreky הגיב:

    לא עובד
    ניסיתי להוסיף את זה בראש הדף (כמעט, אחרי הגדרת השפה "<@ …" ועדיין הבעיה קיימת :

    עוד רעיונות?

  3. אוריקס הגיב:

    תן קצת יותר קוד, כולל התנאי המדובר.

  4. Shreky הגיב:

    הנה עוד מספר פרטים
    את התוכן למשתנה 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

    תודה שוב!

שלח תשובה