Avatar billede trekkies Juniormester
07. januar 2006 - 18:52 Der er 19 kommentarer og
1 løsning

Problemer med 2 tabeller i samme database

Har et lille problem, da jeg er ved at lave min hjemmeside om til at man kan se sitet på dansk og engelsk, men for at sitet skal kører optimalt, så har jeg en database ved navn "test" med 2 tabeller ved navn "tabel1" og "tabel2", der findes de samme felter i begge tabeller, men når at jeg kører denne SQL sætningen:
strSQL = "SELECT * FROM tabel1, tabel2 WHERE language = '" & Request.Querystring("language") & "'"
Så brokker den sig over at language findes i begge tabeler, den ene tabel er på dansk mens den anden er på engelsk, den skal finde ALT ud for det valgte language, hvordan klarer jeg den?
Avatar billede Slettet bruger
07. januar 2006 - 19:07 #1
Hejsa

Hvis nu for eksempel language er dansk så ska vi vel overhovedet slet ikke kigge på den "engelske" tabel, vel?
For i så fald så vil jeg da i stedet foreslå nedenstående:
<%
lang = Request.QueryString("language")
if lang = "dansk" then
strSQL = "select * from tabel1"
elseif lang = "engelsk" then
strSQL = "select * from tabel2"
end if
%>

Jeg tror slet ikke du her behøver at have "WHERE" i din sql-sætning...

\Dan
Avatar billede trekkies Juniormester
07. januar 2006 - 19:13 #2
Jo, man skal kigge i begge tabeller.
Gå ind på dette site:
http://www.darkskies.dk/

Som standard er language sat til DK, f.eks. hvis man så klikker på UK og klikker på nogle af de andre links, så kommer language med over.

Håber at du kan forstå hvad jeg mener.
Avatar billede Slettet bruger
07. januar 2006 - 19:24 #3
OK...
Jeg har aldrig prøvet at åbne to tabeller i samme SQL-sætning så jeg kan ikke rigtigt svare på hvad du så skal gøre...
Ikke andet end at du da i stedet kunne lave to SQL-sætninger og to database-afspilninger i stedet...
Sådan her:
<%
strSQL1 = "select * from tabel1 WHERE language='" & Request.QueryString("language") & "'"
set rs1 = Conn.execute(strSQL1)
strSQL2 = "select * from tabel2 WHERE language='" & Request.QueryString("language") & "'"
set rs2 = Conn.execute(strSQL2)
%>

Nu ved jeg jo ikke lige hvad din "Connection" hedder så jeg har bare kaldt den "Conn"...
\Dan
Avatar billede trekkies Juniormester
07. januar 2006 - 19:40 #4
Den ser ud til at virke, men vil gerne teste det igennem før at jeg giver point, men du er velkommen til at lægge et svar imens :)
Avatar billede Slettet bruger
07. januar 2006 - 20:10 #5
OK... Jamen her er et svar så...

\Dan
Avatar billede trekkies Juniormester
07. januar 2006 - 22:02 #6
Har testet siden igennem, men kan ikke få det til at virke.
Her er den nomale kode som jeg bruger:
if (Request.Querystring("language") & "") <> "" then
    strSQL = "SELECT * FROM tabel1 WHERE language = '" & Request.Querystring("language") & "'" 'Her bliver der valgt fra databasen udfra det valgte language
else
  strSQL = "SELECT * FROM tabel2 WHERE language = 'DK'" 'Her er DK som standard, når at man kommer ind på sitet
end if

Håber at du kan hjælpe mig videre.
Avatar billede Slettet bruger
07. januar 2006 - 22:13 #7
Jeps... Du skal vel have begge SQL-sætninger med... Sådan her:
<%
if Request.QueryString("language") <> "" then
strSQL1 = "select * from tabel1 WHERE language='" & Request.Querystring("language") & "'"
strSQL2 = "select * from tabel2 WHERE language='" & Request.Querystring("language") & "'"
else
strSQL1 = "select * from tabel1 WHERE language='DK'"
strSQL2 = "select * from tabel2 WHERE language='DK'"
end if
%>
- Og så skal du bare execute begge SQL-sætninger senere hen...
I øvrigt så ville jeg ikke foretrække denne metode... Jeg ville nok bygge if-sætningen på en anden måde, idet det er querystrings vi har med at gøre så kan brugeren jo selv ændre dem...
Hvad vil der for eksempel ske hvis querystringens værdi var "NogetHeltAndet"?
\Dan
Avatar billede trekkies Juniormester
07. januar 2006 - 22:16 #8
"Hvad vil der for eksempel ske hvis querystringens værdi var "NogetHeltAndet"?"

Mener du hvis en person fjerner DK/UK og skriver noget andet, er det som du mener?
Avatar billede Slettet bruger
07. januar 2006 - 22:21 #9
Jeps jeg mener hvis brugeren skriver "NogetHeltAndet" i querystringen...
Så kommer der enten en fejl eller også kommer der slet ingenting ud af SQL-sætningen...

- Og dette kommer lidt an på om du har sikret dig i mod "rs.EOF" eller ej...

\Dan
Avatar billede trekkies Juniormester
07. januar 2006 - 22:23 #10
Nej det har jeg ikke, ved du det?
Avatar billede Slettet bruger
07. januar 2006 - 22:24 #11
For at sikre sig mod dette kunne man lave if-sætningen sådan her i stedet:
<%
if Request.QueryString("language") = "DA" then
strSQL1 = "select * from tabel1 WHERE language='DA'"
strSQL2 = "select * from tabel2 WHERE language='DA'"
elseif Request.QueryString("language") = "UK" then
strSQL1 = "select * from tabel1 WHERE language='UK'"
strSQL2 = "select * from tabel2 WHERE language='UK'"
else
Response.Redirect Request.ServerVariables("SCRIPT_NAME") & "?language=DA"
end if
%>

Hvis altså standard-sproget skal være "DA"...

\Dan
Avatar billede trekkies Juniormester
07. januar 2006 - 22:33 #12
Jeg har prøvet din nyeste SQL, men den virker ikke, se mere her:
http://www.darkskies.dk/programs.asp?language=DK

Slet så DK i adresse menuen og skriv noget andet, bare ikke DK eller UK, så vælger den UK, det er selv om at den er sat til DK i den nederst SQL.
Avatar billede Slettet bruger
07. januar 2006 - 22:49 #13
SORRY!!! Det er min fejl! Der er selvfølgelig forskel på "DA" og så "DK"...
Prøv denne her i stedet:
<%
if Request.QueryString("language") = "DK" then
strSQL1 = "select * from tabel1 WHERE language='DK'"
strSQL2 = "select * from tabel2 WHERE language='DK'"
elseif Request.QueryString("language") = "UK" then
strSQL1 = "select * from tabel1 WHERE language='UK'"
strSQL2 = "select * from tabel2 WHERE language='UK'"
else
Response.Redirect Request.ServerVariables("SCRIPT_NAME") & "?language=DK"
end if
%>
Avatar billede trekkies Juniormester
07. januar 2006 - 22:52 #14
Jeg har ændret DA til DK, da jeg prøvede det første du skrev, men nej.
Avatar billede trekkies Juniormester
07. januar 2006 - 22:59 #15
Det er den nederste redirect som ikke virker:
Response.Redirect Request.ServerVariables("SCRIPT_NAME") & "?language=DK"

Jeg har enda prøvet denne:
Response.Redirect "http://www.darkskies.dk/programs.asp?language=DK"

Men intet virker.
Avatar billede Slettet bruger
07. januar 2006 - 23:05 #16
Hmm...
Hvad så hvis du skriver:
Response.Redirect "" & Request.ServerVariables("SCRIPT_NAME") & "?language=DK"
- Ellers så prøv at lave en test-side indeholdende nedenstående:
<%="" & Requuest.ServerVariables("SCRIPT_NAME") & "?language=DK"%>
- bare for at tjekke om denne server-variable overhovedet kan køre...

\Dan
Avatar billede trekkies Juniormester
07. januar 2006 - 23:11 #17
Hvis jeg bruger den nye redirect så virker den heller ikke.

Hvis jeg indsætter den anden Request, så skriver den følgende:
/programs_incl.asp?language=DK

Det er korrekt, men når at jeg bruger en redirect så kommer UK frem i stedet for.
Avatar billede trekkies Juniormester
07. januar 2006 - 23:34 #18
Jeg tror at jeg lukker dette spørgsmål nu og kigger på problemet med Redirect i morgen, hvis jeg så ikke kan få det til at virke, så opretter jeg et nyt spørgsmål.

Takker mange gange for din hjælp :)
Avatar billede Slettet bruger
08. januar 2006 - 01:54 #19
OK!

Det var så lidt så...
- Men jeg kan nu ikke forstå hvorfor den ikke vil redirecte med "Request.ServerVariables("SCRIPT_NAME")"...

\Dan

P.S. Og tak for point...!
Avatar billede trekkies Juniormester
08. januar 2006 - 09:17 #20
Nej, men det har jeg :)

Hvis jeg tager redirect koden uden for if sætningen, så virker den, men inde i if sætningen virker den ikke, det er meget mærkeligt, men så har jeg jo noget at lave i dag :)
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