webForumDet fria alternativet

IF-sats och include krånglar

ASPur ASP

4 svar · 1 312 visningar · startad av annesophie

Medlem sedan juni 20012 236 inlägg
Frågan#1

Hej,

Jag är nu så frustrerad att jag överväger att slänga ut datorn genom fönstret. x(

Bygger ett litet script för besökare enkelt ska kunna byta språk på sidan.

Upplägget:

  1. Besökaren väljer språk, valet lagras i en databas
  2. Beroende på valt språk så ska olika filer språk-laddas in. Dessa filer är .txt-filer.

Rs letar efter besökare i databasen, om träff så kollar den efter valt språk. Om det saknas träff, dvs att besökaren inte valt språk, så ska den tanka in UK.asp som default. Just nu testar jag bara med två språk-filer, men så småningom är det ju tänkt att vara 14 olika filer.

IF-satsen:

<%
IF rs.eof then
%>
	<!--#include file ="include/uk.asp"-->
<%
ELSE
	IF rs("sessionLang") = "SE" then
%>
		<!--#include file ="include/se.asp"-->
<%	
	ELSEIF rs("sessionLang") = "UK" then
%>
		<!--#include file ="include/uk.asp"-->
<%
	ELSE
		response.write ""
	END IF
END IF
%>

Innehållet i t ex uk.asp ser ut såhär:
<%
Const MSG_SEARCH_GENERATED = "You search generated the following result:"
Const MSG_SHOPPINGBASKET_IS_EMTY = "The shopping bag is empty."
%>

Innehållet i de olika filerna är ju likt, förutom att språken varierar. Men Const är ju detsamma, och heter likadant.

Vad händer då?

Felmeddelande:

*Microsoft VBScript compilation error '800a0411'

Name redefined

/include/uk.asp, line 3

Const MSG_SEARCH_GENERATED = "You search generated the following result:"
------^*

Jag skulle förstå felmeddelandet om jag lade in alla include-filerna bredvid varandra, och utan IF-satsen, eftersom samma Const då hade funnits med flera gånger och skapat problem. MEN nu när det finns en IF-sats (och den är korrekt och ger korrekta svar om jag tar bort include-fil-länkarna) så ska den ju bara tanka in en språk-include-fil åt gången. Alltså borde problemet "Name redefined" inte uppstå.

Eller?

Tänker jag helt galet? Blir iallafall snart galen. 4 sure. x(

Medlem sedan juni 20012 236 inlägg
#2

Äsch, kom på svaret efter att ha ätit lunch.
Tog bort Const ifrån txt-filerna. ;)

Medlem sedan juni 20014 421 inlägg
#3

Har för mig att "#include file" alltid inkluderar filerna, då det läses in innan själva filen exekveras.

Medlem sedan juni 2012582 inlägg
#4

Det stämmer som colione säger. Använd Server.Execute("filnamn.asp") istället.

Medlem sedan juli 2013281 inlägg
#5

Stämmer.
Sen kan du även med fördel byta ut alla #INCLUDE FILE till #INCLUDE VIRTUAL då VIRTUAL utgår från roten medan FILE utgår från respektive fils definitiva placering...

Ja, alltså, enklare beskrivet, du kan copy/paste all din kod enklare mellan olika mappar osv utan att ändra i koden.

131 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)