Avatar billede trekkies Juniormester
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.
Avatar billede 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)
Avatar billede trekkies Juniormester
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?
Avatar billede 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")))

;)
Avatar billede trekkies Juniormester
08. januar 2006 - 13:53 #4
Lige meget hvad, men det hjælper ikke.
Avatar billede Slettet bruger
08. januar 2006 - 14:00 #5
Hvad giver

strLang = ucase(trim(Request.QueryString("language")))
response.write strLang
response.end

?
Avatar billede trekkies Juniormester
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.
Avatar billede 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 ??
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
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.
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
08. januar 2006 - 14:08 #12
Jeh kan ikke bruge en SQL sætning, da det er en database med 2 tabeller.
Avatar billede 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)
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
08. januar 2006 - 14:13 #15
..jeg kunne se at du bruger "tabel1" til "DK" og "tabel2" til "UK"..

/theSurfer
Avatar billede trekkies Juniormester
08. januar 2006 - 14:13 #16
Prøv at gå ind på denne side:
http://www.darkskies.dk/programs.asp?language=DK
Så virker det hele fint.

Gå ind på denne side:
http://www.darkskies.dk/programs.asp?language=ssss
Så virker det ikke.
Avatar billede trekkies Juniormester
08. januar 2006 - 14:13 #17
Ja, det er korrekt.
Avatar billede thesurfer Nybegynder
08. januar 2006 - 14:18 #18
trekkies> Prøv lige med: 08/01-2006 14:11:47

/theSurfer
Avatar billede trekkies Juniormester
08. januar 2006 - 14:24 #19
thesurfer:
Hvis jeg bruger den, så hjælper det ikke, det bliver det samme problem, se her:
http://www.darkskies.dk/programs.asp?language=ssss
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
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
Avatar billede trekkies Juniormester
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
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
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.
Avatar billede trekkies Juniormester
08. januar 2006 - 14:39 #27
Her er et billed af min kode:
http://www.darkskies.dk/exp_billeder/kode.jpg
Avatar billede thesurfer Nybegynder
08. januar 2006 - 14:41 #28
Prøv lige rettelserne i 08/01-2006 14:35:10.

/theSurfer
Avatar billede trekkies Juniormester
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
Avatar billede thesurfer Nybegynder
08. januar 2006 - 14:44 #30
...er det med rettelserne fra 08/01-2006 14:35:10?

/theSurfer
Avatar billede trekkies Juniormester
08. januar 2006 - 14:44 #31
Ja
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
08. januar 2006 - 14:48 #33
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
08. januar 2006 - 15:00 #36
Det virker fint, men hvis jeg skriver andet end DK og UK så kommer fejlen.

Alt på sitet bliver til engelsk, f.eks.
http://www.darkskies.dk/programs.asp?language=sssss
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
08. januar 2006 - 15:02 #38
Jeg tester alt på en web server.

Vil du have et screenshot af hele min kode?
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
08. januar 2006 - 15:06 #40
Hvilken del mener du?
Avatar billede thesurfer Nybegynder
08. januar 2006 - 15:07 #41
Den del med UK/DK og if-sætningerne.. plus querystring med "*" linierne..

/theSurfer
Avatar billede thesurfer Nybegynder
08. januar 2006 - 15:07 #42
Der er et eller andet seriøst galt her..

Virker det fint på din egen webserver?

/theSurfer
Avatar billede trekkies Juniormester
08. januar 2006 - 15:09 #43
Jeg tester ALT på mit domain lige nu.

Her er det nyeste billed:
http://www.darkskies.dk/exp_billeder/kode2.jpg

Jeg prøver at teste det lokalt, tager lidt tid.
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
08. januar 2006 - 15:18 #45
Jeg har fundet en fejl..

Virker forkert: http://www.darkskies.dk/programs.asp?language=dkaa
Virker rigtigt: http://www.darkskies.dk/programs_incl.asp?language=dkaa

Det er vist pga din include.. eller også tester du med den forkerte fil..

/theSurfer
Avatar billede trekkies Juniormester
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.
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
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>
Avatar billede thesurfer Nybegynder
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
Avatar billede thesurfer Nybegynder
08. januar 2006 - 15:28 #51
noget = nået :-)

/theSurfer
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
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.
Avatar billede trekkies Juniormester
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?
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
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 :)
Avatar billede trekkies Juniormester
08. januar 2006 - 15:55 #57
Tester det igennem med de andre sider først.
Avatar billede trekkies Juniormester
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?
Avatar billede trekkies Juniormester
08. januar 2006 - 16:34 #59
Nu da det virker, bedes du venligst lægge et svar :)
Avatar billede thesurfer Nybegynder
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
Avatar billede trekkies Juniormester
08. januar 2006 - 18:15 #61
Mange tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester