Avatar billede henrik4223 Nybegynder
20. oktober 2003 - 19:25 Der er 9 kommentarer og
1 løsning

MS Acces database, asp fil - Layout

Jeg har lavet en søgning af en database, men layoutet stinker for vildt.

Siden er på: http://a.domaindlx.com/Hejsa/search.htm

Men søgningen biver grim. Hvis man f.eks. søger på ACETAMIDE MEA kommer der en masse tabellignede ting frem med resultaterne i, og ACETAMIDE MEA bliver nævnt flere gange.

Hvordan får man det sat op til fx at vise det sådan her:

Ingrediens
ACETAMIDE MEA

(skjule "Dansk navn og Tysk navn, hvis posten er tom)

FUGTIGHEDSBEVARENDE eller FUFGTIGHEDSGIVENDE
Holder på fugtigheden eller øger vandindholdet i huden og bevarer huden blød og glat.

ANTISTATISK
Reducerer statisk elektricitet ved at neutralisere elektrisk ladning på overfladen.

Mit script er (der er fra en toturial):

<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat</title>
</head><body>

<%
' Henter værdien fra soeg.htm
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("search.htm")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ingrediens, dansk, tysk, navn, beskrivelse FROM make_data WHERE"
strSQL = strSQL & " (ingrediens LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (dansk LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (tysk LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("INCI.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<p>Søgeresultat</p>"
    Response.Write "<table border=1>"
    Response.Write "<tr><th>Ingrediens</th><th>Dansk navn</th><th>Tysk navn</th><th>Funktion</th><th>Beskrivelse</th></tr>"
    Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("ingrediens") & "</td>"
        Response.Write "<td>" & rs("dansk") & "</td>"
        Response.Write "<td>" & rs("tysk") & "</td>"
        Response.Write "<td>" & rs("navn") & "</td></tr>"
        Response.Write "<td>" & rs("beskrivelse") & "</td></tr>"
        rs.MoveNext
    Loop
    Response.Write "</table>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End If

' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>

</body></html>
Avatar billede thesurfer Nybegynder
20. oktober 2003 - 19:36 #1
jeg tror at den bliver grim hvis indholdet af rs("et-eller-andet") er tomt..

prøv med:
dim strIng, strDansk, strTysk, strNavn, strBesk
strIng = rs("ingrediens"): if strIng = "" then strIng = "&nbsp;"
strDansk = rs("dansk"): if strDansk = "" then strDansk = "&nbsp;"
strTysk = rs("tysk"): if strTysk = "" then strTysk = "&nbsp;"
strNavn = rs("navn"): if strNavn = "" then strNavn= "&nbsp;"
strBesk = rs("beskrivelse"): if strBesk = "" then strBesk = "&nbsp;"

i stedet for:
& rs("beskrivelse") &

skal der stå:
& strBesk &

osv..

husk altid at bruge Option Explicit i toppen (allerøverst) af dine dokumenter. Du skal så til at definere alle dine variabler, hvilket betyder at du undgår stavefejl.. prøver du at bruge et ord den ikke kender (pga stavefejl) vil du få besked om det..
Avatar billede henrik4223 Nybegynder
20. oktober 2003 - 19:40 #2
okay, men er der ikke en metode, hvor man kan hente de specielle informationer fra databasen (asp søgninge) og sætte dem ind i et layout i html?
Avatar billede thesurfer Nybegynder
20. oktober 2003 - 19:46 #3
du kan smide dem over i variabler og efter asp koden kan du kalde dem med f.eks. <%=strDansk%>.. den skriver så indholdet af variablen strDansk.

hvis du f.eks. har søgt på ACETAMIDE MEA og har fået mere end 1 svar, kan du vælge at bruge en array, dvs svarene bliver splittet af et eller andet tegn (bruges ofte ";").. på engelsk hedder det en "delimiter"..
du kan så bageefter splitte stengen ved ";" og få resulterne tilbage.. se evt http://www.html.dk/tutorials/asp/lektion8.asp der omhandler arrays..

men du burde kunne rette "fejlen" ved at følge mit første indlæg..
Avatar billede henrik4223 Nybegynder
20. oktober 2003 - 20:04 #4
okay, jeg er ikke en total haj til det her. Jeg har prøvet at skrive <%=strDansk%> i slutningen af asp'en men der sker ikke noget nyt...
Avatar billede thesurfer Nybegynder
20. oktober 2003 - 20:20 #5
ahh.. det er da klart.. du har ikke noget i feltet "dansk".. prøv med strIng i stedet for strDansk..
den har åbenbart skrevet et mellemrum, som du naturligvis ikke kan se..
Avatar billede henrik4223 Nybegynder
20. oktober 2003 - 22:32 #6
Jeg har gjordt det, og nu skriver den: Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'strIng'

/Hejsa/search.asp, line 58
Avatar billede henrik4223 Nybegynder
20. oktober 2003 - 23:20 #7
Jeg har fået din metode til at virke, og det bliver pænere, men tilgængæld går søgningen amok, og giver nogle forkerte søgeresultater...`?
Avatar billede thesurfer Nybegynder
21. oktober 2003 - 15:47 #8
bruger du ikke tabeller mere? .. kan ikke se dem mere..
Avatar billede henrik4223 Nybegynder
21. oktober 2003 - 19:34 #9
Jeg har fået ordnet mit problem, men nu irreterer det mig, at jeg ikke kan bruge normal html inde i Response.Write ("")
F.eks. virker Response.Write ("<p><font color="#FF0000">ABIES ALBA</font></p>") ikke...?
Avatar billede thesurfer Nybegynder
22. oktober 2003 - 11:25 #10
du starter " tegnet efter .write.. hvis du så skriver " tegnet igen, afslutter du strengen..

det du skal bruge er ' tegnet i html i stedet for " tegnet:

Response.Write "<p><font color='#FF0000'>ABIES ALBA</font></p>"

der er også andre metoder at gøre det på:

f.eks. double "" (er ikke helt sikker på denne):
Response.Write "<p><font color=""#FF0000"">ABIES ALBA</font></p>"

f.eks. 3x" (er ikke helt sikker på denne):
Response.Write "<p><font color="""#FF0000""">ABIES ALBA</font></p>"

f.eks. chr(34) koden for ":

Response.Write "<p><font color=" & chr(34) & "#FF0000" & chr(34) & ">ABIES ALBA</font></p>"

---

men det nok nemmest at bruge ' i stedet for ":
Response.Write "<p><font color='#FF0000'>ABIES ALBA</font></p>"
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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