Je code is inderdaad euhm ... niet optimaal

Zelf zou ik het zo doen denk ik:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| Dim sSQL, rsProducts, arProducts, sOrderNr, iOrderNr
Dim sMailBody
sOrderNr = Request.queryString( "orderno" )
' beveiligen tegen SQL injectie
On Error Resume Next
Err.Clear()
iOrderNr = cInt( sOrderNr )
If Err.Number <> 0 Then
With Response
.Write "Ongeldig ordernummer opgegeven"
.Flush
.End
End With
End If
On Error Goto 0
' Vlieg naar je databeest en haal alles op wat je wilt hebben. Het is trouwens een goed idee om de kolommen
' die je nodig hebt expliciet op te geven, dan heb je een kleinere recordset aangezien je nu maar 1 kolom gebruikt.
' Ook van je datamodel snap ik niet zo veel, is het niet handiger om een aparte tabel met je producten te hebben
' en een aparte tabel voor je orders en dan te koppelen op productid? Nu krijg je super veel redunantie in je
' order tabel. (Of is het een extra veld wat evt. comments bij het bestelde product opslaat?)
sSQL = "SELECT * FROM orders WHERE orderno=" & cStr( iOrderNr )
Set rsProducts = Server.createObject( "ADODB.Recordset" )
rsProducts.Open sSQL, Conn
If Not rsProducts.Eof Then
arProducts = rsProducts.getRows()
End If
Set rsProducts = Nothing
If Not isEmpty( arProducts ) Then
' Ren door alle resultaten en plak de omschrijving in je tabel
Dim x
For x = 0 To uBound( arProducts, 2 )
sMailBody = sMailbody & "<td>"& arProducts( zero_based_kolom_nummer_hier, x ) &"</td>"
Next
' Ik weet niet hoe jou output er precies uit moet zien, maar voor het idee:
sMailBody = "<table><tr>" & sMailBody & "</tr></table>"
Else
' Geen beschrijvingen gevonden, geef hier een melding van
sMailBody = "<p>Er zijn geen items gevonden voor het opgegeven ordernummer</p>"
End If
' Maak er even correcte HTML van
sMailBody = "<html><head><title>Details voor ordernummer "& cStr( iOrderNr ) & ".</title></head>" &_
"<body>" & sMailBody & "</body></html>" |
Ik heb wel erg veel voor gezegd, maar kon even niet op die code kijken

Ook is het wel handig om een error-check om het stukje te zetten waar je de gegevens uit je database probeert te halen voor het geval daar *iets* mis gaat.
[
Voor 10% gewijzigd door
wizzkizz op 23-01-2006 11:17
]
Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.