Just nu i M3-nätverket
Gå till innehåll

variabler i #include file


sudd

Rekommendera Poster

Tja..

 

Ska lägga in en include file som ska slumpa mellan ett antal olika filer: 1.asp, 2.asp, 3.asp osv.

 

Jag slumpar fram ett tal som jag namnger <%=talet%> och vill nu sätta in det i include filen.

 

Alltså <!-- #include file="<%=talet%>.asp" --> men det fungerar inte eftersom den skriver ut <%=talet%> istället för att generera ett nummer.

 

Någon som har en lösning på detta?

Länk till kommentar
Dela på andra webbplatser

Att inte folk lär sig detta snart ;-)

 

Includes är just includes, allt sätts ihop till en enda stor vacker fil som sedan slängs till ASP motorn, det går alltså inte göra på det sätt du vill.

 

Du kan däremot använda tex Server.Execute för att exekvera andra ASP filer eller FileSystemObject för att läsa in från andra filer beroende på vad du vill göra.

 

 

Länk till kommentar
Dela på andra webbplatser

Hej, tack för svaret! Hur göra man en Server.Execute eller för att läsa in från andra filer? Är inte så haj på det hära :)

 

Länk till kommentar
Dela på andra webbplatser

Stefan Trimmel

Det går inte att göra så som du gjorde.

 

Exemplet nedan fungerar men det var kanske inte så du ville ha det.

<% If talet = 1 Then %>
<!-- #include file="1.asp" -->
<% ElseIf talet = 2 Then %>
<!-- #include file="2.asp" -->
<% ElseIf talet = 3 Then %>
<!-- #include file="3.asp" -->
<% End If %>

 

Länk till kommentar
Dela på andra webbplatser

 

Helt enkelt:

 

Server.Execute( talet & ".asp" )

 

Eller om du vill helt byta sida som exekveras:

 

Server.Transfer( talet & ".asp" )

 

 

Länk till kommentar
Dela på andra webbplatser

Tack! Det fungerar säkert men jag vet inte hur jag ska skriva om jag vill att den ska ligga i en mapp.

Har prövat detta, men då får jag ett felmeddelande:

 

server.execute("mappen/"&variabel&".asp")

 

Länk till kommentar
Dela på andra webbplatser

Borde fungera bra, sökvägen ska vara relativ till asp scriptet som körs.

 

Vad får du för fel och hur ligger dina scripts i förhållande till varandra ?

 

Länk till kommentar
Dela på andra webbplatser

koden:

<%

Server.Execute("mapp/"&slumptal&".asp")

%>

 

felmeddelande:

 

The call to Server.Execute failed while loading the page.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Att lägga IF-satser runt include-statements är ett dåligt förslag, eftersom include-statements körs innan koden parsas och exekveras. Därför får servern onödigt mycket att göra, då det bara är en av include-filerna som ska parsas, men alla include-filer inkuderas ändå.

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Den gås igenom av interpretatorn för att "kontrolleras". Det är lite svengelska - Parse är det engelska ordet, tolka eller analysera är svenska översättningen. "Tolkas" hade nog varit ett bättre ord än "parsas" :)

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Den gås igenom av interpretatorn för att "kontrolleras".

 

Okej men vad är det som kontrolleras då?

 

[inlägget ändrat 2002-10-18 15:47:20 av Starre]

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Om all kod är syntaktiskt riktigt skriven enkelt uttryckt.

Två fel kan uppstå när man kör en asp-sida, det ena är syntaktiska fel som fångas upp av "tolkaren" eller "parsern" och Run-time-fel, som uppstår när koden exekveras.

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Tjena!

 

Inte nog med att den kontrolleras - den kompileras/exekveras också...

 

Dvs. kompilatorn eller interpretatorn går igenom koden (texten), och hajjar till varje gång den hittar ett ord den känner igen. hittar den ordet "print" så vet den att den ska skriva ut någonting och genererar kod för att göra det, som sedan eventuellt körs (om det är fråga om interpretering) (vilket det oftast är när det gäller script)...

 

/ Johan

 

Länk till kommentar
Dela på andra webbplatser

Syntaktiska fel är väl till exempel om en EndIfeller en %> saknas?

 

[inlägget ändrat 2002-10-18 15:58:22 av Starre]

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Yep.

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Yep.

 

Och Run-time-fel till exempel rena felaktigheter i scriptet? Typ försöka använda servervariabler som inte existerar?

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Tror att just server-variabler som inte existerar fångas upp av parsern.

Men ex.vis följande skulle ge ett runtime-fel:

dim oObj
set oObj=Server.CreateObject("AAADODB.Connection")

 

Eftersom AAADODB.Connection inte är ett giltigt namn på en klass så går det inte att utföra, men det är ingenting som parsern kontrollerar.

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Dessa server-metoder är inget som finns i pws, eller?

 

Har inte sett dem förut, men de låter onekligen praktiska...

 

Länk till kommentar
Dela på andra webbplatser

Ett tips är att använda "Option Explicit" överst i ASP koden (efter @Language raden), då får du ett felmeddelande om variabeln inte är deklarerad. Stäng av eventuella "On Error Resume Next". Om felkoll måste stängas av sätt omedelbart på den igen när du kört något som kan fela, t e x rs.MoveFirst, e g "On Error Goto 0".

 

Mvh

 

Jimmy

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...