|
| Spg. i DB/ASP Fra : Nissen |
Dato : 12-01-03 01:28 |
|
Jeg har følgende felter i min DB:
kampid
navn
antal
På min asp side kan man bestille en billet til en fodboldkamp. Man indtaster
hvilken kamp, sit navn og det antal man ønsker.
Mit problem er at man maks. kan bestille 500 billetter. Kan man hver gang en
person bestiller et antal billetter indsætte det i min DB og hvis der ikke
er nok billetter tilbage skrive en fejl og hvor mange personen kan bestille.
Hvis de nu er solgt 495, skal den komme med en fejl og sige hvor mange
personen maks kan købe før der er udsolgt.
Håber i kan hjælpe lidt.
Tusind tak
| |
Christian M. Nielsen (12-01-2003)
| Kommentar Fra : Christian M. Nielsen |
Dato : 12-01-03 09:33 |
|
"Nissen" <n@n.n> wrote in message
news:3e20b67c$0$71638$edfadb0f@dread11.news.tele.dk...
> Jeg har følgende felter i min DB:
>
> kampid
> navn
> antal
>
> På min asp side kan man bestille en billet til en fodboldkamp. Man
indtaster
> hvilken kamp, sit navn og det antal man ønsker.
>
> Mit problem er at man maks. kan bestille 500 billetter. Kan man hver gang
en
> person bestiller et antal billetter indsætte det i min DB og hvis der ikke
> er nok billetter tilbage skrive en fejl og hvor mange personen kan
bestille.
>
> Hvis de nu er solgt 495, skal den komme med en fejl og sige hvor mange
> personen maks kan købe før der er udsolgt.
Du kan jo have et felt i tabellen som hedder AntalBilletterTilbage.
Når du opretter en ny kamp bliver den default sat til 500 og hver gang en
person køber x antal billetter, så trækker du det fra
"AntalBilletterTilbage"
Du kan så skrive på siden hvor man bestiller billetterne, hvor mange der er
tilbage. Hvis en person indtaster et højere antal billetter end der er
tilbage, kan du via et Java script (se tidligere indlæg i gruppen) fortælle
at der ikke er så mange billetter. Husk at du også skal kontrollere det via
ASP, da nogle brugere slår Java scripts fra.
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk ICQ: 25308942
Destiny is not a matter of chance it is a matter of choice
| |
Jakob Andersen (12-01-2003)
| Kommentar Fra : Jakob Andersen |
Dato : 12-01-03 12:04 |
|
"Nissen" <n@n.n> wrote
> Jeg har følgende felter i min DB:
>
> kampid
> navn
> antal
>
> På min asp side kan man bestille en billet til en fodboldkamp. Man
indtaster
> hvilken kamp, sit navn og det antal man ønsker.
>
> Mit problem er at man maks. kan bestille 500 billetter. Kan man hver gang
en
> person bestiller et antal billetter indsætte det i min DB og hvis der ikke
> er nok billetter tilbage skrive en fejl og hvor mange personen kan
bestille.
SUM funktionen i SQL kan hjælpe dig her, den tæller sammen værdier fra flere
felter. Dvs. hvis du vil tælle alle de billeter der er solgt bruger du:
SELECT SUM(antal) AS Total FROM <tabelnavn>
Herefter kan du blot skrive trække Total fra 500 og herefter har du hvor
mange billetter der er tilbage.
--
Jakob Andersen
| |
Nissen (12-01-2003)
| Kommentar Fra : Nissen |
Dato : 12-01-03 15:49 |
|
> > kampid
> > navn
> > antal
> SELECT SUM(antal) AS Total FROM <tabelnavn>
> Herefter kan du blot skrive trække Total fra 500 og herefter har du hvor
> mange billetter der er tilbage.
Kunne du vise et eks. eller hjælpe mig med min kode:
----------------------------------------------------------------------------
--------
<html>
<head>
<title>Opret bestilling</title>
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/fodb.mdb")
Conn.Open DSN
strSQL = "Insert into Bestilling (Kampid, Navn, Antal) values('" &
Request.Form("Kampid") & "' , '" & Request.Form("Navn") & "' , '" &
Request.Form("Antal") & "')"
Conn.Execute(strSQL)
conn.Close
Set rs = Nothing
%>
<h2>Tak for din Bestilling</h2>
</body>
</html>
----------------------------------------------------------------------------
--------
Jeg skal have sat en if sætning ind der så bruger din kode, men hvad gør
jeg.
Håber på lidt hjælp da jeg er ret ny.
Tak
N
| |
Nissen (12-01-2003)
| Kommentar Fra : Nissen |
Dato : 12-01-03 20:28 |
|
> > > kampid
> > > navn
> > > antal
>
> > SELECT SUM(antal) AS Total FROM <tabelnavn>
> > Herefter kan du blot skrive trække Total fra 500 og herefter har du hvor
> > mange billetter der er tilbage.
>
> Kunne du vise et eks. eller hjælpe mig med min kode:
> --------------------------------------------------------------------------
--
> --------
> <html>
> <head>
> <title>Opret bestilling</title>
> </head>
> <body>
> <%
> Set Conn = Server.CreateObject("ADODB.Connection")
> DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
> DSN = DSN & "DBQ=" & Server.MapPath("/fodb.mdb")
> Conn.Open DSN
>
> strSQL = "Insert into Bestilling (Kampid, Navn, Antal) values('" &
> Request.Form("Kampid") & "' , '" & Request.Form("Navn") & "' , '" &
> Request.Form("Antal") & "')"
> Conn.Execute(strSQL)
>
> conn.Close
> Set rs = Nothing
> %>
>
> <h2>Tak for din Bestilling</h2>
>
> </body>
> </html>
> --------------------------------------------------------------------------
--
> --------
>
> Jeg skal have sat en if sætning ind der så bruger din kode, men hvad gør
> jeg.
>
> Håber på lidt hjælp da jeg er ret ny.
>
> Tak
> N
>
>
Er der lidt hjælp gutter?
| |
Jakob Andersen (12-01-2003)
| Kommentar Fra : Jakob Andersen |
Dato : 12-01-03 20:54 |
|
"Nissen" <n@n.n> wrote
> Kunne du vise et eks. eller hjælpe mig med min kode:
<html>
<head>
<title>Opret bestilling</title>
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/fodb.mdb")
Conn.Open DSN
Dim objRS, Antal
Set objRS = objConn.Execute( "SELECT SUM(Antal) FROM Bestilling" )
Antal = CInt(objRS(0))
Set objRS = Nothing
If Request.Form( "Antal" ) > (500 - Antal) Then
Response.Write( "Der er desværre ikke det ønskede antal billeter til
rådighed." )
Response.Write( "Du kan højst bestille " & (500 - Antal) & " billeter,
gå tilbage og prøv igen." )
Else
strSQL = "Insert into Bestilling (Kampid, Navn, Antal) values('" &
Request.Form("Kampid") & "' , '" & Request.Form("Navn") & "' , '" &
Request.Form("Antal") & "')"
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
Response.Write("<h2>Tak for din Bestilling</h2>")
%>
</body>
</html>
--
Jakob Andersen
| |
Nissen (12-01-2003)
| Kommentar Fra : Nissen |
Dato : 12-01-03 21:38 |
|
Jeg får følgende fejl:
Microsoft VBScript runtime (0x800A01A8)
Object required: ''
I linien:
Set objRS = objConn.Execute( "SELECT SUM(Antal) FROM Bestilling" )
Hvad kan det skyldes?
| |
Jakob Andersen (12-01-2003)
| Kommentar Fra : Jakob Andersen |
Dato : 12-01-03 21:54 |
|
"Nissen" <n@n.n> wrote
> Set objRS = objConn.Execute( "SELECT SUM(Antal) FROM Bestilling" )
Det skal være
Set objRS = Conn.Execute( "SELECT SUM(Antal) FROM Bestilling" )
Jeg skrev bare af refleks objConn da jeg plejer at kalde mine
connectionobjekter dette.
--
Jakob Andersen
| |
Nissen (12-01-2003)
| Kommentar Fra : Nissen |
Dato : 12-01-03 22:10 |
|
<html>
<head>
<title>Opret bestilling</title>
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/fodb.mdb")
Conn.Open DSN
Dim objRS, Antal
Set objRS = Conn.Execute( "SELECT SUM(Antal) FROM Bestilling" )
Antal = CInt(objRS(0))
Set objRS = Nothing
If Request.Form( "Antal" ) > (500 - Antal) Then
Response.Write( "Der er desværre ikke det ønskede antal billeter til
rådighed." )
Response.Write( "Du kan højst bestille " & (500 - Antal) & " billeter,
gå tilbage og prøv igen." )
Else
strSQL = "Insert into Bestilling (Kampid, Navn, Antal) values('" &
Request.Form("Kampid") & "' , '" & Request.Form("Navn") & "' , '" &
Request.Form("Antal") & "')"
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
Response.Write("<h2>Tak for din Bestilling</h2>")
%>
</body>
</html>
Giver stadig samme problem med ovenstående kode.
Har du flere løsninger?
Tak
| |
Nissen (13-01-2003)
| Kommentar Fra : Nissen |
Dato : 13-01-03 14:42 |
|
> Det skal være
>
> Set objRS = Conn.Execute( "SELECT SUM(Antal) FROM Bestilling" )
Hej igen.
Undskyld det sene svar og den forkerte tråd i går.
Jeg har nu nedenstående kode. Mit problem er at jeg vælger et antal
billetter på første side "navnet på billet-feltet er antal".
Men selvom der kun er bestilt 490 billetter til en kamp kan jeg ikke
bestille 2 billetter mere. Jeg får teksten "Der er desværre ikke........."
Men jeg burde jo få at vide "Tak for din Bestilling".
Det kører næsten, så jeg håber du har lidt mere hjælp.
Tak
N
----------------------------------------------------------------------------
-
Dim objRS, Antal
Set objRS = Conn.Execute( "SELECT SUM(Antal) FROM Bestilling where kampid="
& Request.Form("kampid") &"" )
Antal = CInt(objRS(0))
Set objRS = Nothing
If Request.Form( "antal" ) > (500 - Antal) Then
%>
<table border="2" cellpadding="40" cellspacing="2" summary=""
align="center">
<tr><td><%Response.Write( "Der er desværre ikke det ønskede antal billeter
til rådighed." )%></td></tr>
</table>
<%
Else
strSQL = "Insert into Bestilling (Kampid, Navn, Antal) values('" &
Request.Form("Kampid") & "' , '" & Request.Form("Navn") & "' , '" &
Request.Form("Antal") & "')"
Conn.Execute(strSQL)
%>
<table border="2" cellpadding="40" cellspacing="2" summary=""
align="center">
<tr><td><%Response.Write( "Tak for din Bestilling" )%></td></tr>
</table>
<%
End If
Conn.Close
Set Conn = Nothing
%>
| |
Nissen (13-01-2003)
| Kommentar Fra : Nissen |
Dato : 13-01-03 14:51 |
|
> > Det skal være
> >
> > Set objRS = Conn.Execute( "SELECT SUM(Antal) FROM Bestilling" )
>
> Hej igen.
>
> Undskyld det sene svar og den forkerte tråd i går.
>
> Jeg har nu nedenstående kode. Mit problem er at jeg vælger et antal
> billetter på første side "navnet på billet-feltet er antal".
>
> Men selvom der kun er bestilt 490 billetter til en kamp kan jeg ikke
> bestille 2 billetter mere. Jeg får teksten "Der er desværre ikke........."
>
> Men jeg burde jo få at vide "Tak for din Bestilling".
>
> Det kører næsten, så jeg håber du har lidt mere hjælp.
>
> Tak
> N
Tror det har noget at gøre med sætningen:
If Request.Form( "antal" ) > (500 - Antal) Then
For hvis jeg har bestilt 490 billetter til en kamp og ønsker at bestille 2
mere ser formlen min if sætning sådanne ud:
if 2 > 500-490 then
"Der er desværre ikke........."
else
"Tak for din Bestilling"
Den skulle jo skrive "tak for din bestilling" og ikke "Der er desværre
ikke........."
Tak igen
| |
Jens Gyldenkærne Cla~ (12-01-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 12-01-03 22:05 |
|
Nissen citerede hele sit eget indlæg og skrev derefter:
> Er der lidt hjælp gutter?
Lige et godt råd. Du får ikke hurtigere eller bedre hjælp ved at
sende "reminder"-indlæg - snarere tværtimod.
Folk svarer på de indlæg de har lyst til. Nogle gange kommer der
svar efter få minutter, andre gange først efter flere dage, og
nogle gange kommer der slet ikke svar.
Det nytter ikke noget at blive irriteret, sur eller utålmodig - de
folk der skriver på usenet gør det frivilligt og du har (som alle
andre) ikke krav på noget svar.
Når du citerer hele dit foregående indlæg alene for at tilføje én
ny linje bryder du desuden retningslinjerne for god citatteknik (se
fx min signatur) - der er ikke nogen grund til at man skal læse de
samme knap 50 linjer igen for at forstå din tilføjelse.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Jens Gyldenkærne Cla~ (13-01-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 13-01-03 00:21 |
|
Nissen skrev:
[citat flyttet]
> Giver stadig samme problem med ovenstående kode.
Hvilket problem? Det ville stadig være _meget_ lettere at svare på
dine indlæg hvis du fortalte hvad der var galt.
Forslag: brug option explicit på siden, så får du lettere ved at
finde fejl. Se hvordan det gøres her:
< http://www.asp-faq.dk/article/?id=9>
Et par generelle kommentarer til din kode følger:
> Set objRS = Conn.Execute( "SELECT SUM(Antal) FROM Bestilling"
Ret mig hvis jeg tager fejl, men kan der ikke bestilles 500
billetter _pr kamp_? Ovenstående sumberegning tæller billetter for
alle kampe på én gang - hvis du kun vil tælle for en enkelt kamp
skal du tilføje en where-klausul:
Dim countSQL
countSQL = "SELECT SUM(Antal) as antal FROM Bestilling WHERE kampID
= " & Request.Form("kampID")
> strSQL = "Insert into Bestilling (Kampid, Navn, Antal)
> values('" &
> Request.Form("Kampid") & "' , '" & Request.Form("Navn") & "' ,
> '" & Request.Form("Antal") & "')"
Hvis antal er et talfelt skal der ikke anførselstegn omkring
værdien. Hvis antal derimod er et tekstfelt kan du ikke lave en
sumberegning som den der er angivet højere oppe.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Jens Gyldenkærne Cla~ (13-01-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 13-01-03 14:59 |
|
Nissen skrev:
> Men selvom der kun er bestilt 490 billetter til en kamp kan
> jeg ikke bestille 2 billetter mere. Jeg får teksten "Der er
> desværre ikke........."
Prøv at typecaste dit formrequest:
> If Request.Form( "antal" ) > (500 - Antal) Then
Rettes til:
> If Cint(Request.Form( "antal" )) > (500 - Antal) Then
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Nissen (13-01-2003)
| Kommentar Fra : Nissen |
Dato : 13-01-03 16:33 |
|
> Prøv at typecaste dit formrequest:
>
> > If Request.Form( "antal" ) > (500 - Antal) Then
>
> Rettes til:
>
> > If Cint(Request.Form( "antal" )) > (500 - Antal) Then
Kanon, nu virker det.
Hvad vil det sige at typecaste og hvordan løste det mit problem?
Tak
| |
Jakob Andersen (13-01-2003)
| Kommentar Fra : Jakob Andersen |
Dato : 13-01-03 16:39 |
|
"Nissen" <n@n.n> wrote
> Hvad vil det sige at typecaste og hvordan løste det mit problem?
Der finde forskellige måder hvorpå to variabler bliver lagt sammen, f.eks.
vil der med strengværdier gælde nedenstående:
"1" + "2" = "12"
Hvorimod der med tal(int) vil gælde:
1 + 2 = 3
Da VBScript ikke ved hvad typen af det du henter ud fra formularen er
angiver du med funktionen Cint() at denne værdi skal opfattes som en int.
--
Jakob Andersen
| |
|
|