15. december 2006 - 23:47Der er
2 kommentarer og 1 løsning
Problemer med SQL udtræk fra database
Godaften allesammen.
Jeg er i gang med at lave en lille hjemmeside, og synes at være løbet panden mod en mur, trods for at det er gået så ganske fremragende op til nu.
Jeg skal prøve at gøre det så præcis og kort som muligst:
Sagen er, at jeg har en side med en række funktioner, og en af funktionerne er, at en bruger kan lave en ønskeliste. Når brugeren opretter sådan en ønskeliste bliver den smidt den i en tabel i min database der hedder "oenskeliste", der bliver lagt alle de ting brugeren har skrevet og så bliver brugerens brugernavn (oenskeuser) lagt ned, så brugeren selv kan gå ind og se på sin ønskeliste.
Nu er jeg så kommet til det sted, hvor det skal være muligt for en anden bruger, at se første brugers ønskeliste. Jeg kan sådan nogen lunde forstå, at jeg skal lave lidt krydsreference, for på bruger_2s side skal der stå: "Se bruger_1s ønskeliste".
Nu skal linket jo altså ikke referere til bruger_2, men til bruger_1, og det er her jeg får nogle problemer.
I min tabel "users" som er der hvor mine brugere og deres data er gemt, har hver bruger selvfølgelig et id (userid) og de har et navn (username). Mit spørgsmål til jer er således:
Jeg skal på en eller anden måde, når bruger_2 skal se bruger_1s ønskeliste, have lavet en overgang, så den ved hvad den skal pege på, altså noget i stil med: SELECT * FROM oenskeliste,users WHERE userid = users.username & oenskeliste.oenskeuser Ved godt det ikke skal se helt sådan ud, men håber I forstår hvad jeg mener.
Det er et spørgsmål både til hvordan jeg laver min SQL sætning OG sætter mit link op... Siden er lavet i mode, så det bliver noget med: <a href="minportal.asp?mode=oenskeliste&id=<% "userid" %>=<% "oenskeuser %>
I må endelig sige til hvis jeg forklare mig for uklart, så vil jeg prøve at gøre det mere enkelt.
Hvis du laver linket som du har skrevet er det bare at benytte sig af request.querystring("id") i din sq for at hente ønsker som er relateret til den bruger som har det nummer:
SELECT * FROM oenskeliste WHERE oenskeuser = "& Request.Querystring("id") &"
Tak for dit svar, jeg kan egentlig godt se logikken i det du skriver, og tror egentlig også bare, at det er min måde som jeg har bygget databasen op på, der gør at der opstår problemer.
Jeg har prøvet at sætte det ind som du har skrevet, og får følgende fejl: "Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression."
Jeg tror måske at fejlen ligger i, at oenskeuser er et navn, altså selve navnet på brugeren og ikke ID'et og Request.Querystring("id") giver mig det ID på brugeren, som jeg ønsker at se.
Problemet vil nok løse sig, hvis jeg gjorde det sådan, at når en bruger opretter en ønskeliste, så gemmer den brugerens ID i oenskeliste tabellen, som så er i overensstemmelse med brugerens brugerID. Altså, at brugeren med ID 44 også har oenskeuser ID 44.
Det har jeg imidlertidigt ikke gjort, og det er nok mest fordi jeg ikke rigtig ved hvordan :-) Når en bruger opretter et ønske lægger jeg brugerens navn ned i oenskeliste tabellen ved brug af: rs("bruger") = session("brugernavn") - hvordan jeg lige får den vendt om, at det ikke er brugernavnet men brugerID'et ved jeg ikke helt hvordan, for jeg laver jo sådan set ikke en querystring med brugerens id.
Og på den anden side, så kan jeg måde også klare frisag ved at have brugerens navn i både bruger-tabellen og oenskeliste tabellen, da de to vil være ens, og så skal jeg så sætte dem lig hinanden på et tidspunkt, vel?
SQL = "SELECT * FROM oenskeliste WHERE bruger='" & Request.QueryString("username") & "'"
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.