08. januar 2006 - 13:31
Der er
60 kommentarer og 1 løsning
Problemer med ?language=
Jeg har et problem med ?language= på mit site.
Her er et link som I kan se:
http://www.darkskies.dk/programs.asp?language=DK Prøv at fjerne DK og skrive noget andet end DK eller UK, den viser noget af sitet på engelsk, hvordan sætter jeg den til at vise sitet på DK, lige meget hvad man skriver.
Her er den kode som jeg har fået fra et af mine spørgsmål her på eksperten:
<%
if Request.QueryString("language") = "DK" then
strSQL1 = "select * from tabel1 WHERE language='DK' and nummerok = '1' ORDER BY id DESC"
strSQL2 = "select * from tabel1 WHERE language='DK' and nummerok = '1' ORDER BY id DESC"
elseif Request.QueryString("language") = "UK" then
strSQL1 = "select * from tabel2 WHERE language='UK' and nummerok = '1' ORDER BY id DESC"
strSQL2 = "select * from tabel2 WHERE language='UK' and nummerok = '1' ORDER BY id DESC"
else
'Response.Redirect Request.ServerVariables("SCRIPT_NAME") & "?language=DK"
'Response.Redirect "" & Request.ServerVariables("SCRIPT_NAME") & "?language=DK"
'Response.Redirect "index.asp"
end if
set rs1 = Conn.Execute(strSQL1)
set rs2 = Conn.Execute(strSQL2)
%>
Hvis jeg prøver at flytte redirect sætningen uden for if sætningen, så virker den fint, men bare ikke ingen for if sætningen.
Kan I se hvad der er galt, da jeg har siddet med det problem de sidste par timer.
Annonceindlæg fra Capgemini
Slettet bruger
08. januar 2006 - 13:40
#1
hvorfor ikke noget ala: dim strLang strLang = upper(trim(Request.QueryString("language"))) if("DK <> strLang) and ("UK" <> strLang) then strLanf = "DK" end if strSQL1 = "select * from tabel1 WHERE language='" & strLang & "' and nummerok = '1' ORDER BY id DESC" strSQL2 = "select * from tabel1 WHERE language='" & strLang & "' and nummerok = '1' ORDER BY id DESC" set rs1 = Conn.Execute(strSQL1) set rs2 = Conn.Execute(strSQL2)
08. januar 2006 - 13:46
#2
Når at jeg har sat " ved DK, og uploader så får jeg denne fejl: Microsoft VBScript runtime error '800a000d' Type mismatch: 'upper' /programs_incl.asp, line 15 Linie 15 er denne linie: strLang = upper(trim(Request.QueryString("language"))) Hvad er fejlen?
Slettet bruger
08. januar 2006 - 13:49
#3
Sikkert at man ikke laver upper case med en funktion som hedder Upper , kunne ikke huske hvad den hed - men der skal stå strLang = ucase(trim(Request.QueryString("language"))) ;)
08. januar 2006 - 13:53
#4
Lige meget hvad, men det hjælper ikke.
Slettet bruger
08. januar 2006 - 14:00
#5
Hvad giver strLang = ucase(trim(Request.QueryString("language"))) response.write strLang response.end ?
08. januar 2006 - 14:02
#6
Når at jeg trykker på DK så står der DK, lige sådan når at man skriver UK står der UK.
Slettet bruger
08. januar 2006 - 14:04
#7
Er det mig der bare har tabt kæden eller var det ikke meningen? Er det ikke sådan at du har en side der kan vises i DK eller UK og hvis man nu ikke skriver noget eller skriver HUMBUG så skal den vises i DK ??
08. januar 2006 - 14:04
#8
Det er nok bedre med: 1) sprog = UCase(Request.QueryString("language")) if sprog <> "UK" then sprog = "DK" 2) Og du behøver vist kun 1 SQL sætning, som kan afvikles flere gange: strSQL = "select * from tabel1 WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" set rs1 = Conn.Execute(strSQL) set rs1 = Conn.Execute(strSQL) 3) Hvilken type er "nummerok"? /theSurfer
08. januar 2006 - 14:07
#9
Det er korrekt, men hvis jeg fjerner UK eller DK i adresse menuen, og skriver sss i stedet for, så bliver noget af sitet lavet om til engelsk og noget af sitet bliver ikke vist. nummerok er et tekst felt.
08. januar 2006 - 14:07
#10
rettelse (copy&paste fejl): strSQL = "select * from tabel1 WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" set rs1 = Conn.Execute(strSQL) set rs2 = Conn.Execute(strSQL) /theSurfer
08. januar 2006 - 14:08
#11
Det her vil altid blive "DK" / dansk, med mindre at du skrive "UK" i "?language=": sprog = UCase(Request.QueryString("language")) if sprog <> "UK" then sprog = "DK" /theSurfer
08. januar 2006 - 14:08
#12
Jeh kan ikke bruge en SQL sætning, da det er en database med 2 tabeller.
Slettet bruger
08. januar 2006 - 14:10
#13
Er vi ikke ved at være henne ved at du kan klare dig med dim strLang strLang = ucase(trim(Request.QueryString("language"))) if("UK" <> strLang) then strLang = "DK" end if strSQL1 = "select * from tabel1 WHERE language='" & strLang & "' and nummerok = '1' ORDER BY id DESC" set rs1 = Conn.Execute(strSQL1)
08. januar 2006 - 14:11
#14
Så sådan her da: dim sprog, tabel sprog = "UK" tabel = "tabel2" sprog = UCase(Request.QueryString("language")) if sprog <> "UK" then sprog = "DK" tabel = "tabel1" end if strSQL = "select * from " & tabel & " WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" set rs1 = Conn.Execute(strSQL) set rs2 = Conn.Execute(strSQL) /theSurfer
08. januar 2006 - 14:13
#15
..jeg kunne se at du bruger "tabel1" til "DK" og "tabel2" til "UK".. /theSurfer
08. januar 2006 - 14:13
#16
08. januar 2006 - 14:13
#17
Ja, det er korrekt.
08. januar 2006 - 14:18
#18
trekkies> Prøv lige med: 08/01-2006 14:11:47 /theSurfer
08. januar 2006 - 14:28
#20
trekkies> prøv det her: dim sprog, tabel sprog = "UK" tabel = "tabel2" sprog = UCase(Request.QueryString("language")) if sprog <> "UK" then sprog = "DK" tabel = "tabel1" end if strSQL = "select * from " & tabel & " WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" response.write "strengen er: " & strSQL response.end ' afslut afvikling ... ! set rs1 = Conn.Execute(strSQL) set rs2 = Conn.Execute(strSQL) Hvad skriver den så? /theSurfer
08. januar 2006 - 14:30
#21
Jeg kan se resultatet: strengen er: select * from programmer_UK WHERE language='UK' and nummerok = '1' ORDER BY id DESC /theSurfer
08. januar 2006 - 14:30
#22
Så kommer dette frem: DK siden: strengen er: select * from tabel1 WHERE language='DK' and nummerok = '1' ORDER BY id DESC UK siden: strengen er: select * from tabel2 WHERE language='UK' and nummerok = '1' ORDER BY id DESC
08. januar 2006 - 14:33
#23
OK :) tabel1 er programmer_DK og tabel2 er programmer_UK Hvis jeg skriver noget andet end DK eller UK, så skriver den dette: strengen er: select * from programmer_UK WHERE language='UK' and nummerok = '1' ORDER BY id DESC
08. januar 2006 - 14:33
#24
Er du sikker på, at du bruger koden fra 08/01-2006 14:28:33 korrekt? Jeg kan se, at du ændrer nogle værdier.. /theSurfer
08. januar 2006 - 14:35
#25
Hvis det er sådan, kan du bare bruge: dim sprog sprog = "UK" if UCase(Request.QueryString("language")) <> "UK" then sprog = "DK" strSQL = "select * from programmer_" & sprog & " WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" response.write "strengen er: " & strSQL response.end ' afslut afvikling ... ! set rs1 = Conn.Execute(strSQL) set rs2 = Conn.Execute(strSQL) /theSurfer
08. januar 2006 - 14:35
#26
Jeg har skrevet tabel1 og tabel2 som en sikkerhed. Ja, jeg er sikker på at jeg bruger koden korrekt, jeg prøver at tage et screen dump af koden.
08. januar 2006 - 14:39
#27
08. januar 2006 - 14:41
#28
Prøv lige rettelserne i 08/01-2006 14:35:10. /theSurfer
08. januar 2006 - 14:43
#29
DK: strengen er: select * from programmer_DK WHERE language='DK' and nummerok = '1' ORDER BY id DESC UK: strengen er: select * from programmer_UK WHERE language='UK' and nummerok = '1' ORDER BY id DESC
08. januar 2006 - 14:44
#30
...er det med rettelserne fra 08/01-2006 14:35:10? /theSurfer
08. januar 2006 - 14:44
#31
Ja
08. januar 2006 - 14:46
#32
Det giver ikke nogen mening.. Nå, så må jeg jo lave en lokal test.. hang on.. PS: I mellemtiden, kan du lige smide et screenshot op.. :-) /theSurfer
08. januar 2006 - 14:48
#33
08. januar 2006 - 14:54
#34
Jeg har lige lavet denne test: <% dim sprog sprog = "UK" if UCase(Request.QueryString("language")) <> "UK" then sprog = "DK" strSQL = "select * from programmer_" & sprog & " WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" response.write "strengen er: " & strSQL response.end ' afslut afvikling ... ! %> Testen virker perfekt.. fejlen må være hos dig :-) Prøv evt med denne her: dim sprog if UCase(request.querystring("language")) = "UK" then sprog = "UK" else sprog = "DK" end if strSQL = "select * from programmer_" & sprog & " WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" response.write "strengen er: " & strSQL response.end ' afslut afvikling ... ! set rs1 = Conn.Execute(strSQL) set rs2 = Conn.Execute(strSQL) /theSurfer
08. januar 2006 - 14:57
#35
Efter du har testet 08/01-2006 14:54:23, lav denne test: response.write "QueryString: *" & Request.QueryString("language") & "*<br>" response.write "querystring: *" & request.querystring("language") & "*<br>" response.end Det skal bare placeres et ellet andet sted, hvor det bliver afviklet.. /theSurfer
08. januar 2006 - 15:01
#37
Der er et eller andet seriøst galt hos dig! :-) Den skal ikke kun skriv "DK" eller "UK"! Hvis jeg skriver "test", skal den skrive "*test*", hvilket den ikke gør.. Smid lige et screenshot mere.. :-) /theSurfer
08. januar 2006 - 15:02
#38
Jeg tester alt på en web server. Vil du have et screenshot af hele min kode?
08. januar 2006 - 15:04
#39
Nej, det behøver jeg ikke.. bare den der del.. Husk at sløre evt stier, filnavn og passwords.. /theSurfer
08. januar 2006 - 15:06
#40
Hvilken del mener du?
08. januar 2006 - 15:07
#41
Den del med UK/DK og if-sætningerne.. plus querystring med "*" linierne.. /theSurfer
08. januar 2006 - 15:07
#42
Der er et eller andet seriøst galt her.. Virker det fint på din egen webserver? /theSurfer
08. januar 2006 - 15:14
#44
Dit webhotel har åbenbart problemer at at forstå request.querystring.. eller også har den (på en eller anden mystisk måde) cachet querystringen.. Prøv denne test i din IIS (lokalt): <% dim sprog sprog = "UK" if UCase(Request.QueryString("language")) <> "UK" then sprog = "DK" strSQL = "select * from programmer_" & sprog & " WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" response.write "strengen er: " & strSQL response.end ' afslut afvikling ... ! %> Du kan bare oprette en ny .asp fil, og indsætte koden inde i den.. /theSurfer
08. januar 2006 - 15:21
#46
programs.asp er siden uden for de forskellige notepad++ version ?.? programs_incl.asp er siden som indeholder de forskellige notepad++ version ?.? programs_incl.asp er i en iframe.
08. januar 2006 - 15:23
#47
En mulig løsning.. i programs.asp indsætter du følgende i toppen (dog under Option Explicit, hvis du bruger det): <% dim sprog sprog = "UK" if UCase(Request.QueryString("language")) <> "UK" then sprog = "DK" session("sprog") = sprog %> og i din programs_incl.asp: sprog = session("sprog") strSQL = "select * from programmer_" & sprog & " WHERE language='" & sprog & "' and nummerok = '1' ORDER BY id DESC" Så skulle den gerne tage "language" fra "programs.asp", gemme det i en session, hente det i programs_incl.asp /theSurfer
08. januar 2006 - 15:25
#48
En anden (og muligvis bedre metode), er at retter asp koden her: <iframe src="programs_incl.asp?language=UK" height="500px" scrolling="auto" frameborder="0" width="395px"> </iframe> Du bruger garanteret en eller anden ASP koden til language her: programs_incl.asp?language=UK Hvordan ser den kode ud...? /theSurfer
08. januar 2006 - 15:26
#49
Koden ser sådan ud: <iframe src="programs_incl.asp?language=<%=language%>" height="500px" scrolling="auto" frameborder="0" width="395px"> </iframe>
08. januar 2006 - 15:28
#50
OK.. så er vi noget et skridt videre.. Hvor sætter du "language" henne, så du kan kalde den via "<%=language%>"..? Et eller andet sted må der stå: language = .... ? /theSurfer
08. januar 2006 - 15:28
#51
noget = nået :-) /theSurfer
08. januar 2006 - 15:30
#52
Jeg kan se at siden (i iframen) virker nu.. men menuerne kommer ikke frem, hvis man noget forskelligt fra "DK" og "UK".. /theSurfer
08. januar 2006 - 15:32
#53
Jeg sætter langauge i min language fil, det er den med det danske og engelske flag som du kan se øverst til venstre på sitet. Den kode ser sådan ud: <% strSQL = "SELECT * FROM language" ' Response.Write strSQL ' response.end Conn.Execute(strSQL) set rs = conn.execute(strSQL) DO WHILE NOT rs.EOF sti = rs("sti") language = rs("language") %> <a href="<%=Request.ServerVariables("SCRIPT_NAME")%>?language=<%=language%>"><img src="<%=sti%>" width="30px" height="20px" title="<%=language%>" alt="<%=language%>" /></a> Ja, men noget andet end DK og UK er fordi at jeg ikke har sat koden ind på de andre sider, og fordi at det skal blive til DK og ikke UK på siden. Prøver at sætte koden ind på de andre sider.
08. januar 2006 - 15:34
#54
Microsoft VBScript compilation error '800a0411' Name redefined /menu.asp, line 5 dim sprog Hvorfor får jeg den fejl?
08. januar 2006 - 15:40
#55
Det er fordi du allerede har linie "dim sprog" et sted før den linie (linie 5 i menu.asp).. Den fortæller dig, at du allerede har defineret "sprog".. /theSurfer
08. januar 2006 - 15:54
#56
Nu virker det næsten :) Jeg satte dette ind i min language fil: <% sprog = "UK" if UCase(Request.QueryString("language")) <> "UK" then sprog = "DK" session("sprog") = sprog %> Men nu virker programmer filen kun, indtil at jeg har sat den anden kode ind på de andre sider :)
08. januar 2006 - 15:55
#57
Tester det igennem med de andre sider først.
08. januar 2006 - 16:33
#58
Nu virker det hele fint, mange tak for det. Lige et sidste sprørgsmål. Jeg bruger denne kode til at finde DK og UK og laver den om til DK: sprog = "UK" if UCase(Request.QueryString("language")) <> "UK" then sprog = "DK" Denne finder UK og DK: if UCase(request.querystring("language")) = "UK" then sprog = "UK" else sprog = "DK" end if Hvad vis jeg også gerne vil have flere sprog ind på sitet, f.eks. Tysk(D), vil min koder så se sådan ud: sprog = "UK" and "D" if UCase(Request.QueryString("language")) <> "UK" and "D" then sprog = "DK" og den anden kode: if UCase(request.querystring("language")) = "UK" then sprog = "UK" else sprog = "DK" else sprog = "D" end if Er jeg på det rette spor?
08. januar 2006 - 16:34
#59
Nu da det virker, bedes du venligst lægge et svar :)
08. januar 2006 - 16:39
#60
Jeg brugte et standard sprog, som burde være DK.. men havde bare sat den til UK.. Rart at det kom til at virke :-) .. det var lige før at jeg fik sved på panden, pga det med querystring :-) - Svar. /theSurfer
08. januar 2006 - 18:15
#61
Mange tak for hjælpen :)
Kurser inden for grundlæggende programmering