|
| paging med Request.QueryString Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 10:52 |
|
Hejsa
Jeg har nu brugt 10 timer for at gennemskue det her meen det går ikke
så godt.
Måske her en en som lige ved hvad man gør?
Jeg laver udtræk fra DB således:
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
vare_id = request.QueryString("vare_id")
Set rs6 = Server.CreateObject("ADODB.RecordSet")
strSQL6 = "SELECT * FROM kunder where (vare_id='" & Request.QueryString
("vare_id")& "')"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath
("XXX.mdb")
rs6.Open strSQL6, strDSN, 1%>
Alså med Request.QueryString
Det giver fejl;
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
/allan/shop/pagn.asp, line 11
Hvis jeg så give ID uden Request.QueryString
sådan her
strSQL6 = "SELECT * FROM under_varegruppe where vare_id=1"
Ja så virker det hvordan får jeg den til at acceptere
Request.QueryString?
Håber en kan hjælpe
| |
Martin Jensen (22-11-2008)
| Kommentar Fra : Martin Jensen |
Dato : 22-11-08 19:37 |
|
wrote in dk.edb.internet.webdesign.serverside.asp:
> strSQL6 = "SELECT * FROM kunder where (vare_id='" &
Request.QueryString
> ("vare_id")& "')"
prøv at slette de to '', så du i stedet skriver
strSQL6 = "SELECT * FROM kunder where (vare_id=" &
Request.QueryString("vare_id")& ")"
Der skal ikke være ' omkring tal.
Håber at det hjælper, ellers så skriv igen.
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 11:48 |
|
On 22 Nov., 18:37, Martin Jensen <h...@ingen.dd> wrote:
> wrote in dk.edb.internet.webdesign.serverside.asp:> strSQL6 = "SELECT * FROM kunder where (vare_id='" &
>
> Request.QueryString
>
> > ("vare_id")& "')"
>
> prøv at slette de to '', så du i stedet skriver
>
> strSQL6 = "SELECT * FROM kunder where (vare_id=" &
> Request.QueryString("vare_id")& ")"
>
> Der skal ikke være ' omkring tal.
>
> Håber at det hjælper, ellers så skriv igen.
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! => http://www.html.dk/tutorials
Hej Martin
Hmm nej det hjælper heller ikke
Andre foreslag? Det må da være defineret et sted hvordan ODBC driver
skal have en Request.QueryString ?
| |
Jørn Andersen (22-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 22-11-08 19:45 |
|
On Sat, 22 Nov 2008 09:52:21 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
>vare_id = request.QueryString("vare_id")
>Set rs6 = Server.CreateObject("ADODB.RecordSet")
>strSQL6 = "SELECT * FROM kunder where (vare_id='" & Request.QueryString
>("vare_id")& "')"
<snip>
>Alså med Request.QueryString
>Det giver fejl;
>Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
>
>ODBC driver does not support the requested properties.
>
>/allan/shop/pagn.asp, line 11
Hvis du vil se, hvad fejlnumrene betyder, så kig:
<url: http://aspfaq.com/>
Put nummeret i søgefeltet, og du vil ofte finde noget brugbart.
<url:
http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-80040e21-errors.html>
>Hvis jeg så give ID uden Request.QueryString
>sådan her
>strSQL6 = "SELECT * FROM under_varegruppe where vare_id=1"
>
>Ja så virker det hvordan får jeg den til at acceptere
>Request.QueryString?
De to SQL-strenge er ikke ens. Den første har ' ' om værdien (hvilket
bruges ved tekstfelter). Den der virker har ikke.
Prøv:
vare_id = request.QueryString("vare_id")
strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
Jeg vil dog gøre opmærksom på, at du ikke har nogen form for validering
på dit input, hvilket gør det sårbårt over for SQL-injektion.
Se:
<url: http://www.asp-faq.dk/article/?id=95>
Good luck!
--
Jørn Andersen,
Brønshøj
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 12:05 |
|
Hej Jørgen
Jeg ved sådanset god hvad fejlen er ;)
Probleme er den rigtige sql til paging ....
> Hvis du vil se, hvad fejlnumrene betyder, så kig:
> <url: http://aspfaq.com/>
> Put nummeret i søgefeltet, og du vil ofte finde noget brugbart.
>
> <url: http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-80040e21-er...>
>
> >Hvis jeg så give ID uden Request.QueryString
> >sådan her
> >strSQL6 = "SELECT * FROM under_varegruppe where vare_id=1"
>
> >Ja så virker det hvordan får jeg den til at acceptere
> >Request.QueryString?
>
> De to SQL-strenge er ikke ens. Den første har ' ' om værdien (hvilket
> bruges ved tekstfelter). Den der virker har ikke.
>
> Prøv:
> vare_id = request.QueryString("vare_id")
> strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
Hmm virker heller ikke
> Jeg vil dog gøre opmærksom på, at du ikke har nogen form for validering
> på dit input, hvilket gør det sårbårt over for SQL-injektion.
> Se:
> <url: http://www.asp-faq.dk/article/?id=95>
Dette bruges ikke i login regi ;)
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj
Jeg ved at det rugtige ID kommer med problemet er på en måde at når
jeg bruger paging virker det ikke med Request.QueryString henter jeg
bare normalt fra DB virker alt fint det er KUN når jeg pagner ;)
| |
Jørn Andersen (22-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 22-11-08 21:43 |
|
On Sat, 22 Nov 2008 11:04:32 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
>> Jeg vil dog gøre opmærksom på, at du ikke har nogen form for validering
>> på dit input, hvilket gør det sårbårt over for SQL-injektion.
>> Se:
>> <url: http://www.asp-faq.dk/article/?id=95>
>Dette bruges ikke i login regi ;)
Det er sådan set lige meget - det er bare et eksempel.
Humlen er, om scriptet kan kaldes med en Querystring, der resulterer i
en SQL WHERE-betingelse, som viser *alt*.
I nogle tilfælde er dette ikke et (sikkerheds-)problem, i andre kan det
resultere i, at brugeren ser ting, vedkommende ikke bør se.
Værst er det selvfølgelig, når man bruger INSERT-, UPDATE- eller
DELETE-forespørgsler.
Mvh. Jørn
--
Jørn Andersen,
Brønshøj
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 20:17 |
|
On 23 Nov., 02:47, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 17:52:02 -0800 (PST),
>
>
>
>
>
> multi-sitemaster-...@hotmail.com wrote:
> >En anden ting med test siderne det så galt nåt jeg sætter det ind i
> >mit site :(
>
> >Linksene i venstre siden ved varegrupper
> > http://test.webex.dk/allan/shop/default.asp
>
> >Her kalder jeg vare_id via page=indhold.asp hvor jeg her includere
> >siden!
>
> >Så jeg siger
>
> >Hvis vare_id er større end 0 så
> ><%if request.querystring("vare_ID")>0 then%>
> ><!--#include file ="pagn.asp"-->
>
> >men den siger
> >Microsoft VBScript runtime error '800a000d'
> >Type mismatch: '[string: "indhold.asp"]'
> >/allan/shop/pagn.asp, line 3
>
> >line 3 = If isNumeric(intPage) = False Or intPage < 1 Then
>
> Det har jeg ikke overblik nok til at gætte.
>
> Men ... bladre tilbage ...
> Du havde:
> <%
> intPage = Request("page")
>
> If isNumeric(intPage) = False Or intPage < 1 Then
> intPage = 1
> End If
> %>
>
> Så hvis du kalder med:
> ?page=indhold.asp
> - så er den i hvertfald ikke numerisk.
>
> Desuden er det lidt bredt at blot at bruge Request("page").
> Ulempen er, at den vil kigge i alle Request collections:
> Request.Form
> Request.QueryString
> Request.Cookies
> Request.ServerVariables
> ...
> - hvilket er spild af serverkraft og et potentielt sikkerhedshul.
>
> Brug:
> <%
> intPage = Request.QueryString("page")
> If IsNumeric(intPage) Then
> intPage = CLng(intPage)
> If intPage < 1 Then intPage = 1
> Else
> intPage = 1
> End If
> %>
> - så har du både sikret dig, at intPage er typecastet som et tal, og at
> det er et helt tal, og at det ikke er under 1.
>
> Og du skal være klar over, at din include bliver inkluderet under alle
> omstændigheder - uanset om din If er sand eller ej.
> Når en .asp-side bliver parset, indlæser den først siden og de
> inkluderede filer. Først herefter begynder den at fortolke koden.
>
> Når jeg siger, at den bliver inkluderet under alle omstændigheder, så
> betyder det ikke, at koden i den inkluderede fil bliver afviklet. Det
> bliver den kun, hvis If'en er sand. Men det betyder, at koden skal være
> uden fejl, når den inkluderede og den inkluderende ses i sammenhæng.
>
> >hvad kan problemet være her ?
>
> Der er nok ikke andet for end at gå systematisk frem.
> Udskriv de tvivlsomme variable med Response.Write / .End (som med
> strSql6) og følg dem ned gennem dit script.
> På den måde sikrer du dig, hvad deres faktiske værdier er - og ikke kun
> hvad du tror de er.
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj- Skjul tekst i anførselstegn -
>
> - Vis tekst i anførselstegn -
Hej Jørgen
Jeg vil sgu godt lige takke dig du er ginial
> <%
> intPage = Request.QueryString("page")
> If IsNumeric(intPage) Then
> intPage = CLng(intPage)
> If intPage < 1 Then intPage = 1
> Else
> intPage = 1
> End If
> %>
Dette var løsningen nu virker det phew very nice.
Og tak for alle de guldkorn du oxo lige kom med.....
Der så en sidste ting som jeg nok må vente med ;)
Men nu styre jeg så hvor mange poster den viser nedad men vil og gerne
have den til at loope 3 vandret.
Før jeg bruge paging så min loop således ud
<%do until rs.eof or rs.bof%>
<%
tal = 0
do until rs2.eof or tal = 3
%>
Det jeg vil loope
<%rs2.movenext
tal = tal + 1
loop%>
<%loop%>
Dette virker men der nok en anden måde at gøre det på ;)
Mit problem er at jeg skal have en loop ind i en loop?
Pagn.asp
loopen i denne ser således ud
If Not (rs6.BOF Or rs6.EOF) Then
rs6.PageSize = 2
rs6.AbsolutePage = intPage
intRecCount = rs6.PageSize
intPageCount = rs6.PageCount
if rs6.PageCount = 1 then
Response.Write " "
else
For intNum = 1 To intPageCount
Response.Write "<a href=default.asp?page=" & intNum & "&vare_id="
&rs6("vare_id")&" >" & intNum & "</a> "
Next
End If
Response.Write "<p>"
Do While Not rs6.EOF And intRecCount > 0
jeg har forsøgt at sætte mig gamle loop ind men uden held.
?
| |
Jørn Andersen (23-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 23-11-08 05:56 |
|
On Sat, 22 Nov 2008 19:17:04 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
>Jeg vil sgu godt lige takke dig du er ginial
Velbekomme - er glad for at det lykkedes. Jeg kender godt det med at
have siddet for mange timer og mistet overblikket ...
>Der så en sidste ting som jeg nok må vente med ;)
>Men nu styre jeg så hvor mange poster den viser nedad men vil og gerne
>have den til at loope 3 vandret.
Inden du kommer for langt med den del, vil jeg bede dig overveje dit
HTML.
Du har et hav af tabeller indeni hinanden - jeg talte det til 26
tabeller på en af siderne!
Det er fuldstændig umuligt at finde rundt i, når man skal finde og rette
fejl. Det er også browserens mening
Så inden du kommer alt for langt, vil jeg foreslå dig at sætte dig lidt
ind i nutidig HTML layout.
Tabeller bør ikke bruges til layout-formål, kun til ting man i andre
sammenhænge fx ville putte i et regneark, fx varelister o.l.
Din side kan sagtens laves helt uden tabeller. Det vil gøre den mere
overskuelig og lettere at kode. Byg den op med <div> blokke og CSS. Tag
fx et kig på:
<url: http://www.webdesign101.dk/>
Jeg ved godt, at det sikkert ikke er det, du har mest lyst til lige nu,
hvor du er ved at være godt i gang med ASP'en - men så gem opfordringen
til du får lidt luft.
Til dit konkrete problem, så ville du fx kunne lave en <div> om hver
vare (incl. billede, tekst, "Put i kurv" osv.) og så floate disse
div'er, så ville du slippe for en del kode.
Hvis du *vil* lave det med tabeller, så gøres det i princippet således,
hvis du vil have 3 varer pr. tabel-række:
<%
' Start tabel uden for loop
Reponse.Write "<table>" & vbcrlf
' Nulstil tæller uden for loop
intAntal = 0
Do While not objRs.Eof
' Start ny række, når 3 går op i intAntal
If intAntal Mod 3 = 0 Then
Reponse.Write "<tr>" & vbcrlf
End If
Response.Write "<td>" & objRs("vare") & "</td>" & vbcrlf
' (Fyld selv mere i cellen - dette er blot et eksempel
' Slut ny række, lige inden 3 går op i intAntal
If intAntal Mod 3 = 2 Then
Reponse.Write "</tr>" & vbcrlf
End If
intAntal = intAntal + 1
objRs.MoveNext
Loop
' Så skal vi have fyldt rækken ud
' hvis antallet ikke går op
If intAntal Mod 3 > 0 Then
intCellerMangler = 3 - (intAntal Mod 3)
If intCellerMangler = 1 Then
Response.Write "<td> </td>" & vbcrlf
Else
Response.Write "<td colspan=""" & intCellerMangler & _
"""> </td>" & vbcrlf
End If
Reponse.Write "</tr>" & vbcrlf
End If
' Slut tabel uden for loop
Reponse.Write "</table>" & vbcrlf
%>
intAntal Mod 3 - betyder "resten når du dividerer intAntal med 3"
Fx:
5 Mod 3 er lig med 2
OBS: Ikke testet!
Good luck!
--
Jørn Andersen,
Brønshøj
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 20:19 |
|
On 23 Nov., 03:17, multi-sitemaster-...@hotmail.com wrote:
> On 23 Nov., 02:47, Jørn Andersen <j...@jorna.dk> wrote:
>
>
>
>
>
> > On Sat, 22 Nov 2008 17:52:02 -0800 (PST),
>
> > multi-sitemaster-...@hotmail.com wrote:
> > >En anden ting med test siderne det så galt nåt jeg sætter det ind i
> > >mit site :(
>
> > >Linksene i venstre siden ved varegrupper
> > > http://test.webex.dk/allan/shop/default.asp
>
> > >Her kalder jeg vare_id via page=indhold.asp hvor jeg her includere
> > >siden!
>
> > >Så jeg siger
>
> > >Hvis vare_id er større end 0 så
> > ><%if request.querystring("vare_ID")>0 then%>
> > ><!--#include file ="pagn.asp"-->
>
> > >men den siger
> > >Microsoft VBScript runtime error '800a000d'
> > >Type mismatch: '[string: "indhold.asp"]'
> > >/allan/shop/pagn.asp, line 3
>
> > >line 3 = If isNumeric(intPage) = False Or intPage < 1 Then
>
> > Det har jeg ikke overblik nok til at gætte.
>
> > Men ... bladre tilbage ...
> > Du havde:
> > <%
> > intPage = Request("page")
>
> > If isNumeric(intPage) = False Or intPage < 1 Then
> > intPage = 1
> > End If
> > %>
>
> > Så hvis du kalder med:
> > ?page=indhold.asp
> > - så er den i hvertfald ikke numerisk.
>
> > Desuden er det lidt bredt at blot at bruge Request("page").
> > Ulempen er, at den vil kigge i alle Request collections:
> > Request.Form
> > Request.QueryString
> > Request.Cookies
> > Request.ServerVariables
> > ...
> > - hvilket er spild af serverkraft og et potentielt sikkerhedshul.
>
> > Brug:
> > <%
> > intPage = Request.QueryString("page")
> > If IsNumeric(intPage) Then
> > intPage = CLng(intPage)
> > If intPage < 1 Then intPage = 1
> > Else
> > intPage = 1
> > End If
> > %>
> > - så har du både sikret dig, at intPage er typecastet som et tal, og at
> > det er et helt tal, og at det ikke er under 1.
>
> > Og du skal være klar over, at din include bliver inkluderet under alle
> > omstændigheder - uanset om din If er sand eller ej.
> > Når en .asp-side bliver parset, indlæser den først siden og de
> > inkluderede filer. Først herefter begynder den at fortolke koden.
>
> > Når jeg siger, at den bliver inkluderet under alle omstændigheder, så
> > betyder det ikke, at koden i den inkluderede fil bliver afviklet. Det
> > bliver den kun, hvis If'en er sand. Men det betyder, at koden skal være
> > uden fejl, når den inkluderede og den inkluderende ses i sammenhæng..
>
> > >hvad kan problemet være her ?
>
> > Der er nok ikke andet for end at gå systematisk frem.
> > Udskriv de tvivlsomme variable med Response.Write / .End (som med
> > strSql6) og følg dem ned gennem dit script.
> > På den måde sikrer du dig, hvad deres faktiske værdier er - og ikke kun
> > hvad du tror de er.
>
> > Good luck!
>
> > --
> > Jørn Andersen,
> > Brønshøj- Skjul tekst i anførselstegn -
>
> > - Vis tekst i anførselstegn -
>
> Hej Jørgen
>
> Jeg vil sgu godt lige takke dig du er ginial
>
> > <%
> > intPage = Request.QueryString("page")
> > If IsNumeric(intPage) Then
> > intPage = CLng(intPage)
> > If intPage < 1 Then intPage = 1
> > Else
> > intPage = 1
> > End If
> > %>
>
> Dette var løsningen nu virker det phew very nice.
>
> Og tak for alle de guldkorn du oxo lige kom med.....
>
> Der så en sidste ting som jeg nok må vente med ;)
> Men nu styre jeg så hvor mange poster den viser nedad men vil og gerne
> have den til at loope 3 vandret.
>
> Før jeg bruge paging så min loop således ud
>
> <%do until rs.eof or rs.bof%>
> <%
> tal = 0
>
> do until rs2.eof or tal = 3
> %>
> Det jeg vil loope
>
> <%rs2.movenext
> tal = tal + 1
> loop%>
> <%loop%>
>
> Dette virker men der nok en anden måde at gøre det på ;)
> Mit problem er at jeg skal have en loop ind i en loop?
>
> Pagn.asp
> loopen i denne ser således ud
>
> If Not (rs6.BOF Or rs6.EOF) Then
> rs6.PageSize = 2
> rs6.AbsolutePage = intPage
> intRecCount = rs6.PageSize
> intPageCount = rs6.PageCount
> if rs6.PageCount = 1 then
> Response.Write " "
> else
> For intNum = 1 To intPageCount
> Response.Write "<a href=default.asp?page=" & intNum & "&vare_id="
> &rs6("vare_id")&" >" & intNum & "</a> "
> Next
>
> End If
> Response.Write "<p>"
> Do While Not rs6.EOF And intRecCount > 0
>
> jeg har forsøgt at sætte mig gamle loop ind men uden held.
>
> ?- Skjul tekst i anførselstegn -
>
> - Vis tekst i anførselstegn -
Min gamle loop igen
<%do until rs.eof or rs.bof%>
<%
tal = 0
do until rs.eof or tal = 3
%>
Det jeg vil loope
<%rs.movenext
tal = tal + 1
loop%>
<%loop%>
Sorry er lidt rundtosset ;)
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 12:42 |
|
On 22 Nov., 19:04, multi-sitemaster-...@hotmail.com wrote:
> Hej Jørgen
>
> Jeg ved sådanset god hvad fejlen er ;)
> Probleme er den rigtige sql til paging ....
>
>
>
> > Hvis du vil se, hvad fejlnumrene betyder, så kig:
> > <url: http://aspfaq.com/>
> > Put nummeret i søgefeltet, og du vil ofte finde noget brugbart.
>
> > <url: http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-80040e21-er...>
>
> > >Hvis jeg så give ID uden Request.QueryString
> > >sådan her
> > >strSQL6 = "SELECT * FROM under_varegruppe where vare_id=1"
>
> > >Ja så virker det hvordan får jeg den til at acceptere
> > >Request.QueryString?
>
> > De to SQL-strenge er ikke ens. Den første har ' ' om værdien (hvilket
> > bruges ved tekstfelter). Den der virker har ikke.
>
> > Prøv:
> > vare_id = request.QueryString("vare_id")
> > strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> Hmm virker heller ikke> Jeg vil dog gøre opmærksom på, at du ikke har nogen form for validering
> > på dit input, hvilket gør det sårbårt over for SQL-injektion.
> > Se:
> > <url: http://www.asp-faq.dk/article/?id=95>
>
> Dette bruges ikke i login regi ;)
>
> > Good luck!
>
> > --
> > Jørn Andersen,
> > Brønshøj
>
> Jeg ved at det rugtige ID kommer med problemet er på en måde at når
> jeg bruger paging virker det ikke med Request.QueryString henter jeg
> bare normalt fra DB virker alt fint det er KUN når jeg pagner ;)- Skjul tekst i anførselstegn -
>
> - Vis tekst i anførselstegn -
Se engang her
http://test.webex.dk/allan/shop/test.asp
Dette kaldes med
> > vare_id = request.QueryString("vare_id")
> > strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
Her definere jeg selv vare_ID til at være =1 dette virker ?
http://test.webex.dk/allan/shop/1.asp
Er der nogen her som kan ved hvordan man kalder Request.QueryString
ved pagning?
| |
Jørn Andersen (22-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 22-11-08 21:37 |
|
On Sat, 22 Nov 2008 11:42:00 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
>Se engang her
> http://test.webex.dk/allan/shop/test.asp
>Dette kaldes med
>> > vare_id = request.QueryString("vare_id")
>> > strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
>Her definere jeg selv vare_ID til at være =1 dette virker ?
> http://test.webex.dk/allan/shop/1.asp
Vil du påstå, at de to sider resulterer i samme SQL-streng?
Og at der ikke er andre forskelle på de to sider?
Det tror jeg ikke rigtigt på.
Hvis du udskriver:
Response.Write strSQL6
Response.End
- på de to sider, er du så sikker på, at der ikke er forskel?
Hverken med CursorType eller LockType eller andet andre steder i
scriptet?
>Er der nogen her som kan ved hvordan man kalder Request.QueryString
>ved pagning?
Der er ikke nogen forskel på til hvilket formål du henter fra
Request.QueryString.
Du skal bare sikre dig, at du faktisk får den værdi ud, du regner med at
få.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 14:09 |
|
On 22 Nov., 20:36, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 11:42:00 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >Se engang her
> > http://test.webex.dk/allan/shop/test.asp
> >Dette kaldes med
> >> > vare_id = request.QueryString("vare_id")
> >> > strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> >Her definere jeg selv vare_ID til at være =1 dette virker ?
> > http://test.webex.dk/allan/shop/1.asp
>
> Vil du påstå, at de to sider resulterer i samme SQL-streng?
> Og at der ikke er andre forskelle på de to sider?
> Det tror jeg ikke rigtigt på.
>
> Hvis du udskriver:
> Response.Write strSQL6
> Response.End
Denne skrives ud
http://test.webex.dk/allan/shop/test.asp
Således:
vareId = request.QueryString("vare_id")
Set rs6 = Server.CreateObject("ADODB.RecordSet")
strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
Denne skrive ud
http://test.webex.dk/allan/shop/1.asp
Således:
strSQL = "SELECT * FROM kunder where vare_id=1 "
Og ja klart er der forskel men jeg skal nok have det bøjet i neon så
For mit vedkommende er den eneste forskel på disse 2 at den første
skal kalde vare_id via request.QueryString
Den sidste giver jeg jo bare id'er manuelt?
Når jeg henter med request.QueryString UDEN at pagne ja så har jeg
heller ikke problemer
http://test.webex.dk/allan/shop/default.asp
Varegrupper bliver hentet via request.QueryString ;)
| |
Jørn Andersen (22-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 22-11-08 23:07 |
|
On Sat, 22 Nov 2008 13:08:34 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
>Denne skrives ud
> http://test.webex.dk/allan/shop/test.asp
>
>Således:
>vareId = request.QueryString("vare_id")
>Set rs6 = Server.CreateObject("ADODB.RecordSet")
>strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
Et eller andet sted misforstår vi hinanden.
Når jeg skriver, at du skal indsætte:
Response.Write strSQL6
- så er det for at du kan se, hvad SQL-strengen indeholder *efter* at
værdien for vare_id er indsat.
Altså du har i dit script:
<%
vare_id = request.QueryString("vare_id")
strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
' herefter indsætter du:
Response.Write strSQL6
Response.End
%>
- hvad får du så ud på skærmen?
Mvh. Jørn
--
Jørn Andersen,
Brønshøj
| |
multi-sitemaster-cms~ (23-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 23-11-08 08:52 |
|
On 23 Nov., 04:56, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 19:17:04 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >Jeg vil sgu godt lige takke dig du er ginial
>
> Velbekomme - er glad for at det lykkedes. Jeg kender godt det med at
> have siddet for mange timer og mistet overblikket ...
>
> >Der så en sidste ting som jeg nok må vente med ;)
> >Men nu styre jeg så hvor mange poster den viser nedad men vil og gerne
> >have den til at loope 3 vandret.
>
> Inden du kommer for langt med den del, vil jeg bede dig overveje dit
> HTML.
> Du har et hav af tabeller indeni hinanden - jeg talte det til 26
> tabeller på en af siderne!
> Det er fuldstændig umuligt at finde rundt i, når man skal finde og rette
> fejl. Det er også browserens mening
>
> Så inden du kommer alt for langt, vil jeg foreslå dig at sætte dig lidt
> ind i nutidig HTML layout.
> Tabeller bør ikke bruges til layout-formål, kun til ting man i andre
> sammenhænge fx ville putte i et regneark, fx varelister o.l.
>
> Din side kan sagtens laves helt uden tabeller. Det vil gøre den mere
> overskuelig og lettere at kode. Byg den op med <div> blokke og CSS. Tag
> fx et kig på:
> <url: http://www.webdesign101.dk/>
>
> Jeg ved godt, at det sikkert ikke er det, du har mest lyst til lige nu,
> hvor du er ved at være godt i gang med ASP'en - men så gem opfordringen
> til du får lidt luft.
>
> Til dit konkrete problem, så ville du fx kunne lave en <div> om hver
> vare (incl. billede, tekst, "Put i kurv" osv.) og så floate disse
> div'er, så ville du slippe for en del kode.
>
> Hvis du *vil* lave det med tabeller, så gøres det i princippet således,
> hvis du vil have 3 varer pr. tabel-række:
>
> <%
> ' Start tabel uden for loop
> Reponse.Write "<table>" & vbcrlf
> ' Nulstil tæller uden for loop
> intAntal = 0
>
> Do While not objRs.Eof
> ' Start ny række, når 3 går op i intAntal
> If intAntal Mod 3 = 0 Then
> Reponse.Write "<tr>" & vbcrlf
> End If
>
> Response.Write "<td>" & objRs("vare") & "</td>" & vbcrlf
> ' (Fyld selv mere i cellen - dette er blot et eksempel
>
> ' Slut ny række, lige inden 3 går op i intAntal
> If intAntal Mod 3 = 2 Then
> Reponse.Write "</tr>" & vbcrlf
> End If
>
> intAntal = intAntal + 1
> objRs.MoveNext
> Loop
>
> ' Så skal vi have fyldt rækken ud
> ' hvis antallet ikke går op
> If intAntal Mod 3 > 0 Then
> intCellerMangler = 3 - (intAntal Mod 3)
> If intCellerMangler = 1 Then
> Response.Write "<td> </td>" & vbcrlf
> Else
> Response.Write "<td colspan=""" & intCellerMangler & _
> """> </td>" & vbcrlf
> End If
> Reponse.Write "</tr>" & vbcrlf
> End If
>
> ' Slut tabel uden for loop
> Reponse.Write "</table>" & vbcrlf
>
> %>
>
> intAntal Mod 3 - betyder "resten når du dividerer intAntal med 3"
> Fx:
> 5 Mod 3 er lig med 2
>
> OBS: Ikke testet!
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj
Hej Jørgen
Du har jo fuldstændig ret og derfor er jeg nu igang med at lave det
lidt mere overskueligt ..... he he jeg vidste det godt men må indrømme
jeg var lidt doven.... for andet er det ikke. med css er meget nemmere
men man skal bare lige tænke lidt anderledes ;)
http://test.webex.dk/allan/shop/test.asp
Hvad siger du nu? tabellerne er væk jeg vil nu lave resten ;) Må jeg
vende tilbage med den loop ? hvis ja skal jeg benytte denne tråd eller
vilde du råde mig til at oprette en ny?
Endnu engang tak for sparket ;)
| |
Jørn Andersen (23-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 23-11-08 18:12 |
|
On Sun, 23 Nov 2008 07:52:18 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
> http://test.webex.dk/allan/shop/test.asp
>
>Hvad siger du nu? tabellerne er væk jeg vil nu lave resten ;)
Jamen, det gør jo det hele meget mere overskueligt
>Må jeg
>vende tilbage med den loop ? hvis ja skal jeg benytte denne tråd eller
>vilde du råde mig til at oprette en ny?
Vend endelig tilbage - og helst i samme tråd.
PS: Gider du tage et kig på:
<url: http://usenet.dk/?side=citatteknik>
--
Jørn Andersen,
Brønshøj
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 14:12 |
|
On 22 Nov., 21:08, multi-sitemaster-...@hotmail.com wrote:
> On 22 Nov., 20:36, Jørn Andersen <j...@jorna.dk> wrote:
>
>
>
> > On Sat, 22 Nov 2008 11:42:00 -0800 (PST),
>
> > multi-sitemaster-...@hotmail.com wrote:
> > >Se engang her
> > > http://test.webex.dk/allan/shop/test.asp
> > >Dette kaldes med
> > >> > vare_id = request.QueryString("vare_id")
> > >> > strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> > >Her definere jeg selv vare_ID til at være =1 dette virker ?
> > > http://test.webex.dk/allan/shop/1.asp
>
> > Vil du påstå, at de to sider resulterer i samme SQL-streng?
> > Og at der ikke er andre forskelle på de to sider?
> > Det tror jeg ikke rigtigt på.
>
> > Hvis du udskriver:
> > Response.Write strSQL6
> > Response.End
>
> Denne skrives ud http://test.webex.dk/allan/shop/test.asp
>
> Således:
> vareId = request.QueryString("vare_id")
> Set rs6 = Server.CreateObject("ADODB.RecordSet")
> strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
> - Vis tekst i anførselstegn -
Prøver lige denne igen
Denne skrives ud
http://test.webex.dk/allan/shop/test.asp
Således:
vare_Id = request.QueryString("vare_id")
Set rs6 = Server.CreateObject("ADODB.RecordSet")
strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 14:29 |
|
On 22 Nov., 20:36, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 11:42:00 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >Se engang her
> > http://test.webex.dk/allan/shop/test.asp
> >Dette kaldes med
> >> > vare_id = request.QueryString("vare_id")
> >> > strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> >Her definere jeg selv vare_ID til at være =1 dette virker ?
> > http://test.webex.dk/allan/shop/1.asp
>
> Vil du påstå, at de to sider resulterer i samme SQL-streng?
> Og at der ikke er andre forskelle på de to sider?
> Det tror jeg ikke rigtigt på.
>
> Hvis du udskriver:
> Response.Write strSQL6
> Response.End
> - på de to sider, er du så sikker på, at der ikke er forskel?
> Hverken med CursorType eller LockType eller andet andre steder i
> scriptet?
>
> >Er der nogen her som kan ved hvordan man kalder Request.QueryString
> >ved pagning?
>
> Der er ikke nogen forskel på til hvilket formål du henter fra
> Request.QueryString.
> Du skal bare sikre dig, at du faktisk får den værdi ud, du regner med at
> få.
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj
Hej igen
For lige at sikre mig har jeg nu prøvet at tage koden fra den som ikke
virker med Request.QueryString og skifte den ud med den hvor jeg
kalder vare_ID manuelt stadig samme problem!
Iøvrigt skulle vare_id være tomt burde jeg få fgl fejlkode:
Syntax error (missing operator) in query expression 'id='.
Og ikke
ODBC driver does not support the requested properties.
som jeg får ?
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 15:36 |
|
On 22 Nov., 22:07, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 13:08:34 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >Denne skrives ud
> > http://test.webex.dk/allan/shop/test.asp
>
> >Således:
> >vareId = request.QueryString("vare_id")
> >Set rs6 = Server.CreateObject("ADODB.RecordSet")
> >strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> Et eller andet sted misforstår vi hinanden.
>
> Når jeg skriver, at du skal indsætte:
> Response.Write strSQL6
> - så er det for at du kan se, hvad SQL-strengen indeholder *efter* at
> værdien for vare_id er indsat.
>
> Altså du har i dit script:
> <%
> vare_id = request.QueryString("vare_id")
> strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> ' herefter indsætter du:
> Response.Write strSQL6
> Response.End
> %>
>
> - hvad får du så ud på skærmen?
>
> Mvh. Jørn
>
> --
> Jørn Andersen,
> Brønshøj
Jeg var ikke i tvivl om du havde ret jørgen ;)
SELECT pic_front,menu_short,menu_body_short,pris,menu_id FROM kunder
where vare_id=
Så den får ikke det ID med jøsses hvad gør jeg dog forkert ?
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 15:39 |
|
On 22 Nov., 22:07, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 13:08:34 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >Denne skrives ud
> > http://test.webex.dk/allan/shop/test.asp
>
> >Således:
> >vareId = request.QueryString("vare_id")
> >Set rs6 = Server.CreateObject("ADODB.RecordSet")
> >strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> Et eller andet sted misforstår vi hinanden.
>
> Når jeg skriver, at du skal indsætte:
> Response.Write strSQL6
> - så er det for at du kan se, hvad SQL-strengen indeholder *efter* at
> værdien for vare_id er indsat.
>
> Altså du har i dit script:
> <%
> vare_id = request.QueryString("vare_id")
> strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> ' herefter indsætter du:
> Response.Write strSQL6
> Response.End
> %>
>
> - hvad får du så ud på skærmen?
>
> Mvh. Jørn
>
> --
> Jørn Andersen,
> Brønshøj
Jeg var ikke i tvivl on du harvde ret
SELECT pic_front,menu_short,menu_body_short,pris,menu_id FROM
under_varegruppe where vare_id=
alså ingen ID med hmm underlig
Hvad gør jeg dog forkert ?
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 16:31 |
|
On 22 Nov., 22:07, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 13:08:34 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >Denne skrives ud
> > http://test.webex.dk/allan/shop/test.asp
>
> >Således:
> >vareId = request.QueryString("vare_id")
> >Set rs6 = Server.CreateObject("ADODB.RecordSet")
> >strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> Et eller andet sted misforstår vi hinanden.
>
> Når jeg skriver, at du skal indsætte:
> Response.Write strSQL6
> - så er det for at du kan se, hvad SQL-strengen indeholder *efter* at
> værdien for vare_id er indsat.
>
> Altså du har i dit script:
> <%
> vare_id = request.QueryString("vare_id")
> strSQL6 = "SELECT * FROM kunder where vare_id=" & vare_id
>
> ' herefter indsætter du:
> Response.Write strSQL6
> Response.End
> %>
>
> - hvad får du så ud på skærmen?
>
> Mvh. Jørn
>
> --
> Jørn Andersen,
> Brønshøj
Så virker det ...... men et andet problem er opstået nu :(
den skrive nu vare_ID ud og viser godt nok den første side men....
her
http://test.webex.dk/allan/shop/test.asp
når man klikker på siderne kommer den fejl igen ;(
den goe gamle
http://test.webex.dk/allan/shop/1.asp
Virker fint ;)
| |
Jørn Andersen (23-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 23-11-08 00:45 |
|
On Sat, 22 Nov 2008 15:31:01 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
>Så virker det ......
Hvad var problemet?
- Sådan af nysgerrighed. Og fordi det er meget godt at filosofere over,
hvad man kan lære af sine fejl
Mvh. Jørn
--
Jørn Andersen,
Brønshøj
| |
Jørn Andersen (23-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 23-11-08 00:57 |
| | |
multi-sitemaster-cms~ (24-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 24-11-08 04:22 |
|
> >Må jeg
> >vende tilbagemedden loop ? hvis ja skal jeg benytte denne tråd eller
> >vilde du råde mig til at oprette en ny?
>
> Vend endelig tilbage - og helst i samme tråd.
Hej
Im back ;)
Jeg har selv fundet en løsning men vil da gerne lige høre din mening.
Jeg looper mine poster fra DB sådan her
<%
if objRs3.eof then
else
If Not objRs3.EOF Then
objRs3.MoveFirst
Do While Not objRs3.EOF
%>
<div id="box" >
<div id="content1"><img src="<%=objRs3("pic_front")%>" alt="webshop"
border="0" /></div>
<div id="content2"><a href="default.asp?page=indhold.asp&vare_id=<
%=objRs3("vare_id")%>" class="menu"><%=objRs3("menu_short")%></a></
div>
<div id="content3"><div class="box_body_over"><%=objRs3
("menu_body_over")%></div><div class="box_body"><%=objRs3
("menu_body_short")%></div></div>
</div>
<%
objRs3.MoveNext
Loop
End If
End If
%>
Div id=box giver jeg så float left ;)
Det virker men måske der er en mere solid måde at gøre det på ;)
Allan
| |
multi-sitemaster-cms~ (24-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 24-11-08 04:32 |
|
> >Hvad siger du nu? tabellerne er væk jeg vil nu lave resten ;)
>
> Jamen, det gør jo det hele meget mere overskueligt
Jeps dejligt;)
> >Må jeg
> >vende tilbage med den loop ? hvis ja skal jeg benytte denne tråd eller
> >vilde du råde mig til at oprette en ny?
>
> Vend endelig tilbage - og helst i samme tråd.
Jeg har nu selv fundet en løsning men vil da gerne lige høre din
mening ;)
Jeg looper mine postersådan her :
<%
if objRs3.eof then
else
If Not objRs3.EOF Then
objRs3.MoveFirst
Do While Not objRs3.EOF
%>
<div id="box" >
<div id="content1"><img src="<%=objRs3("pic_front")%>" alt="webshop"
border="0" /></div>
<div id="content2"><a href="default.asp?page=indhold.asp&vare_id=<
%=objRs3("vare_id")%>" class="menu"><%=objRs3("menu_short")%></a></
div>
<div id="content3"><div class="box_body_over"><%=objRs3
("menu_body_over")%></div><div class="box_body"><%=objRs3
("menu_body_short")%></div></div>
</div>
<%
objRs3.MoveNext
Loop
End If
End If
%>
Jeg tildeler så float left til div id="box" derved looperden mine
ting ;)
er der en bedere måde at gøre det på ?
Allan
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 17:01 |
|
On 22 Nov., 23:44, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 15:31:01 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >Så virker det ......
>
> Hvad var problemet?
> - Sådan af nysgerrighed. Og fordi det er meget godt at filosofere over,
> hvad man kan lære af sine fejl
>
> Mvh. Jørn
>
> --
> Jørn Andersen,
> Brønshøj
Hej Jørgen
Jeg tror problemet vare jeg i laaaang lid testede med
vareId = request.QueryString("vare_id")
<-----------------------------------Alså ikke VARE_ID
strSQL = "SELECT * FROM kubnder where vare_id=" & vare_id
må nok sige det vare en ren fejl 40 men har nu oxo sidde med det her
det meste af dagen ;)
Har du nogen kommentar til at den ikke kan vise de sider som
udskrives?
| |
multi-sitemaster-cms~ (22-11-2008)
| Kommentar Fra : multi-sitemaster-cms~ |
Dato : 22-11-08 18:52 |
|
On 22 Nov., 23:57, Jørn Andersen <j...@jorna.dk> wrote:
> On Sat, 22 Nov 2008 15:31:01 -0800 (PST),
>
> multi-sitemaster-...@hotmail.com wrote:
> >men et andet problem er opstået nu :(
> >den skrive nu vare_ID ud og viser godt nok den første side men....
>
> >her
> > http://test.webex.dk/allan/shop/test.asp
>
> >når man klikker på siderne kommer den fejl igen ;(
>
> Fordi du ikke har vare_id med i dit link.
> Den her virker OK:
> <url: http://test.webex.dk/allan/shop/pagn.asp?page=2&vare_id=3>
>
> Mvh. Jørn
>
> --
> Jørn Andersen,
> Brønshøj
heps du er kongen jørgen ;)
Og jeg skal sparkes bagi
En anden ting med test siderne det så galt nåt jeg sætter det ind i
mit site :(
Linksene i venstre siden ved varegrupper
http://test.webex.dk/allan/shop/default.asp
Her kalder jeg vare_id via page=indhold.asp hvor jeg her includere
siden!
Så jeg siger
Hvis vare_id er større end 0 så
<%if request.querystring("vare_ID")>0 then%>
<!--#include file ="pagn.asp"-->
men den siger
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "indhold.asp"]'
/allan/shop/pagn.asp, line 3
line 3 = If isNumeric(intPage) = False Or intPage < 1 Then
hvad kan problemet være her ?
hvis jeg kalder den som extern side
http://test.webex.dk/allan/shop/pagn.asp?vare_id=1
Virker det fint?
Men gør jeg
http://test.webex.dk/allan/shop/default.asp?page=indhold.asp&vare_id=1
Fejler den ...... jeg er ret lost
håber du kan hjælpe ;)
| |
Jørn Andersen (23-11-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 23-11-08 03:48 |
|
On Sat, 22 Nov 2008 17:52:02 -0800 (PST),
multi-sitemaster-cms@hotmail.com wrote:
>En anden ting med test siderne det så galt nåt jeg sætter det ind i
>mit site :(
>
>Linksene i venstre siden ved varegrupper
> http://test.webex.dk/allan/shop/default.asp
>
>Her kalder jeg vare_id via page=indhold.asp hvor jeg her includere
>siden!
>
>
>Så jeg siger
>
>Hvis vare_id er større end 0 så
><%if request.querystring("vare_ID")>0 then%>
><!--#include file ="pagn.asp"-->
>
>men den siger
>Microsoft VBScript runtime error '800a000d'
>Type mismatch: '[string: "indhold.asp"]'
>/allan/shop/pagn.asp, line 3
>
>line 3 = If isNumeric(intPage) = False Or intPage < 1 Then
Det har jeg ikke overblik nok til at gætte.
Men ... bladre tilbage ...
Du havde:
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
%>
Så hvis du kalder med:
?page=indhold.asp
- så er den i hvertfald ikke numerisk.
Desuden er det lidt bredt at blot at bruge Request("page").
Ulempen er, at den vil kigge i alle Request collections:
Request.Form
Request.QueryString
Request.Cookies
Request.ServerVariables
....
- hvilket er spild af serverkraft og et potentielt sikkerhedshul.
Brug:
<%
intPage = Request.QueryString("page")
If IsNumeric(intPage) Then
intPage = CLng(intPage)
If intPage < 1 Then intPage = 1
Else
intPage = 1
End If
%>
- så har du både sikret dig, at intPage er typecastet som et tal, og at
det er et helt tal, og at det ikke er under 1.
Og du skal være klar over, at din include bliver inkluderet under alle
omstændigheder - uanset om din If er sand eller ej.
Når en .asp-side bliver parset, indlæser den først siden og de
inkluderede filer. Først herefter begynder den at fortolke koden.
Når jeg siger, at den bliver inkluderet under alle omstændigheder, så
betyder det ikke, at koden i den inkluderede fil bliver afviklet. Det
bliver den kun, hvis If'en er sand. Men det betyder, at koden skal være
uden fejl, når den inkluderede og den inkluderende ses i sammenhæng.
>hvad kan problemet være her ?
Der er nok ikke andet for end at gå systematisk frem.
Udskriv de tvivlsomme variable med Response.Write / .End (som med
strSql6) og følg dem ned gennem dit script.
På den måde sikrer du dig, hvad deres faktiske værdier er - og ikke kun
hvad du tror de er.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
|
|