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

Fältdata som variabel


joros

Rekommendera Poster

Jobbar med ett något större system där allt som visas på sidan skrivs ut med fördefinierade variabler då sidan kan användas på olika språk.

 

Variabeln för att skriva ut t.ex Bli medlem heter str_3057. Håller på att bygga en liten lösning där jag behöver spara namnen på variablerna i en databas som sedan ska presenteras i en översikt.

 

Det är ju inga problem att skriva ut variabelsträngen från databasen. Men, går det att göra det så att den inte skriver ut själva strängen utan läser av det som en variabel?

 

Istället för att skriva ut str_3057 ska det skrivas exempelvis <%=str_3057%> så det i detta fall står Bli medlem.

 

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Är det något sånt här du tänker på?

 

Dim str_3057

str_3057 = "Response.Write ""Bli medlem"""

Execute(str_3057) 

 

/PJ

 

[inlägget ändrat 2008-11-18 15:05:09 av Pedro]

Länk till kommentar
Dela på andra webbplatser

Jag brukar annars jobba med Scripting.Dictionaries

Men sätter en språkvariabel så här:

Set d = Server.CreateObject("Scripting.Dictionary")
d.Add("str_3057","Bli medlem")

 

om du har variabelnamnet i databasen då anropar du språkvariablens värde så här:

 

response.write d.item( RS("field") )

där RS("field") är fältet i databasen.

 

 

Språkvariablarna har du med fördel i en includefil.

Mer info här:

http://asp.codenewbie.com/articles/asp/1421/Scripting_Dictionary-Page_1.html

 

Länk till kommentar
Dela på andra webbplatser

Hmm...jo, det skulle kunna varit en variant. Men grejen är ju det att jag då får använda mig av X antal olika Scripting.Dicts för varje språk. Men tanke var något åt följande håll som inte verkar fungera.

 

Dim str_register
Set str_register=Server.CreateObject("Scripting.Dictionary")
str_register.Add "str1_1","<%=str1_1%>"

 

Det går ju inte att ha <% %> i befintlig kod. Men för att enklare visa tanken.

 

Följt av:

 

Response.Write str_register.item( testSQL("rubrik") )

[inlägget ändrat 2008-11-19 08:19:17 av joros]

Länk till kommentar
Dela på andra webbplatser

Följande har jag provat med nu vilket inte ger något. :-(

 

Dim str_register
Set str_register=Server.CreateObject("Scripting.Dictionary")
str_register.Add "str1_1",str1_1

Set testSQL = Connect.Execute("SELECT rubrik FROM Users_favoriter WHERE anvid = 2 AND rubrik = 'str1_1' ORDER BY avd_sort")

Do While Not testSQL.EOF
rubrikStr = testSQL("rubrik")

Response.Write str_register.Item(rubrikStr)

testSQL.MoveNext
Loop

testSQL.Close
Set testSQL = Nothing

 

Har även kontrollerat att variablen rubrikStr innehåller ett giltigt värde.

 

Länk till kommentar
Dela på andra webbplatser

str_register.Add "str1_1",str1_1

 

Men har du tilldelat variabeln str1_1 något?

Det kanske rentutav skall vara en sträng?

 

 

str_register.Add "str1_1",[color="#ff0000"]"str1_1"[/color]

 

 

Länk till kommentar
Dela på andra webbplatser

Men grejen är ju det att jag då får använda mig av X antal olika Scripting.Dicts för varje språk.

 

Ja, i min språk-includefil kontrollerar jag vilket skråk som körs och tilldelar variablarna olika språk

 

<%
SELECT CASE current_language
CASE "", "SE" ' Svenska är default
d.add "var_language","Språk"
d.add "var_closewindow","Stäng fönster"
CASE "NO"
d.add "var_language","Språk"
d.add "var_closewindow","Luk vindue"

CASE "EN"
d.add "var_language","Langage"
d.add "var_closewindow","Close window"

END SELECT
%>

 

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...