[ASP] if then statement werkt niet. (Newbie)

Pagina: 1
Acties:

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
He gasten. Ik probeer met het onderstaande ASP code een voorstelling op te zoeken uit een Mysql database. Als ik een bestaande voorstelling invoer en submit druk dan wordt ik geredirect naar de fout zoek voorstelling.html pagina in plaats van dat ie de naam van de voorstelling weergeeft. En als ik een verkeerde voorstelling invoer en submit dan geeft ie een error aan in line 18. Zien jullie iets raars in mijn stukje ASP code?

[script]
frmVoorstellingen=Request.Form("Naam")

Set connectionToDatabase=Server.CreateObject("ADODB.Connection")
connectionToDatabase.ConnectionTimeout=60
connectionToDatabase.Open "DSN=test"

Set recordSet=Server.CreateObject("ADODB.Recordset")
recordSet.Open "SELECT * FROM voorstelling WHERE NAAM='"& frmVoorstellingen &"'",connectionToDatabase

if recordSet("NAAM")=Request.Form("naam") then <-------- regel 18
response.Write recordSet("NAAM")
else
response.Redirect "fout voorstelling zoek.html"
end if


connectionToDatabase.Close
Set connectionToDatabase=Nothing
%>

[/script]

Assume there are no rules and it's one big free for all


Verwijderd

ehh wat is regel 18? :)

Verwijderd

ik ken geen ASP hoor, maar moet er bij een conditionele vergelijking niet == staan ipv. = ?

(dat is bij praktisch alle andere talen wel zo iig...)

[edit]
Hmmz, niet?
Weer een reden voor mij om géén ASP te gaan leren.

Verwijderd

nee 't is geen C :)

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
niet volgens het boek

Assume there are no rules and it's one big free for all


Verwijderd

waarschijnlijk is je recordset EOF

Dus je meot misschien dit doen :

If Not(recordSet.EOF) Then
' vo0rstelling gevonden:
' // doe wat je wil als de voorstelling is gevonden
Else
response.Redirect "fout voorstelling zoek.html"
End if

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Hmm ik zal het even proberen morgen als ik weer op school ben

Assume there are no rules and it's one big free for all


  • rambo-2001
  • Registratie: November 2000
  • Laatst online: 02-01-2024

rambo-2001

be anonymous

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
frmVoorstellingen=Request.Form("Naam")

Set connectionToDatabase=Server.CreateObject("ADODB.Connection")
connectionToDatabase.ConnectionTimeout=60
connectionToDatabase.Open "DSN=test"

Set recordSet=Server.CreateObject("ADODB.Recordset")
recordSet.Open "SELECT * FROM voorstelling WHERE NAAM='"& frmVoorstellingen &_
"'",connectionToDatabase

DO WHILE NOT recordset.eof

if recordSet("NAAM")=Request.Form("naam") then <-------- regel 18
response.Write recordSet("NAAM")
else
response.Redirect "fout voorstelling zoek.html"
end if

recordset.movenext
loop

connectionToDatabase.Close
Set connectionToDatabase=Nothing
%>

cs skill - making a desert eagle out of tooth picks


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Cheatah: ik ken geen ASP hoor, maar moet er bij een conditionele vergelijking niet == staan ipv. = ?

(dat is bij praktisch alle andere talen wel zo iig...)

Hmmz, niet?
Weer een reden voor mij om géén ASP te gaan leren.
Als een assignment geen waarde heeft is het in principe geen enkel probleem op de = ook als vergelijkings operator te gebruiken. De == is dan in feite alleen maar een belasting van de programmeur om het parsen makkelijker te maken :) .

Ik weet alleen niet of in VB een assignment ook een waarde heeft. Als dit wel zo is, kunnen er erg ambigue en onduidelijk situaties ontstaan..

Overigens is een andere veel gebruikte methode om juist de assignment anders te schrijven en deze als 'wordt' uit te spreken. In veel gevallen wordt dan := gebruikt voor een assignemt en als vergelijkings operator gewoon = :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Naar aanleiding van m'n vorige post: weet iemand of in VB een assigment ook een waarde heeft en dus als expressie gebruikt kan worden? (sorry geen zin om te op te zoeken :o ).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op zondag 16 december 2001 20:22 schreef mbravenboer het volgende:
Naar aanleiding van m'n vorige post: weet iemand of in VB een assigment ook een waarde heeft en dus als expressie gebruikt kan worden? (sorry geen zin om te op te zoeken :o ).
Nee, dus a=b=10 kan niet.

Dat is op zich ook wel logisch als je het verschil in ontwerp van talen als C en talen als VB bekijkt: talen als C zijn voortgekomen uit abstracties van assembly code. Het switch statement is een goed voorbeeld: er wordt een sprong-tabel gegenereerd.

In vb (select statement) is het meer een vervanging als je veel If statements hebt. Je kunt nl. ook Case 12 To 1003, Is > 2900 gebruiken.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Doekman: Nee, dus a=b=10 kan niet.
Ok, dat scheelt dan weer ;) .
Dat is op zich ook wel logisch als je het verschil in ontwerp van talen als C en talen als VB bekijkt: talen als C zijn voortgekomen uit abstracties van assembly code.
Ik ken VB verder niet echt dus kan daar verder niet over oordelen...

Op zich maakt het natuurlijk ook niet zo heel erg veel uit voor het abstractie niveau van een taal of een assignment een waarde zou moeten zijn of niet. Een assignment is in principe gewoon een store operatie en kan dus naar behoefte wel of geen waarde hebben... toch?

Overigens vind ik het niet mooi als een assignment een waarde kan hebben, maar dat terzijde :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op zondag 16 december 2001 20:46 schreef mbravenboer het volgende:

[..]

Overigens vind ik het niet mooi als een assignment een waarde kan hebben, maar dat terzijde :) .
Och, ik vind het af en toe wel handig, maar compound assignment operators vind ik superhandig:
s+='hoi';
is toch een stuk leesbaarder dan
s=s+'hoi'

Nee, VB heeft m'n voorkeur niet :r

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Doekman: maar compound assignment operators vind ik superhandig:
s+='hoi';
is toch een stuk leesbaarder dan
s=s+'hoi'
Idd, die kunnen wel handig zijn, maar dat heeft in principe niet zoveel met het 'expressie-zijn' van assignments te maken... Het is in feite gewoon een beetje syntaxtische suiker :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Wat rambo-2001 heeft gepost werkt niet. Als ik iets zoek dat wel bestaat dan geeft ie netjes de naam weer zoals het hoort te werken maar als ik iets invoer dan krijg in nu een blanco pagina in plaats van "fout zoek voorstelling.html" :(

Rambo-2001 had dit gepost.
code:
1
2
3
4
5
6
7
8
9
10
DO WHILE NOT recordset.eof

if recordSet("NAAM")=Request.Form("naam") then 
    response.Write recordSet("NAAM")
else
    response.Redirect "fout voorstelling zoek.html"
end if

recordSet.movenext
loop

en eerst was het zo.
code:
1
2
3
4
5
if recordSet("NAAM")=Request.Form("naam") then
response.Write recordSet("NAAM")
else
response.Redirect "fout voorstelling zoek.html"
end if

en het werkt dus nog steeds niet. iemand nog een idee? :?

Assume there are no rules and it's one big free for all


Verwijderd

Op zondag 16 december 2001 21:08 schreef mbravenboer het volgende:

[..]

Idd, die kunnen wel handig zijn, maar dat heeft in principe niet zoveel met het 'expressie-zijn' van assignments te maken... Het is in feite gewoon een beetje syntaxtische suiker :) .
Aan de ene kant heb je natuurlijk helemaal gelijkt. Maar aan de andere kant:

s=s+'hoi'

zorgt in VB ervoor dat van s een kopie wordt gemaakt, 'hoi' er aan wordt vastgeplakt, en die waarde wordt weer aan s toegewezen (nadat de oude waarde van s wordt weggegooid).

OK, dit valt onder het vage gebied tussen taaldefinitie en compileroptimalisatie :)

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Heeft iemand anders een idee hoe ik iets opzoek in een database. Ik bedoel dan een andere manier dan dat ik heb gebruikt.

Assume there are no rules and it's one big free for all


  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Ok. Op een een of andere manier werkt response.redirect niet dus heb ik dit maar gedaan.
code:
1
2
3
4
5
6
7
8
9
10
Do Until RecordSet.EOF

if recordSet("NAAM")=Request.Form("naam") then 
    response.Write recordSet("NAAM")
else
    response.Write "De voorstelling die u probeert te zoeken bestaat niet of u heeft het verkeert ingevoerd."
end if

recordSet.movenext
loop

Maar het is case sensitive. :( hoe kan ik dit niet case sensitive maken?

Assume there are no rules and it's one big free for all


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
If LCase(Recordset("NAAM")) = LCase(Request.Form("Naam"))

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

met sql:

"select * from voorstellingen where naam='tralalalala'"

Die geeft alleen de records terug die jij wilt. Je hoeft daarna toch niet meer te zoeken?

Localhost, sweet localhost


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Je bent aan het zoeken met ASP-code. Dat is per definitie fout, daar hebben we een database(server?) voor.
In je code gaf je aan de database al een zoekopdracht.
Daarna hoef je dus niet meer te zoeken.
Als je recordset leeg is, dan is ie NIET gevonden anders wel.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
frmVoorstellingen=Request.Form("Naam")
Set connectionToDatabase=Server.CreateObject("ADODB.Connection")
connectionToDatabase.ConnectionTimeout=60
connectionToDatabase.Open "DSN=test"
Set recordSet=Server.CreateObject("ADODB.Recordset")

recordSet.Open "SELECT * FROM voorstelling WHERE NAAM='"& frmVoorstellingen &"'",connectionToDatabase

if recordSet.bof and recordset.eof ' hij is zowel VOOR het eerste record en NA het laatste record. 
                         ' Dat wil zeggen dat 'ie leeg is
  response.Write "Niet gevonden."
else
  response.Write recordSet("NAAM")
end if

connectionToDatabase.Close
Set connectionToDatabase=Nothing

edit:
... te veel om op te noemen ...

Localhost, sweet localhost


  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Op zondag 16 december 2001 14:50 schreef Cheatah het volgende:
ik ken geen ASP hoor, maar moet er bij een conditionele vergelijking niet == staan ipv. = ?

(dat is bij praktisch alle andere talen wel zo iig...)

[edit]
Hmmz, niet?
Weer een reden voor mij om géén ASP te gaan leren.
Met ASP kun je verschillende scripting-talen gebruiken, zoals VbScript, JavaScript, PerlScript, etc. Dus je kunt altijd een scriptingtaal kiezen die wel onderscheid maakt tussen = en ==.

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Yilkee: post je Foutmelding eens, daar kunnen we al een stuk meer mee.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Ok ik kan nu zoeken zonder dat het case sensitive is.
Met behulp van de onderstaande code. Maar nu geeft ie "De voorstelling die u probeert te zoeken bestaat niet of u heeft het verkeert ingevoerd." niet weer als ik zomaar iets invoer. in plaats daarvan krijg ik een witte pagina.

Dit heb ik nu
code:
1
2
3
4
5
6
7
8
9
10
11
Do Until RecordSet.EOF

if LCase(Recordset("NAAM")) = LCase(Request.Form("Naam")) then 
    response.Write recordSet("NAAM")
else
    response.Write "De voorstelling die u probeert te zoeken bestaat niet of u heeft het verkeert ingevoerd."
end if

recordSet.movenext
loop
recordset.close

Assume there are no rules and it's one big free for all


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Zou je twee dingen willen doen:
- voortaan je code indenten, ook binnen een do..loop
- Even de code die ik hierboven heb geplakt proberen. Naar mijn idee doe je namelijk iets fundamenteel fout.

Localhost, sweet localhost


  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Rustig aan man.
ik heb je code geprobeert en ik krijg dit.

Error Type:
Microsoft VBScript compilation (0x800A03F9)
Expected 'Then'
/test2.asp, line 16, column 34

en wat bedoel je met: voortaan je code indenten

zelfs jij maakt fouten!
Als ik then erbij plaats dan werkt je code wel.

Assume there are no rules and it's one big free for all


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

Op maandag 17 december 2001 10:41 schreef Yilkee het volgende:
Rustig aan man.
ik heb je code geprobeert en ik krijg dit.

Error Type:
Microsoft VBScript compilation (0x800A03F9)
Expected 'Then'
/test2.asp, line 16, column 34
Spreekt voor zichzelf...
en wat bedoel je met: voortaan je code indenten
Inspringen.
Dus niet:
Do
doe_iets-hierzo
Loop

maar wel:
code:
1
2
3
4
5
Do
    ' hier gaan we ... doen
    doe_iets
    doe_misschien_nog_meer 
Loop

Exact expert nodig?


Verwijderd

Op zondag 16 december 2001 14:48 schreef Yilkee het volgende:
He gasten. Ik probeer met het onderstaande ASP code een voorstelling op te zoeken uit een Mysql database. Als ik een bestaande voorstelling invoer en submit druk dan wordt ik geredirect naar de fout zoek voorstelling.html pagina in plaats van dat ie de naam van de voorstelling weergeeft. En als ik een verkeerde voorstelling invoer en submit dan geeft ie een error aan in line 18. Zien jullie iets raars in mijn stukje ASP code?

[script]
frmVoorstellingen=Request.Form("Naam")

Set connectionToDatabase=Server.CreateObject("ADODB.Connection")
connectionToDatabase.ConnectionTimeout=60
connectionToDatabase.Open "DSN=test"

Set recordSet=Server.CreateObject("ADODB.Recordset")
recordSet.Open "SELECT * FROM voorstelling WHERE NAAM='"& frmVoorstellingen &"'",connectionToDatabase

if ""&recordSet("NAAM")= ""&Request.Form("naam") then ' ""& toegevoegd om string met string te vergelijken
response.Write recordSet("NAAM")
else
response.Redirect "fout voorstelling zoek.html"
end if


connectionToDatabase.Close
Set connectionToDatabase=Nothing
%>

[/script]

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Gasten bedankt.

Ik wou 2 weken geleden al een ASP 3.0 reference book halen maar verwijs had alleen maar ASP.net boeken.

Assume there are no rules and it's one big free for all

Pagina: 1