if Cstr(request.querystring("id")) = Cstr(session("id")) OR Cstr(session("id")) = Cstr(Set RSGuestbook("ReceiverID")) then response.write("Privat besked") end if
else response.write("Ikke privat besked") end if %>
if Cstr(request.querystring("id")) = Cstr(session("id")) OR Cstr(session("id")) = Cstr(RSGuestbook("ReceiverID")) then response.write("Privat besked") end if
else response.write("Ikke privat besked") end if %>
der skal væra paging i mit script, det betyder, hvis en bruger kigger forbi gæstebogen, om brugeren hverken er modtager eller afsender, og de sidste 20 beskeder i gæstebogen er privat, så vil den besøgende bruger bare få tomme sider ved paging.. og det vil jeg helst undgå, derfor ville jeg se om det kunne løses i sql sætningen..
Den har jeg også tænkt meget over. Jeg ikke om det kan løses på nogen måde. Har ikke set det på nogen sider - ikke engang Arto har gjort et forsøg på at løse det og jeg skulle mene at de var rimelig dygtige derinde :-)
Jeg har et community, hvor en en given bruger har en gæstebog tilknyttet. I denne gæstebog er der så mulighed for at oprette private beskeder.
I min tabel har jeg følgende: senderID = BrugerID for den der har skrevet beskeden ReceiverID = BrugerID for den har har modtaget besked Private= true/false om beskeden er privat eller ikke.
Kommer der en bruger forbi en gæstebog hvor der er private beskeder, hvor den besøgende bruger hverken er modtager eller afsender, skal denne bruger selvfølgelig ikke kunne se de private beskeder.
Derimod er der en bruger som kigger i gæstebogen, hvor brugeren enten modtager eller afsender en af en privat besked, skal denne private besked så vises.
En besøgendes brugerID henter jeg med session("ID")
sql = "SELECT * FROM guestbook WHERE (private=false OR (private=true AND (receiverID = " & session("ID") & " OR senderID = " & session("ID") & "))) AND receiverID = " & ID & " ORDER BY added DESC"
Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "( private=false OR ( private=true AND (receiverID = 7 OR senderID = 7)) AND receiverID = 7 ORDER BY added DESC".
sql = "SELECT * FROM guestbook WHERE receiverID = " & ID & " AND (private = false OR (private = true AND (receiverID = " & session("ID") & " OR senderID = " & session("ID") & "))) ORDER BY added DESC"
og prøv også lige - som debug - at skrive sql-sætningen ud før at du prøver at gennemføre den:
Response.Write "DEBUG: " & sql "<br>"
Hvis man gør dette er det som regel nemmere at gennemsue fejlen fordi at SQL-udtrykket så står i sin "rene" form.
Lige en lille tilføjelse som jeg glemte, er brugerens session("ADMIN") = true Så skal brugeren kunne se privatbeskeder også, uanset som id er modtager eller afsender, hvis det kan flettes ind?
if session("ADMIN") = true then strGuestbook = "select * from guestbook where receiverID = " & ID & " order by added desc" else sql = "SELECT * FROM guestbook WHERE receiverID = " & ID & " AND (private = false OR (private = true AND (receiverID = " & session("ID") & " OR senderID = " & session("ID") & "))) ORDER BY added DESC" end if
if session("ADMIN") = true then strGuestbook = "select * from guestbook where receiverID = " & ID & " order by added desc" else strGuestbook = "SELECT * FROM guestbook WHERE receiverID = " & ID & " AND (private = false OR (private = true AND (receiverID = " & session("ID") & " OR senderID = " & session("ID") & "))) ORDER BY added DESC" end if
Forresten, så giver den følgende fejl, hvis en bruger kigger i en gæstebog uden at være logget ind, altså når session("ID") er lig med "" og ikke har noget ID
If Session("ADMIN") = true Then strGuestbook = "SELECT * FROM guestbook WHERE receiverID = " & ID & " ORDER BY added DESC" Else If "" & Session("ID") = "" strGuestbook = "SELECT * FROM guestbook WHERE receiverID = " & ID & " AND private = false ORDER BY added DESC" Else strGuestbook = "SELECT * FROM guestbook WHERE receiverID = " & ID & " AND (private = false OR (private = true AND (receiverID = " & Session("ID") & " OR senderID = " & Session("ID") & "))) ORDER BY added DESC" End If
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.