Problemer med minus

Tags:    asp

Jeg har siddet og lavet en butik og har brugt en del tid på det nu.
Her til slut står jeg så med et sidste problem, nemlig at den ikke vil regne stykket ud.
Dine point - Tingens pris = XXXX
F.eks.
400 - 300 = 100

Istedet for giver den:
400 - 300 = -300

Det vil sige den sætter den til:
-Pris

Derudover, så hvis man ikke har råd eller der er udsolgt, siger den bare "Siden kan ikke vises.", altså den henstiller ikke til
butik.asp?opfordring=Udsolgt.
butik.asp?opfordring=Du har ikke råd.

Er der en der kan hjælpe?

Database:
brugere:
profilpoint, datatype: tal

butik:
pris, datatype: tal

Her kommer koden:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("database/database.mdb")
sql = "SELECT * FROM butik WHERE id=" & Request.QueryString("id") & ""
set rs = conn.execute(sql)
If not rs.EOF then

brugerid = Session("id")
varenavn = rs("varenavn")
pris = cint(rs("pris"))
profilpoint = cint(Session("profilpoint"))
antal = rs("antal")

If profilpoint > pris Then
Response.Redirect "butik.asp?opfordring=Denne vare koster '" & pris & "' profilpoint.<br>Det vil sige at du ikke har råd til den og må spare nogle flere profilpoint op, før du kan købe den.<br>Du kan selvfølgelig også vælge at købe noget andet."
End if
If antal = 0 Then
Response.Redirect "butik.asp?opfordring=Da denne vare er udsolgt, kan den desværre ikke blive solgt til dig.<br>Du bedes <b>ikke</b> kontakte en admin for opfyldning, da vi selv sørger for det."
End if

sql = "UPDATE butik SET antal = " & antal & " - 1 WHERE varenavn = '" & varenavn & "'"
Conn.execute(sql)
sql = "INSERT INTO varer (brugerid,varenavn) values(" & brugerid & ",'" & varenavn & "')"
Conn.execute(sql)
sql = "UPDATE brugere SET profilpoint = " & cint(session("profilpoint")) & "-" & cint(rs("pris")) & " WHERE id = " & Session("id") & ""
Conn.execute(sql)

Response.Redirect "butik.asp?opfordring=Du har nu købt tingen " & varenavn & "."
End if
End if

På forhånd mange tak.



7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg har siddet og lavet en butik og har brugt en del tid på det nu.
Her til slut står jeg så med et sidste problem, nemlig at den ikke vil regne stykket ud.
Dine point - Tingens pris = XXXX
F.eks.
400 - 300 = 100

Istedet for giver den:
400 - 300 = -300

Det vil sige den sætter den til:
-Pris

Derudover, så hvis man ikke har råd eller der er udsolgt, siger den bare "Siden kan ikke vises.", altså den henstiller ikke til
butik.asp?opfordring=Udsolgt.
butik.asp?opfordring=Du har ikke råd.

Er der en der kan hjælpe?

Database:
brugere:
profilpoint, datatype: tal

butik:
pris, datatype: tal

Her kommer koden:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("database/database.mdb")
sql = "SELECT * FROM butik WHERE id=" & Request.QueryString("id") & ""
set rs = conn.execute(sql)
If not rs.EOF then

brugerid = Session("id")
varenavn = rs("varenavn")
pris = cint(rs("pris"))
profilpoint = cint(Session("profilpoint"))
antal = rs("antal")

If profilpoint > pris Then
Response.Redirect "butik.asp?opfordring=Denne vare koster '" & pris & "' profilpoint.Det vil sige at du ikke har råd til den og må spare nogle flere profilpoint op, før du kan købe den.Du kan selvfølgelig også vælge at købe noget andet."
End if
If antal = 0 Then
Response.Redirect "butik.asp?opfordring=Da denne vare er udsolgt, kan den desværre ikke blive solgt til dig.Du bedes ikke kontakte en admin for opfyldning, da vi selv sørger for det."
End if

sql = "UPDATE butik SET antal = " & antal & " - 1 WHERE varenavn = '" & varenavn & "'"
Conn.execute(sql)
sql = "INSERT INTO varer (brugerid,varenavn) values(" & brugerid & ",'" & varenavn & "')"
Conn.execute(sql)
sql = "UPDATE brugere SET profilpoint = " & cint(session("profilpoint")) & "-" & cint(rs("pris")) & " WHERE id = " & Session("id") & ""
Conn.execute(sql)

Response.Redirect "butik.asp?opfordring=Du har nu købt tingen " & varenavn & "."
End if
End if

På forhånd mange tak.

---------------------------------------------
Hej.
Prøv at skrive din SQL således for at få det rigtige resultat:

sql = "UPDATE brugere SET profilpoint = " & cint(session("profilpoint")) - cint(rs("pris")) & " WHERE id = " & Session("id") & ""

Noget andet: Jeg tror du har vendt denne her forkert:
"If profilpoint > pris Then" for det du skriver er jo profilpoint er større end pris og hvis det er tilfældet kan brugeren jo godt købe varen. Den skulle nok se sådan ud: "If profilpoint < pris Then".

Håber du kan bruge det og komme lidt videre.

M.v.h.
Kurt



Nu har jeg lavet det om, selvom jeg har flere profilpoint end tingen koster, siger den alligevel jeg ikke har råd.
Udover det, sætter den alligevel prisen til -pris.

Fold kodeboks ind/udKode 




Har du checket hvilken værdi der står i Profilpoint. Noget kunne måske tyde på at der stod 0 og derfor bliver prisen jo netop -pris og du har aldrig råd til at købe noget.
:-)

M.v.h.
Kurt



Værdien i profilpoint er det samme som de profilpoint man har, det siger jo sig selv.
F.eks.:
Værdien i profilpoint:
300

Standartværdien er 0, ja men det er vel ligemeget, så længe det ikke står i feltet når man køber?



Værdien i profilpoint er det samme som de profilpoint man har, det siger jo sig selv.
F.eks.:
Værdien i profilpoint:
300

Standartværdien er 0, ja men det er vel ligemeget, så længe det ikke står i feltet når man køber?



Kan I hjælpe eller hvad?!



Skidt så...



t