07. januar 2006 - 18:52Der 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?
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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...
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.
Synes godt om
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
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.
Synes godt om
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
"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?
Synes godt om
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...
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 %>
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.
Synes godt om
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 %>
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...
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 :)
Synes godt om
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")"...
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 :)
Synes godt om
Ny brugerNybegynder
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.