Avatar billede kaage Nybegynder
05. februar 2004 - 10:05 Der 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...


Håber det kan lade sig gøre..
Avatar billede steen Nybegynder
05. februar 2004 - 10:08 #1
<%
If Len(Trim(request.form("search"))) = 9 Then
  Response.redirect nyside.asp?search=Request.form("search")
End If
%>
Avatar billede kaage Nybegynder
05. februar 2004 - 10:18 #2
Min form ser således ud, hvor smider jeg så det ind?? :o)

<form action="search.asp" method="POST">
<input type="text" name="keyword" size="10" maxlength="9" style="border: 1px solid #000000">
</td><td>
<input type="submit" name="Action" value="Søg" style="border: 1px solid #000000; padding-left: 2; padding-right: 0; padding-top: 0; padding-bottom: 0">
</form>
Avatar billede nute Nybegynder
05. februar 2004 - 10:18 #3
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
%>

/nute
Avatar billede nute Nybegynder
05. februar 2004 - 10:21 #4
du smider det ind i dn 'search.asp' side. det eneste du skal ændre, fra de overnævnte eksempel, er

request.form("search")

skal være

request.form("keyword")
Avatar billede steen Nybegynder
05. februar 2004 - 10:22 #5
Du skal sætte min kode ind på en side du kalder search.asp
Avatar billede kaage Nybegynder
05. februar 2004 - 10:42 #6
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

    Response.Write "<center><table border=1><tr><td>"
    Response.Write "<b>Søgeresultat:</b><br><br></td></tr>"

    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>&nbsp;</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
%>

Hvor skal jeg bygge den ind?
Avatar billede nute Nybegynder
05. februar 2004 - 10:51 #7
<%
' 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

End If

/nute
Avatar billede kaage Nybegynder
05. februar 2004 - 11:30 #8
Super nute :o)

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

End If
Avatar billede nute Nybegynder
05. februar 2004 - 11:34 #9
ah ... en lille fejl. skift denne linje:

if intKeyword <> -1 AND LEN(strKeyword ) then

ud med denne linje:

if intKeyword <> -1 AND LEN(strKeyword ) = 9 then
Avatar billede kaage Nybegynder
05. februar 2004 - 11:57 #10
hmm, ked af det men det virker altså stadig ikke:

Nu ser hele min search.asp 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

End If

%>

PS, du skal nok få yderligere points, hvis du ønsker det :o)
Avatar billede nute Nybegynder
05. februar 2004 - 12:39 #11
"virker ikke" ? fortæl hvad der går galt ... vi er ikek tankelæsere her inde, og "virker ikke" kan betyde mange ting

;o]
Avatar billede kaage Nybegynder
05. februar 2004 - 13:15 #12
Jeps, sorry.

1: denne er første side, som brugeren taster sit 9 cifrede nr ind i.

<%


'Create DB connection
Set cnnID = Server.CreateObject("ADODB.Connection")
cnnID.Open Application("DSN")


StrSQL="SELECT ItemSerialNo FROM Results"
Set rs=cnnID.execute(strSQL)

%>

<html>
<head>
<title></title>
<link rel="stylesheet" href="its.css" type="text/css">
</head>
<body>
<center>
<table border="0" cellpadding="4" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" bgcolor="#DDDDDD" width="600">
<Tr><td>
<center>
<table border="0" cellpadding="4" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">

<tr><td valign="top" colspan="2"><b><br><br>Indtast dit serienr.:</b></td></tr>
<tr>
<td valign="top">
<form action="search.asp" method="POST">
<input type="text" name="keyword" size="10" maxlength="9" style="border: 1px solid #000000">
</td><td>
<input type="submit" name="Action" value="Søg" style="border: 1px solid #000000; padding-left: 2; padding-right: 0; padding-top: 0; padding-bottom: 0">
</form>
<br>   
</td>
</tr>
</table>
</center>

</td>
</tr>
</table>
<br>
</body>
</html>

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

End If

%>


3: Show.asp

<html>

<head>
<title>©</title>
<link rel="stylesheet" href="its.css" type="text/css">
<!-- #include virtual="/inc/FormatDate.asp" -->
</head>

<body>

<%
' 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)

%>
<BR><BR>
<center>
<table border="0" cellpadding="2" cellspacing="2" style="border-collapse: collapse" bordercolor="#111111" width="95%" class="OrderItemDetails">
<tr>
<td colspan="4"><b>Informationer om <%= rs("ItemSerialNo") %></b><br><br></tr>
</tr>
<%
    Response.Write "<tr><td valign=""top"" align=""right""><nobr><b>Ordrenr.:</b></nobr></td><td>" & Replace(rs("OrderNo") & "", ";", "<br>") & "</td>"
    Response.Write "<td valign=""top"" align=""right""><nobr><b>Konto:</b></nobr></td><td>" & Replace(rs("ItemSerialNo") & "", ";", "<br>") & "</td></TR>"

    Response.Write "<TR><td valign=""top"" align=""right""><b><nobr>Lev. dato:</nobr></b></td><td>" & FormatDate(rs("OrderDeliveryDate"), "dd.mm.yyyy") & "</nobr></td>"

    Response.Write "<td valign=""top"" align=""right""><nobr><b>ModelNr.:</b></td><td>" & Replace(rs("ItemModelNo") & "", ";", "<br>") & "</nobr></td></tr>"

    Response.Write "<tr><td colspan=""4""><hr></b></td></tr>"

    Response.Write "<tr><td colspan=""4"" bgcolor=""#cccccc""><b>Serienr. " & rs("ItemSerialNo")& "</b></td></tr>"

    Response.Write "<tr><td colspan =2 align=""right"" id=""small"">" & Replace(rs("ItemNo") & "", ";", "<br>") & "</nobr></td><td colspan=""1"" id=""small""><nobr>" & Replace(rs("ItemDetails") & "", ";", "<br>") & "</nobr></td><td width=""100%""></td></tr>"
    Response.Write "<tr><td colspan=""4""><hr></b></td></tr>"



CnnID.Close
Set CnnID = Nothing
%>
</tr>

</table>
</center>
</body>
</html>

Håber det er til at forstå :o)
Avatar billede nute Nybegynder
05. februar 2004 - 13:30 #13
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

/nute
Avatar billede kaage Nybegynder
09. februar 2004 - 09:11 #14
Tusind tak for din hjælp nute, skriv et svar, så får du dine points.

PS, jeg har lidt problemer med søgefeltet, for hvis man %% så returnere den alle rækker. Ved du hvordan man fjerner det... PFT
Avatar billede nute Nybegynder
09. februar 2004 - 09:26 #15
du kan jo fjerne % i din søgestreng ?

strKeyword = Trim(Replace(Request.Form("Keyword"),"%",""))
Avatar billede kaage Nybegynder
09. februar 2004 - 09:36 #16
Tusind tak for hjælpen! ;o)
Avatar billede nute Nybegynder
09. februar 2004 - 09:42 #17
selv tak :o]

/nute
Avatar billede kaage Nybegynder
09. februar 2004 - 09:45 #18
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...
Avatar billede nute Nybegynder
09. februar 2004 - 09:57 #19
well ... dette er jo et godt forum, hvis du har problemer. http://www.activedeveloper.dk er jo også et godt sted. http://html.dk/tutorials/asp/ kan du kigge lidt på, og dokumentationen for ASP er jo uundværlig http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vbscripttoc.asp (+ den indebyggede asp funktionalitet http://www.devguru.com/Technologies/asp/quickref/asp_intro.html)

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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester