Avatar billede nettet Nybegynder
09. november 2000 - 13:10 Der er 12 kommentarer og
1 løsning

Hyperlink og nummering i søgeresultat

Jeg har udarbejdet en ASP-kode der kan udtrække data fra en AccessDB. Det er muligt at søge på flere felter.
Jeg har dog nu brug for en løsning til, hvordan jeg får mine søgeresultater vist, hvor hver enkel resultat bliver tildelt et nummer. F.eks. således:
1. hansen, marie
2. jensen, peter o.s.v.

Samtidig skal de felter, jeg har valgt ud af det fulde post udgøre et hyperlink. Hyperlinket skal åbne et nyt vindue, hvor den fulde db-post så kan blive vist.

Min response.write ser nu således ud:

Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \", </b></font>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</b></font><br>\"
Avatar billede a-torsten Nybegynder
09. november 2000 - 13:14 #1
hvis du kan vente med at få det til midnat skal jeg lave det for dig....

Jeg er i skole nu... desvære....

-Anders
Avatar billede tdaugaard Nybegynder
09. november 2000 - 13:15 #2
Løb igennem dit recordset og hav en counter variabel.
Du skal desuden have et ID felt for hver post hvis du vil være sikker på at kunne trække data ud til siden med den fulde post, korrekt. Hvis ikke du har det, så lav et felt: ID og type Autonummering.

med koden nedenfor antager jeg at du har et ID felt.

count=1 \' init. counter
do until rs.eof or rs.bof

Response.Write count & \". <a href=\'dinside.asp?id=\" & rs(\"id\") & \"\' target=\'_blank\'><font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \", </b></font>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</b></font></font><br>\"

rs.movenext
count=count+1
loop
Avatar billede nettet Nybegynder
09. november 2000 - 13:39 #3
tdaugaard: Jeg får følgende fejl, når jeg har indtastes dit forslag:

Der opstod en Microsoft VBScript-kompileringsfejl fejl \'800a03fb\'

\'Loop\' var ventet

/search.asp, linje 162

Else

Du må hellere se den fulde kode, for at kunne gennemskue problemet:

<% Response.Buffer = true %>
<html>
<head>
<title>Resultat af søgning</title>
</head>
<body BGCOLOR=\"#333333\" TEXT=\"#E6E8FA\" VLINK=\"#FCCF03\" LINK=\"#FCCF03\" ALINK=\"#06438A\" leftmargin=\"130\">


<p align=\"left\">

<font size=6 color=\"#FCCF03\"><b><dfn>Resultat af søgning</dfn></b>
</font>

<font size=2 color=\"#FCCF03\"><p align=\"right\">
<applet code=\"fphover.class\" codebase=\"./\" width=\"93\" height=\"18\">
  <param name=\"textcolor\" value=\"#FFFFFF\">
  <param name=\"text\" value=\"Ny søgning\">
  <param name=\"hovercolor\" value=\"#E6E8FA\">
  <param name=\"url\" valuetype=\"ref\" value=\"search.htm\">
  <param name=\"color\" value=\"#6699CC\">
  <param name=\"font\" value=\"Helvetica\">
  <param name=\"fontstyle\" value=\"regular\">
  <param name=\"fontsize\" value=\"11\">
  <param name=\"effect\" value=\"bevelOut\">
</applet>
<br></p>




<%
Dim StrKeyword
Dim StrKeyword1
Dim StrKeyword2
Dim StrKeyword3
Dim StrKeyword4
Dim StrKeyword5
Dim StrKeyword6
Dim StrKeyword7
Dim StrKeyword8
Dim StrKeyword9
Dim Strtom
Dim strnummer


strKeyword = Request.querystring(\"Keyword\")
strKeyword1 = Request.querystring(\"Keyword1\")
strKeyword2 = Request.querystring(\"Keyword2\")
strKeyword3 = Request.querystring(\"Keyword3\")
strKeyword4 = Request.querystring(\"Keyword4\")
strKeyword5 = Request.querystring(\"Keyword5\")
strKeyword6 = Request.querystring(\"Keyword6\")
strKeyword7 = Request.querystring(\"Keyword7\")
strKeyword8 = Request.querystring(\"Keyword8\")
strKeyword9 = Request.querystring(\"Keyword9\")

strtom = StrKeyword + StrKeyword1 + StrKeyword2 + StrKeyword3 + StrKeyword4 + StrKeyword5 + StrKeyword6 + StrKeyword7 + StrKeyword8 + StrKeyword9
strnummer = StrKeyword + StrKeyword1 + StrKeyword2 + StrKeyword3 + StrKeyword4 + StrKeyword6 + StrKeyword7 + StrKeyword8 + StrKeyword9

If Len(strtom) = 0 Then

Response.Clear
Response.Redirect(\"search.htm\")
Else
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
strKeyword1 = Replace(strKeyword1,\"\'\",\"\'\'\")
strKeyword2 = Replace(strKeyword2,\"\'\",\"\'\'\")
strKeyword3 = Replace(strKeyword3,\"\'\",\"\'\'\")
strKeyword4 = Replace(strKeyword4,\"\'\",\"\'\'\")
strKeyword5 = Replace(strKeyword5,\"\'\",\"\'\'\")
strKeyword6 = Replace(strKeyword6,\"\'\",\"\'\'\")
strKeyword7 = Replace(strKeyword7,\"\'\",\"\'\'\")
strKeyword8 = Replace(strKeyword8,\"\'\",\"\'\'\")
strKeyword9 = Replace(strKeyword9,\"\'\",\"\'\'\")

End If

intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM Tabel WHERE\"
strSQL = strSQL & \" ((Efternavn LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Fornavne LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Fodselsdato LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Fodested LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Gadevej LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Gadevejnummer LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Stilling LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Statusihusstand LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (Tidligerebosaettelse LIKE \'%\" & strKeyword & \"%\'))\"
If Len(strKeyword1) > 0 Then
strSQL = strSQL & \" AND (Efternavn LIKE \'%\" & strKeyword1 & \"%\')\"
End if

If Len(strKeyword2) > 0 Then
strSQL = strSQL & \" AND (Fornavne LIKE \'%\" & strKeyword2 & \"%\')\"
End if

If Len(strKeyword3) > 0 Then
strSQL = strSQL & \" AND (Fodselsdato LIKE \'%\" & strKeyword3 & \"%\')\"
End if

If Len(strKeyword4) > 0 Then
strSQL = strSQL & \" AND (Fodested LIKE \'%\" & strKeyword4 & \"%\')\"
End if

If Len(strKeyword5) > 0 Then
strSQL = strSQL & \" AND (Gadevej LIKE \'%\" & strKeyword5 & \"%\')\"
End if

If Len(strKeyword6) > 0 Then
strSQL = strSQL & \" AND (Gadevejnummer LIKE \'%\" & strKeyword6 & \"%\')\"
End if

If Len(strKeyword7) > 0 Then
strSQL = strSQL & \" AND (Stilling LIKE \'%\" & strKeyword7 & \"%\')\"
End if

If Len(strKeyword8) > 0 Then
strSQL = strSQL & \" AND (Statusihusstand LIKE \'%\" & strKeyword8 & \"%\')\"
End if

If Len(strKeyword9) > 0 Then
strSQL = strSQL & \" AND (Tidligerebosaettelse LIKE \'%\" & strKeyword9 & \"%\')\"
End if

If Len(strnummer) = 0 Then
strSQL = strSQL & \"ORDER BY Gadevejnummer\"
Else
strSQL = strSQL & \"ORDER BY Efternavn, Fornavne, Gadevej, Gadevejnummer, Fodested, Fodselsdato, Stilling, Statusihusstand, Tidligerebosaettelse\"
end if


strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"Borgerdatabase.mdb\")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 20
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount

AntalP = rs.RecordCount
Response.write \"<p><b>Din søgning resulterede i \" & AntalP & \" borgere<br></b></p>\"


Response.Write \"<p><b>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\"
Do While Not rs.EOF And intRecCount > 0

count=1 \' init. counter
do until rs.eof or rs.bof

Response.Write count & \".<a href=\'fremtid.htm?id=\" & rs(\"id\") &\"\' target=\'_blank\'><font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \", </b></font>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</b></font><br>\"


intRecCount = intRecCount - 1
rs.MoveNext
count=count+1
Loop
Else
Response.Write \"Der er ikke fundet nogle borgere, der matcher din søgning\"
End If
rs.Close
Set rs = Nothing
Response.Write \"<p>Gå til side \"
For intNum = 1 To intPageCount

Response.Write \"<a href=search.asp?Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intNum & \">\" & intNum & \"</a> \"
Next
Response.Write \"<p>\"
If Clng(intPage) > 1 Then
Response.Write \"<a href=search.asp?Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intPage - 1 & \">&lt;&lt;</a>\"
Else
Response.Write \"&lt;&lt;\"
End If
Response.Write \"&nbsp;\"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write \"<a href=search.asp?Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intPage + 1 & \">&gt;&gt;</a>\"
Else
Response.Write \"&gt;&gt;\"
End If
%>
</body></html>
Avatar billede tdaugaard Nybegynder
09. november 2000 - 13:45 #4
kigger på det ..
Avatar billede tdaugaard Nybegynder
09. november 2000 - 13:48 #5
    Do While Not rs.EOF And intRecCount > 0

brug den linie istedet for den jeg skrev (do until bla bla).

forøvrigt .. HAR du et felt i din tabel der hedder ID ?
Avatar billede nettet Nybegynder
09. november 2000 - 14:19 #6
Jeg har et felt i min tabel der hedder ID

Selvom jeg indsætter :
Do While Not rs.EOF And intRecCount > 0
i stedet
får jeg stadig samme fejl:

Der opstod en Microsoft VBScript-kompileringsfejl fejl \'800a03fb\'

\'Loop\' var ventet

/search.asp, linje 162

Else
^
Avatar billede tdaugaard Nybegynder
09. november 2000 - 14:23 #7
Du skal fjerne den linie jeg skrev ;)
Således at:

Response.Write \"<p><b>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\"
Do While Not rs.EOF And intRecCount > 0

count=1 \' init. counter
do until rs.eof or rs.bof

kommer til at se sådan her ud:

Response.Write \"<p><b>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\"

count=1 \' init. counter
Do While Not rs.EOF And intRecCount > 0

Avatar billede nettet Nybegynder
09. november 2000 - 14:38 #8
Det virker næsten nu. Der er dog en besynderlig fejl. Når man klikker på post 1, som f.eks. ser således ud:
1. hansen, marie
Markeres navnet hansen, marie, som det skal, men samtidig også den underliggende posts nummer (kun nummeret). I dette tilfælde 2. Hvorfor det?
Avatar billede tdaugaard Nybegynder
09. november 2000 - 14:39 #9
Response.Write count & \".<a href=\'fremtid.htm?id=\" & rs(\"id\") &\"\' target=\'_blank\'><font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \", </b></font>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</b></font><br>\"


fordi du har glemt </a> ;o) en klassisk fejl ..

Response.Write count & \".<a href=\'fremtid.htm?id=\" & rs(\"id\") &\"\' target=\'_blank\'><font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \", </b></font>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</b></font></a><br>\"


ovenstående virker.
Avatar billede nettet Nybegynder
09. november 2000 - 14:41 #10
Hvad skriver jeg forøvrigt i det ASP-script (hvor hyperlinket leder til), som så skal vise hele posten. Dette script skal jo vide, hvilket post Id, som det skal vise alle felter af.
Avatar billede tdaugaard Nybegynder
09. november 2000 - 14:44 #11
forresten så skal

Response.Write count & \".<a href=\'fremtid.htm?id=\" & rs(\"id\") &\"\' target=\'_blank\'><font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \", </b></font>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</b></font></a><br>\"

ændres til

Response.Write count & \".<a href=\'fremtid.asp?id=\" & rs(\"id\") &\"\' target=\'_blank\'><font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \", </b></font>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</b></font></a><br>\"

der stod .htm istedet for .asp.

I fremtid.asp skriver du

strID = Request(\"id\")

strSQL = \"SELECT * FROM tabel WHERE ID=\" & strID & \";\"

så kan du trække felter fra den ene post.
Avatar billede nettet Nybegynder
09. november 2000 - 14:47 #12
Jeg tester det lige af!
Avatar billede nettet Nybegynder
09. november 2000 - 15:28 #13
tdaugaard, det virker. kanon - du har fortjent dine point
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