29. oktober 2005 - 14:36Der er
28 kommentarer og 1 løsning
fang sidens navn
Hej alle sammen
Jeg vil lave sådan at personer som er på min side kan vælge Dansk eller Engelsk sprog på siden, men når at man klikker på det sprog man vil have, skal man ikke tilbage til forsiden, men man skal blive på den side som er på, men sidens sprog skal bare ændres, hvordan gør man det?
Lige som her på eksperten.dk, man skriver sit brugernavn og adgangskode ind, så bliver man på den side som man er på.
Når brugeren vælger sprog kan du bare poste tilbage til siden selv med en parameter eller som en form med POST og så skifte sproget i f.eks. en session-variabel...
du kunne jo bruge en database, hvor du har dine sprog i. en form, hvor du har 2 knapper (DK og GB). Den danske knap har en name=sprog og value=0 og GB har kanppen har name=sprog og value=1
Når siden hentes første gang er variablen 'sprog=0' altså tom (det kunne være den dansk)
Når brugeren trykker på en af knapperen reloader du siden og henter værdien af variablen 'sprog' sprog=request.form("sprog") if sprog = 1 then 'hent GB text fra databasen else 'ellers må det være DK 'hent GB text fra databasen end if
Ulempen er at denne kode jo skal inkluderes på alle sider. Alternativt kan du sende din form til en anden asp-side, som så redirecter tilbage til HTTP_REFERER.
<% if request.form("langdk.x") <> "" then session("lang") = "dk" elseif request.form("languk") <> "" then session("lang") = "uk" end if Response.Redirect Request.ServerVariables("HTTP_REFERER") %>
Du kan fange alle parametre med request.querystring, eller specifikke parametre med request.querystring("language") og så kan du jo bare sætte dem sammen...
Hmmmm... jeg tror jeg har tænkt på noget andet da jeg svarede. Hvis du skifter sprog via et link, så skal den kode jeg illustrerede i 29/10-2005 14:47:23 basere sig på request.querystring i stedet for request.form, som eksemplet viser...
<% if request.querystring("language") <> "" then session("lang") = "dk" elseif request.querystring("language") <> "" then session("lang") = "uk" end if Response.Redirect Request.ServerVariables("HTTP_REFERER") %>
men det er så kun nødvendigt at sende en parameter med til denne side, hvis du vil skifte sprog... eller har jeg stadig ikke fattet hvad det er du vil?
Normalt når man vil have f.eks. et id med over til den anden side, så gør jeg det sådan: <a href="side.asp?id=<%=id%>Klik her</a> og der kommer til at stå hvis id'et er 8: side.asp?id=8
Men hvordan får jeg der til at stå følgende: index.asp?language=DK eller index.asp?language=UK Jeg bruger denne kode: <a href=""" & Request.ServerVariables("SCRIPT_NAME") & """>Klik her</a>
Jeg har prøvet at sætte ?langauge=<%=language%> forskellige steder i sætningen men intet hjælper.
Den først foreslåede løsning (altså 29/10-2005 14:46:06) benytter dog en formular til at opnå dette skift... jeg kan ikke helt finde ud af hvorfor du ikke vil bruge den løsning?
Et lille spørgsmål mere, hvis jeg går ind på siden som normalt, var dette link: localhost/darkskies/index.asp Så kommer min midter side ikke med, det kommer vel også til at være når at jeg uploader den til nettet, Hvad kan jeg gør for at starter med DK?
Hvis nu du gemmer sproget i session("lang") (som jeg lagde op til i et af de første posts), så kan du jo bare sætte sproget til DK (ved at tildele session("lang") værdien "DK" i global.asa-eventet Session_OnStart). Når du så skal hente data, kan du benytte flg. SQL
strSQL = "SELECT * FROM forside WHERE language = '" & Session("lang") & "'"
Hvis du ikke ønsker at benytte session-variabel, men i stedet den løsning du er kommet fra til her til sidst, så skal du nok lave en betingelse omkring dit SQL:
if (Request.Querystring("language") & "") <> "" then strSQL = "SELECT * FROM forside WHERE language = '" & Request.Querystring("language") & "'" else strSQL = "SELECT * FROM forside WHERE language = 'DK'" end if
Din strategi kræver dog bare at du hele tiden bærer sprogvalget med rundt i url'en, hvilket ganske givet bliver en pestillens at have med at gøre i længden...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.