05. februar 2004 - 10:05Der er
18 kommentarer og 1 løsning
Check form
Jeg har et søge form felt som skal søge i et tal felt i min access database. Her skal feltet for det første tjekke om der er indtastet præcis 9 tal - derefter skal den, hvis talkombinationen er korrekt, smide mig videre til en anden side...
nja ... man skal vel også tjekke for om dét, der er indtastet kun er tal:
<% intSearch = -1 search = TRIM(request.form("search")) on error resume next intSearch = CLng( search ) Response.write intSearch if intSearch <> -1 AND LEN(search) then Response.Redirect "enside.asp" End If %>
Okay, det kan godt være jeg er lidt tungnem, men min search ser således ud:
<% ' Henter værdien fra index.asp strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("index.asp") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT ItemSerialNo FROM Results WHERE" strSQL = strSQL & " (ItemSerialNo LIKE '%" & strKeyword & "%')" 'strSQL = strSQL & " OR (Name LIKE '%" & strKeyword & "%')"
'Create DB connection Set cnnID = Server.CreateObject("ADODB.Connection") cnnID.Open Application("DSN")
' Skaber et recordset udfra SQL strengen Set rs = CnnID.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then ' Hvis der er fundet poster på søgningen
Do While Not rs.EOF Response.Write "<tr><td>" & "<a href='show.asp?ItemSerialNo="& Replace(rs("ItemSerialNo"), "#", "") & "'>" & rs("ItemSerialNo") & "</a></td></tr>" Response.Write "<tr><td> </td></tr>"
rs.MoveNext Loop Response.Write "<tr><td><br><br><a href='java script:history.go(-1);'><--Tilbage</a></td></tr>" Response.Write "</table></center>" Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<center><table border=0 cellpadding=0 cellspacing=0>" Response.Write "<tr><td><b>Desværre!</b><br><br></td></tr>" Response.Write "<tr><td><font size=2><center><b>Der er ikke fundet noget på denne søgning</b><br><br></font></center></td></tr>" Response.Write "<tr><td><a href='index.asp'><-- Tilbage</a></td></tr></table></center>" End If
' Rydder op efter os CnnID.Close Set CnnID = Nothing %>
<% ' Henter værdien fra index.asp strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("index.asp") Else ' Hvis der er skrevet i feltet strKeyword = TRIM(Replace(strKeyword,"'","''")) intKeyword = -1 on error resume next intKeyword = CLng( strKeyword ) if intKeyword <> -1 AND LEN(strKeyword ) then Response.Redirect "enside.asp" End If
Men hvis jeg indtaster eks. 2 tal, så viser den en liste med alle de felter som indeholder de 2 tal. Den skal enten melde fejl, da brugeren ikke har indtastet 9 karakterer eller smides videre med en show.asp?id=Den_indtastede_talværdi - direkte til show siden!
Tusind takker for din hjælp, so far.
Det har jeg prøvet her:
<% ' Henter værdien fra index.asp strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("index.asp") Else ' Hvis der er skrevet i feltet strKeyword = TRIM(Replace(strKeyword,"'","''")) intKeyword = -1 on error resume next intKeyword = CLng( strKeyword ) if intKeyword <> -1 AND LEN(strKeyword ) then ' Response.Redirect "show.asp" Response.Redirect show.asp?ItemSerialNo="& Replace(rs("ItemSerialNo"), "#", ") End If
<% ' Henter værdien fra index.asp strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("index.asp") Else ' Hvis der er skrevet i feltet strKeyword = TRIM(Replace(strKeyword,"'","''")) intKeyword = -1 on error resume next intKeyword = CLng( strKeyword ) if intKeyword <> -1 AND LEN(strKeyword ) = 9 then Response.Redirect "show.asp" ' Response.Redirect show.asp?ItemSerialNo="& Replace(rs("ItemSerialNo"), "#", ") End If
End If
%>
PS, du skal nok få yderligere points, hvis du ønsker det :o)
2: Search, hvor man enten bliver smidt videre til en fejl side - hvis ens nr ikke findes i db'en - eller bliver sendt direkte videre til: Show.asp?id=[det nr man har indtastet]
Ser således ud:
<% ' Henter værdien fra index.asp strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("index.asp") Else ' Hvis der er skrevet i feltet strKeyword = TRIM(Replace(strKeyword,"'","''")) intKeyword = -1 on error resume next intKeyword = CLng( strKeyword ) if intKeyword <> -1 AND LEN(strKeyword ) = 9 then Response.Redirect "show.asp" ' Response.Redirect "show.asp?ItemSerialNo=" & Replace(rs("ItemSerialNo") & "" End If
<% ' Databaseforbindelse - husk at angive sti til din database Set cnnID = Server.CreateObject("ADODB.Connection") cnnID.Open Application("DSN")
'strSQL = "Select * From Users ORDER BY Firmanavn" strSQL = "Select ItemSerialNo, ItemNo, ItemDetails, OrderNo, OrderDeliveryDate, ItemModelNo From Results Where ItemSerialNo=" & Request.Querystring("ItemSerialNo") Set rs = CnnID.Execute(strSQL)
du skriver stadig ikke *hvad* der ikke virker. hvad er det på side 2 der ikke fungerer ???
du skriver "2: Search, hvor man enten bliver smidt videre til en fejl side - hvis ens nr ikke findes i db'en - eller bliver sendt direkte videre til: Show.asp?id=[det nr man har indtastet]" ... men du tjekker jo ikke basen for dét nr du søger efter (keyword) findes i db'en.
Du bør vel gøre noget ála dette på din 'search.asp' side:
strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("index.asp") Else ' Hvis der er skrevet i feltet strKeyword = TRIM(Replace(strKeyword,"'","''")) intKeyword = -1 on error resume next intKeyword = CLng( strKeyword )
if intKeyword <> -1 AND LEN(strKeyword ) = 9 then strSQL = "Select count(*) As antal From Results Where ItemSerialNo=" & strKeyWord Set cnnID = Server.CreateObject("ADODB.Connection") cnnID.Open Application("DSN") Set rs = CnnID.Execute(strSQL) if( not rs.eof AND CInt( rs("antal") ) > 0 ) then Response.Redirect "show.asp?ItemSerialNo=" & strKeyWord else 'nummeret findes ikke i basen end if End If End If
Et lille ekstra spørgsmål. Når jeg nu får flere af disse små problemer, kan du så anbefale et site hvor jeg kan finde løsningerne?? Uden at det bliver 4guysfromrolla.com's kæmpe database...
en meget god hjælp kan være at følge med i ASP forumet her inde. Læs andre problemstillinger og kig på de løsninger der bliver postet. Dette kan være en meget værdifuld hjælp. Prøv også at svare på spørgsmål selv, eller i det mindste prøv at løse problemerne uden at poste svar. på denne måde lærer du også meget hurtig at løse problemstillinger som du selv ikke kommer ud for. Men har du et problem, så kig i tutorialen fra html.dk. du kan altid få en guide til hvordan du kan løse et problem - du får måske ikke løsningen serveret på et fad, men du kan finde råd der kan hjælpe dig hen ad vejen. Fx dette spm kunne du ha fundet løsningen på, ved at læse lektion 19 (http://html.dk/tutorials/asp/lektion19.asp).
/nute
Synes godt om
Ny brugerNybegynder
Din løsning...
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.