webForumDet fria alternativet

Men vad är det jag missar?

Databaser & SQL

5 svar · 455 visningar · startad av annesophie

Medlem sedan juni 20012 236 inlägg
Frågan#1

Bolla lite med mig innan jag tappar förståndet helt… :bla

Jag har en webbshop, där varor visas beroende på vilket land man valt som ”sitt land” vid registration.
Man kan i dagsläget välja mellan 10 olika länder vid registrationen och får sedan efter att man är inloggad upp korrekt produkter (textfältet kop är markerat med x) för just det landet.
Detta funkar för 9 utav 10 länder utan tillstymmelse till problem, men inte för Norge.
Användare som reggar sig från Norge och därmed väljer NORWAY får inte upp produkter alls.
Det är helt galet!!!

Allt följer samma mall. Det finns inga specialfixar för vissa länder som kan ställa till det.

  1. Användare reggar sig och väljer tex NORWAY ur en selectlista (andra val är SWEDEN, UNITED KINGDOM, SPAIN etc...)

  2. I kunddatabasen registreras NORWAY i textfältet country.

  3. Användare loggar in med sina användardetaljer. Jag känner av vem som loggat in och vilket land personen reggat sig.

  4. NORWAY görs om till landskoden NO.

ELSEIF country = "NORWAY" then
countryUsr = "NO"

Jag skriver:

sql = "SELECT * FROM products where kop ='x' AND "&countryUsr&" = 'x' order by "&sortId&" "

Jag kör en response.write på ovan och får:
SELECT * FROM products where kop ='x' AND NO = 'x' order by Powerclass

Detta funkar alltså utan problem för 9 länder, men inte för Norge. När det gäller Norge visas....inget.
Detta trots att alla produkter i cellen kop faktiskt är markerade med x för Norge (NO).

Jag har testat att kopiera den svenska kop-kolumnen (som bevisligen fungerar) ifall det var så att alla x i den norska kolumnen hade blivit konstiga men det gjorde ingen skillnad alls.
Jag får inga felmeddelanden.

Bolla lite med mig här... Vad är det jag missar? Det måste ju vara något helt uppenbart.

:x

Medlem sedan juni 200032 967 inlägg
#2

Sannolikt är det så att "no" är reserverat, som det negativa värdet i ett ja/nej-fält eller liknande, om du använder access.

Om jag var du skulle jag bytt namn till typ NOR eller så, men för att kontrollera om det verkligen är problemet, prova att klamra. Dvs:

sql = "SELECT * FROM products where kop ='x' AND [" & countryUsr & "] = 'x' order by " & sortId

(Jag föreslår också lite mellanslag vid konkateneringar, så blir koden mer lättläst.)

mvh

Medlem sedan juni 20012 236 inlägg
#3

Ah...ja. Självfallet är det så enkelt. *dunkar huvudet i väggen*
NO är reseverat. Doh!

Anders...Aj låvv jå!

Är klamring en bra lösning på sådant här (alltså tillräcklig) eller är det alltid bättre att helt döpa om kolumnen (i detta fall)?

Medlem sedan juni 200032 967 inlägg
#4

Klamring är inte en bra lösning, men tillräcklig.
Det är alltid bäst att döpa om kolumnen, annars finns stor risk att man råkar på samma problem igen när man återkommer till koden efter att glömt bort just den lilla detaljen.

Mvh

Medlem sedan juni 20012 236 inlägg
#5

Ok, jag döper om.
Stort tack för hjälpen.

Medlem sedan juni 200032 967 inlägg
#6

Stort varsågod. :)

257 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)