03. november 2004 - 20:50Der er
40 kommentarer og 1 løsning
Problemer med if-sætning
Jeg er INGEN haj til ASP, da jeg normalt koder i PHP, men i skolen skal vi altså kode ASP, så har brug for lidt hjælp! Der er tilsyneladende et eller andet galt med denne sætning: --------------- if Request.Querystring = udgivelsesaar then
DIM aar
aar=Request.Querystring(udgivelsesaar)
MinSQL="Select * from dvd WHERE udgivelsesaar=' & aar & '" Set Rs=Server.CreateObject("ADODB.RecordSet") Set Rs=Forbindelse.Execute(MinSQL)
else
DIM prod
prod=Request.Querystring("producent")
MinSQL="Select * from dvd WHERE producent='" & prod & "'" Set Rs=Server.CreateObject("ADODB.RecordSet") Set Rs=Forbindelse.Execute(MinSQL) -------------------- Den får input fra URL'en, som her jo er ?udgivelsesaar=1990 eller ?producent=Universal%20Studios og så gerne skulle få den til at lave forespørgslen i Access databasen. Umiddelbart virker producent fint nok, men udgivelses år gør ikke. Den går fint nok ind på siden quickfind.asp og skriver også hele HTML-koden med tabeller og det, men der kommer bare ingen resultater frem.
Derudover kunne jeg godt tænke mig, hvis man kunne lave det sådan at producent-sætningen var en elseif-sætningen i stedet for bare else, men de gange jeg har prøvet virker det ikke! I stedet skal else så bare være hvor der ikke sker noget og siden bare bliver loadet.
Nogen der kan hjælpe? -og undskylder for den nok ikke så gode forklaring ;)
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
hmm ok, så prøv at udskrive selve SQL sætningen for at se om der er noget galt i den.
MinSQL="Select * from dvd WHERE udgivelsesaar='" & aar & "'" response.Write MinSQL Response.end Set Rs=Server.CreateObject("ADODB.RecordSet") Set Rs=Forbindelse.Execute(MinSQL)
Ja de betyder ikke helt så meget det er for at tjekke den udføre den rigtige SQL sætning og det ser sådan ud. Den skriver: Select * from dvd WHERE udgivelsesaar='1988'
Så du kan prøve at fjerne disse to linjer igen: response.Write MinSQL Response.end
Så prøv at rette SQL sætningen til: MinSQL="Select * from dvd WHERE udgivelsesaar LIKE '%" & aar & "%'"
Har du flere if sætninger så som tjekke på querystringsne? For hvis man kigger i View Source på siden er der stor forskel om man vælger udgivelsesaar eller producent.
Koden for venter et recordset som den skal udskrive fra som ikke bliver lavet hvis der ikke er nogen Querystring. Så du lave en if sæning omkring det som udskriver sådan den kun udskriver hvis der er defineret en querystring eller om rs recordsetet er defineret.
<% if Request.Querystring("udgivelsesaar") <> "" then
DIM aar
aar=Request.Querystring("udgivelsesaar")
MinSQL="Select * from dvd WHERE udgivelsesaar LIKE '%" & aar & "%'" Set Rs=Server.CreateObject("ADODB.RecordSet") Set Rs=Forbindelse.Execute(MinSQL)
elseif Request.Querystring("producent") <> "" then
DIM prod
prod=Request.Querystring("producent")
MinSQL="Select * from dvd WHERE producent='" & prod & "'" Set Rs=Server.CreateObject("ADODB.RecordSet") Set Rs=Forbindelse.Execute(MinSQL)
<table border="0" width="475" cellspacing="0" cellpadding="0"> <tr> <td colspan="4" align="right" height="18" width="471">[ <a href="default.asp">Alle film</a> ] [ <a href="find.asp">Søg</a> ] [ <a href="nyfilm.asp">Tilføj ny film</a> ]</td> </tr> <tr> <td width="400" height="20" colspan="4"></td> </tr> <tr> <td width="26"> </td> <td width="123"><b>Titel</b></td> <td width="130"><b>Producent</b></td> <td width="186"><b>Udgivelses år</b></td> <% 'Gennemløb (loop) Fundet for værdier og gem dem i variable fx.: I variablen id gemmes Fundet("ID"). Udskriv værdierne
Do while not Rs.EOF id = Rs("ID") titel = Rs("titel") producent = Rs("producent") udgivelsesaar = Rs("udgivelsesaar") %> <tr> <td valign="middle" align="center" width="26"><a href="vis_data_alt.asp?id=<%=id%>"><img border="0" src="../DVD/images/udfold.gif" width="14" height="14"></a></td> <td width="123"><%=titel%></td> <td width="130"><%=producent%></td> <td width="186"><%=udgivelsesaar%></td> <% Rs.MoveNext LOOP Rs.Close Response.Write "</TABLE>" %> </tr> </table> <% 'Luk forbindelse og ryd op Forbindelse.Close Set Forbindelse = nothing Set SQLstreng = nothing
else response.Wriite "<center>Tom side</center>" end if %> </body> </html>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.