Avatar billede swenn Nybegynder
02. oktober 2008 - 11:00 Der er 2 kommentarer og
1 løsning

Opdeling af felter i Asp-script

Hej Eksp.

Jeg har lidt problemer med en søgefunktion.
Jeg bruger dreamweaver, og når jeg har lavet et asp-script kommer der sådan et lille gult skjold. Det et rigtig fint, for så kan jeg flytte rundt på den og bestemme farver og skrifttype osv.

Nu kommer så selve problemet.
Jeg har en database, indeholdende nogle felter. lad os kalde dem:
AAA
BBB
CCC
Dem vil jeg gerne have vist i en tabel. Forstået på den måde at: AAA bliver til et lille gult skjold på min skærm. Så jeg derved kan flytte den ind i en tabel. Og ligeledes med BBB og CCC. Altså så jeg har tre skjolde, der hverisær henviser til min database.
Håber i forstår mit spørgsmål.

Min nuværende kode ser sådan ud. (Og der er tabellen inkluderet i asp-scriptet)

<% Response.Buffer = True %>
<html><head>
<title>Sogeresultat</title>
<style type="text/css">
<!--
.style1 {
    font-family: "Trebuchet MS", Georgia, "Lucida Sans";
    font-size: 12px;
}
-->
</style>
</head><body class="style1">

<%
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    Response.Clear
    Response.Redirect("search.htm")
Else
    strKeyword = Replace(strKeyword,"'","''")
End If

strSQL = "SELECT Nummer, Gade, Postnr, A_B, Udleveret, Noglenr, Dato, Udleveret_b, Noglenr_b, Dato_b, Udleveret_c, Noglenr_c, Dato_c FROM Nogle WHERE"
strSQL = strSQL & " (Nummer LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Gade LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Postnr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (A_B LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Udleveret LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Noglenr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Dato LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Udleveret_b LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Noglenr_b LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Dato_b LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Udleveret_c LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Noglenr_c LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Dato_c LIKE '%" & strKeyword & "%')"

strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("overs.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    Response.Write "<p>Søgeresultat</p>"
    Response.Write "<table border=1>"
    Response.Write "<tr><th>Nummer</th><th>Gade</th><th>Postnr</th><th>A_B</th><th>Udleveret</th><th>Noglenr</th><th>Dato</th><th>Udleveret_b</th><th>Noglenr_b</th><th>Dato_b</th><th>Udleveret_c</th><th>Noglenr_c</th><th>Dato_c</th></tr>"
    Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("Nummer") & "</td>"
        Response.Write "<td>" & rs("Gade") & "</td>"
        Response.Write "<td>" & rs("Postnr") & "</td>"
        Response.Write "<td>" & rs("A_B") & "</td>"
        Response.Write "<td>" & rs("Udleveret") & "</td>"
        Response.Write "<td>" & rs("Noglenr") & "</td>"
        Response.Write "<td>" & rs("Dato") & "</td>"
        Response.Write "<td>" & rs("Udleveret_b") & "</td>"
        Response.Write "<td>" & rs("Noglenr_b") & "</td></tr>"
        Response.Write "<td>" & rs("Dato_b") & "</td></tr>"
        Response.Write "<td>" & rs("Udleveret_c") & "</td></tr>"
        Response.Write "<td>" & rs("Noglenr_c") & "</td></tr>"
        Response.Write "<td>" & rs("Dato_c") & "</td></tr>"
        rs.MoveNext
    Loop
    Response.Write "</table>"
Else
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End If

myConn.Close
Set myConn = Nothing
%>
</body></html>
Avatar billede Slettet bruger
02. oktober 2008 - 11:44 #1
Det bliver nok svært, da du ikke ved, hvor mange søgeresultater der kommer. Men er det overhovedet nødvendigt at have hvert enkelt søgeresultat for sig selv? Metoden du bruger nu, til at vise en liste-oversigt, er jo god nok.

Men ellers kan du nok klare noget af problemet ved at indføre variabel t:
(Jeg har kopieret din asp-kode ovenfor og ændret lidt her og dér)


<%
Dim t

strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    Response.Clear
    Response.Redirect("search.htm")
Else
    strKeyword = Replace(strKeyword,"'","''")
End If

strSQL = "SELECT Nummer, Gade, Postnr, A_B, Udleveret, Noglenr, Dato, Udleveret_b, Noglenr_b, Dato_b, Udleveret_c, Noglenr_c, Dato_c FROM Nogle WHERE"
strSQL = strSQL & " (Nummer LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Gade LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Postnr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (A_B LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Udleveret LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Noglenr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Dato LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Udleveret_b LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Noglenr_b LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Dato_b LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Udleveret_c LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Noglenr_c LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Dato_c LIKE '%" & strKeyword & "%')"

strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("overs.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then

t=0
    Do While Not rs.EOF
      t=t+1

      If t=1 Then
        Response.Write "<table><tr><td>" & rs("Nummer") & "</td>"
        Response.Write "<td>" & rs("Gade") & "</td>"
        Response.Write "<td>" & rs("Postnr") & "</td>"
        Response.Write "<td>" & rs("A_B") & "</td>"
        Response.Write "<td>" & rs("Udleveret") & "</td>"
        Response.Write "<td>" & rs("Noglenr") & "</td>"
        Response.Write "<td>" & rs("Dato") & "</td>"
        Response.Write "<td>" & rs("Udleveret_b") & "</td>"
        Response.Write "<td>" & rs("Noglenr_b") & "</td></tr>"
        Response.Write "<td>" & rs("Dato_b") & "</td></tr>"
        Response.Write "<td>" & rs("Udleveret_c") & "</td></tr>"
        Response.Write "<td>" & rs("Noglenr_c") & "</td></tr>"
        Response.Write "<td>" & rs("Dato_c") & "</td></tr></table>"
      End If
    rs.MoveNext
    Loop
Else
    Response.Write "<p>Der er ikke flere søgeresultater</p>"
End If

myConn.Close
Set myConn = Nothing
%>


Indsæt denne kode som hvert "skjold".
Det første "skjold", som repræsenterer det første søgeresultat, skal have if-kommandoen: "If t=1 Then", som det står ovenfor.
Det næste søgeresultat skal derimod have: "If t=2 Then", det tredje resultat skal have: "If t=3 Then" osv.

Du får i virkeligheden en ny tabel for hvert søgeresultat, hvor dataene står på række, som de også oprindeligt gjorde i listen. Så kan du indsætte hvert "skjold" i hver sin celle i en tabel fx.
Overskrifterne kan du selvfølgelig sætte ind på flere måder, men jeg er ikke helt sikker på, hvad du ønsker at gøre.


Det er mit forslag. Håber det virker; ellers er der alligevel ingen skade sket ved at prøve.


  // Steeven
Avatar billede swenn Nybegynder
02. oktober 2008 - 13:24 #2
Mange tak for det. Har siddet og rodet lidt med det. Og nu virker det som jeg gerne vil have det :-) (Kan bedst arbejde med "skjold" Hehe)
Avatar billede Slettet bruger
02. oktober 2008 - 13:38 #3
Det lyder godt.
Og "skjold"-termen er fin, når vi er enige om hvad der menes :)


  // Steeven
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