On Fri, 6 Dec 2002 14:46:54 +0000 (UTC), Jensen/ <lbs-@ofir.dk> wrote:
>Efter at have læst asp tutorial på html.dk, ville jeg da lige
>prøve kræfter med det. Ideén var at jeg ville have en fil som
>hovedside og derefter læse fra forskellige *.txt filer vha.
>Request.Querystring.
>f.eks. "file.asp?id=1"
>Vha. nedenstående kode hvor jeg bruger Select Case, virker det da
>også, men der må da være en mere simpel løsning? Eller måske skal
>det gøres på en anden måde?
>Gør en god gerning og hjælp en nybegynder på rette vej.
Det er lidt svært at give et endegyldigt svar på, hvad der er
nemmest/rigtigst.
Det afhænger lidt af hvor lange dine tekster er, hvor mange der er af
dem osv.
Hvis der kun er 3-4 stykker og dette antal ikke ændres, så er din
metode for så vidt OK.
En lettere måde var måske blot at bruge SSI:
Select Case nyhed
Case "2"
%><!--#include file="2.txt"--><%
Case "3"
%><!--#include file="3.txt"--><%
Case "4"
%><!--#include file="4.txt"--><%
Case Else
%><!--#include file="1.txt"--><%
End Select
En indvending mod denne løsning er, at det er "spild", at alle 4 filer
faktisk inkluderes - selv om der kun er behov for den ene (Det er dog
kun den ene der vises.) Et modargument kunne være at
ressourceforbruget ved at inkludere 4 (små?) filer næppe er større end
ressuorceforbruget ved at starte FSO ...
Hvis du imidlertid har mange filer (lad os sige, at du ville lave en
artikel-database med flere hundrede artikler i), så skulle din metode
nok pudses en smule af:
><%
>Dim fso, f, filespec, nyhed
>Set nyhed = Request.Querystring("id")
>Set fso = CreateObject("Scripting.FileSystemObject")
' Select Case udgår
' >Select Case nyhed
' > Case "2" filespec = Server.Mappath("2.txt")
' > Case "3" filespec = Server.Mappath("3.txt")
' > Case "4" filespec = Server.Mappath("4.txt")
' > Case Else filespec = Server.Mappath("1.txt")
' >End Select
I stedet for Select Case, kunne du bruge:
filespec = Server.Mappath("./") & "\" & nyhed & ".txt"
- altså Server.Mappath på dit aktuelle directory efterfulgt af
filnavnet.
Vi forudsætter her, at filnavnet er det samme som id'et, og at filen
ligger i det aktuelle directory.
Man kunne så tilføje lidt check på, om filen faktisk eksisterer (se
foregående tråd).
>Set f = fso.OpenTextFile(filespec,1)
>Do While not f.AtEndOfStream
> Response.write f.ReadLine & "<br>"
>Loop
>f.Close
' Husk at lukke og slukke alt:
Set f = Nothing
fso.Close
Set fso = Nothing
>%>
Der findes også andre metoder - se fx:
<URL:
http://www.asp-faq.dk/article/?id=50>
Håber det gav dig lidt ideer - ellers spørg blot videre.
Good luck!
--
Jørn Andersen,
Brønshøj