/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hjælp til Request.Querystring
Fra : Jensen/


Dato : 06-12-02 15:47

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.
<%
Dim fso, f, filespec, nyhed
Set nyhed = Request.Querystring("id")
Set fso = CreateObject("Scripting.FileSystemObject")
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
Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream
Response.write f.ReadLine & "<br>"
Loop
f.Close
%>

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Michael Hyldsgaard (06-12-2002)
Kommentar
Fra : Michael Hyldsgaard


Dato : 06-12-02 16:10

"Jensen/" <lbs-@ofir.dk> skrev i en meddelelse
news:asqd8u$d57$1@sunsite.dk...
>
>, men der må da være en mere simpel løsning? Eller måske skal
> det gøres på en anden måde?

Du kunne fx gøre sådan her... så slipper du da for "Select Case":

<%
Dim fso, f, filespec, nyhed
Set nyhed = Request.Querystring("id")
Set fso = CreateObject("Scripting.FileSystemObject")

If nyhed > "" Then
filespec = Server.Mappath(nyhed & ".txt")
End If

Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream
Response.write f.ReadLine & "<br>"
Loop
f.Close
%>

// Michael
// http://www.jirty.dk



Jørn Andersen (06-12-2002)
Kommentar
Fra : Jørn Andersen


Dato : 06-12-02 16:41

On Fri, 6 Dec 2002 16:10:11 +0100, "Michael Hyldsgaard"
<michael@jirty.dk> wrote:


>If nyhed > "" Then
> filespec = Server.Mappath(nyhed & ".txt")

Hvis der nu skal være en If her, så bør den vel afsluttes anderledes:

' End If
>Set f = fso.OpenTextFile(filespec,1)
>Do While not f.AtEndOfStream
> Response.write f.ReadLine & "<br>"
>Loop
>f.Close

Else
' Gør hvad der skal gøres, hvis ikke ...
End If

--
Jørn Andersen,
Brønshøj

Jørn Andersen (06-12-2002)
Kommentar
Fra : Jørn Andersen


Dato : 06-12-02 16:28

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

Jørn Andersen (06-12-2002)
Kommentar
Fra : Jørn Andersen


Dato : 06-12-02 16:39

On Fri, 06 Dec 2002 16:28:17 +0100, Jørn Andersen <jorn@jorna.dk>
wrote:

>I stedet for Select Case, kunne du bruge:
>
>filespec = Server.Mappath("./") & "\" & nyhed & ".txt"

Det er selvfølgelig smartere at gøre som Michael foreslår:
filespec = Server.Mappath(nyhed & ".txt")


--
Jørn Andersen,
Brønshøj

Jensen/ (06-12-2002)
Kommentar
Fra : Jensen/


Dato : 06-12-02 16:56

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:
> On Fri, 06 Dec 2002 16:28:17 +0100, Jørn Andersen <jorn@jorna.dk>
> wrote:
>
> >I stedet for Select Case, kunne du bruge:
> >
> >filespec = Server.Mappath("./") & "\" & nyhed & ".txt"
>
> Det er selvfølgelig smartere at gøre som Michael foreslår:
> filespec = Server.Mappath(nyhed & ".txt")
>
>
> --
> Jørn Andersen,
> Brønshøj

Tak for jeres indlæg, jeg har mange txt filer så det måtte kunne
gøres lettere end med Case.
Men nu virker det uden, så jeg ved hvor jeg kan henvende mig næste
gang. :)

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste