Hent data fra en tekst-fil

Af Allan Vebel

Opdateret: 20-10-2011

Den nemme database

Jeg kommer ofte ud for store mængder data der skal håndteres, det kan være navne og adresser, links til andre sider, stier til en billedmappe, forsamlingshusets bookingliste, varenumre og meget andet.

Jeg gider bare ikke at sidde med de mange data, for at lægge html-kode omkring de enkelte elementer, så jeg lægger det hele ind i en lang semikolonsepareret tekst-fil, en csv-fil [1], så kan jeg med et lille asp-script hive data ud at de enkelte rækker og kolonner.

Med scriptet kan jeg generere lister, tabeller, afsnit og meget andet - det er kun fantasien der sætter grænser. Forestil dig en liste med en masse krydderurter, her et et udsnit af tekst-filen:

CSV-filen

Basilikum;Ocimum basilikum;ocimum_basilikum;Beskrivelse
Citronmelisse;Melissa officinalis;melissa_officinalis;Beskrivelse
Esdragon;Artemisia dracunculus;artemisia_dracunculus;Beskrivelse
Hjulkrone;Borago officinalis;borago_officinalis;Beskrivelse
Isop;Hyssopus officinalis;hyssopus_officinalis;Beskrivelse
... og så videre.

Den første kolonne str(0) indeholder det danske navn, den næste str(1) det latinske, herefter en betegnelse der bruges til links og billedstier str(2), og til sidst en tekst med beskrivelse str(3). Det er semikolon (;) der adskiller, og semikolon må således ikke bruges i teksten.

Se Simpel liste, som er et eksempel på data fra str(0).

Scriptet

Linjerne med rød tekst er det eneste der skal rettes i.

<% Sub GetLinksFromTextFile(TextFile)
'Variable
Dim objFile, objFSO, strPathToFile, str
'Åbn forbindelse til din tekstfil
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPathToFile = Server.Mappath(TextFile)
Set objFile = objFSO.OpenTextFile(strPathToFile, 1)
'Udskriver liste med links vha. et loop
Response.Write("<div id=""li_fra_tekstfil""><ul>" & vbCrLf)
While NOT objFile.AtEndOfStream
str = Split(objFile.ReadLine, ";")
Response.Write("<li>" & str(0) & "</li>" & vbCrLf)
Wend
Response.Write("</ul></div>" & vbCrLf)
'Ryd op
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
End Sub
Dim strTextFile
strTextFile = "urter.csv"
Call GetLinksFromTextFile(strTextFile)
%>

Liste med billeder

Det næste er Liste med billeder, hvor jeg også har flettet alt-teksten ind.

Response.Write("<li><img alt=""" & str(0) & """")
Response.Write(" src=""" & "../b/urter/" & str(2))
Response.Write("100.jpg" & """" & "></li>" & vbCrLf)

Her har jeg, for overskuelighedens skyld, valgt at dele det op i 3 linjer. Response.Write-linjen kan skrives i én lang linje med & mellem de enkelte udtryk, men det kan hurtigt blive for uoverskueligt.

I linje 1 henter jeg alt-teksten fra str(0).

I linje 2 henter jeg billedstien + billednavnet (det latinske navn med underscore) fra str(2) .

I linje 3 henter jeg en tilføjelse til billedet, idet billedet i virkeligheden hedder str(2)+100.jpg, og afslutter med </li> .

Man kan naturligvis vælge at lægge hele billedstien ind i tekst-filen med alt- og title-tekster og det hele, men det kan jo være en meget lang liste, og så er denne metode langt mere fleksibel.

Liste med links

Det næste er Liste med a, her har jeg bare indføjet en a href, har trukket koden ud fra latinsk_navn og har sat en .asp-endelse på.

Response.Write("<li><a href=""" & str(2) & ".asp" & """>")
Response.Write(str(0) & "</a>" & "</li>" & vbCrLf)

Afsnit med billeder og tekst

Det sidste er Afsnit med billeder og tekst. Her er det ikke en <li> der er brugt, men en <p>, hvor billedet er med float:left;. Her har jeg også fået en overskrift med i <h2>, en <a> på billedet og en <span> til det latinske navn.

Response.Write("<h2>" & str(0) & "</h2>" & vbCrLf & vbCrLf)
Response.Write("<p><a href=""" & str(2) & ".asp" & """>")
Response.Write("<img alt=""" & str(0) & """")
Response.Write(" src=""../b/urter/" & str(2) & "100.jpg")
Response.Write("""></a>")
Response.Write("<span>" & str(1) & "</span>. ")
Response.Write(str(3))
Response.Write("</p>" & vbCrLf & vbCrLf)

Da billedet er med float, skal der også være en clear, og den har jeg sat på <h2>, som er det efterfølgende element i hvert afsnit.

CSS-koden

#p_fra_tekstfil img{
float:left;
margin:0 10px 10px 0;
border:solid 1px #000;
}
#p_fra_tekstfil h2{
margin:0 0 3px 0;
font-weight:normal;
font-size:160%;
clear:both;
}
#p_fra_tekstfil p{
margin:0;
padding:0;
}
#p_fra_tekstfil span{
font-weight:bold;
background:#fff;
color:#777;
}

Man kan naturligvis også lave tabeller og mange andre ting med scriptet, prøv selv at lege videre!

[1] En csv-fil kan åbnes i Microsoft Excel, og programmet kan også gemme i dette format.

Retur til [Artikler]Retur til [Artikler]

Gå til toppen af sidenArtikler om HTML

Gå til toppen af sidenFAQ-svar om HTML

Gå til toppen af sidenKodebasen om HTML

Page copy protected against web site content infringement by Copyscape

xhtml css


Brugere nu: 1
Printer
Home