Jag ser inte varför man är blockad när man ska se sin egna sida så som andra ser den när man har någon annan på blocken, det är bara den personen och enbart den som ska vara blockad från att se sidan
jag har userID 1 och om jag ex blockar userID 120 så ska inte personen med userID 120 kunna se min sida men kunna se andras sidor och jag ska kunna se min egna sida när jag "besöker mig själv"
<%set RS = objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_block ON tblUsers.userID = tblUsers_block.vemArBlockad")
If Int(uid) = RS("vemBlockar") then
Response.Redirect "visablocksida.asp"
Else%>
Resten av sidan
<%End If%>
Inte kollat så noga med kanske...
If cInt(uid) = cInt(RS("vemBlockar")) then
Fyttade om och fick
error '80020009'
/view.asp, line 10
med
If CInt(uid) = RS("vemBlockar") then
Response.Redirect "visablocksida.asp"
End If
man ska ju bara redirectas OM man är blockad
emissionMedlem sedan dec. 19996 721 inlägg Fundera en stund på vad denna sökning egentligen gör....
SELECT * FROM tblUsers INNER JOIN tblUsers_block ON tblUsers.userID = tblUsers_block.vemArBlockad
Den jämför väl tabellerna tills den hittar en träff, SELECT * FROM tblUsers INNER JOIN tblUsers_block ON tblUsers.userID = tblUsers_block.vemBlockar gick inte heller, så där var inte heller felet
CompusaMedlem sedan jan. 20023 327 inlägg Ett tips när man skriver sina SQL-frågor är att först testa dom direkt mot databasen via en klient exempelvis mySQL-administrator. Då ser du direkt vad din SQL-fråga ger för resultat. När du fått bekräftat att din SQL-fråga ger dig det resultat som du förväntar dig så är det oftast bara att tuta ock köra.
Of-topic: Personligen är jag allergisk mot att använda asterisk dvs SELECT * FROM vid sql-frågor. Det bästa är att om du vet vilka kolumner du är intresserad av definiera dessa i din SQL-fråga, exempelvis SELECT bla1, bla2 FROM myTable
Eftersom blocklistan är tom då funktionen inte har fungerat så är den ju tom, så jag kan inte testa nåt med SELECT * FROM tblUsers u INNER JOIN tblUsers_block b ON u.userID = b.vemArBlockad heller
emissionMedlem sedan dec. 19996 721 inlägg
WebbisNet skrev:
Den jämför väl tabellerna tills den hittar en träff, SELECT * FROM tblUsers INNER JOIN tblUsers_block ON tblUsers.userID = tblUsers_block.vemBlockar gick inte heller, så där var inte heller felet
SQL-satsen hämtar ut alla användare som är blockade av någon, vem som helst. Varför? Vore det inte smidigare att bara kolla om den specifika användaren är blockad? Fråga databasen, den vet.
....och om du verkligen vill hämta ut alla blockade användare så måste du ju åtminstone loopa igenom resultatet för att hitta någon träff.
CompusaMedlem sedan jan. 20023 327 inlägg
WebbisNet skrev:
Eftersom blocklistan är tom då funktionen inte har fungerat så är den ju tom, så jag kan inte testa nåt med SELECT * FROM tblUsers u INNER JOIN tblUsers_block b ON u.userID = b.vemArBlockad heller
Okej, hur som helst så är det ingenting som hindrar dig från att lägga dit test-data. Som sagt så var det ett tips som kan vara smidigt att använda.
är bara lite osäker på hur jag ska utforma just den här sql-frågan.....
set RS = objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_block ON tblUsers.userID = tblUsers_block.vemArBlockad where vemBlockar="& UserID) var inte så enlelt heller, UserID är den inloggades SessionsID (userID i db)
emissionMedlem sedan dec. 19996 721 inlägg Det finns två variabler som du ska använda dig av.
1. Vem blockar = UserID för sidan man försöker titta på
2. Vem är blockad = UserID för den inloggade användaren
Fråga tblUsers_block om det finns en sådan blockering.
Känner mig helt snurrig n så jag har ingen aning om hur det ska skrivas, har testat olika versioner av sqlfrågan men inte hjälpt. Känns som om jag är helt blåst just nu :-)
emissionMedlem sedan dec. 19996 721 inlägg Läs mitt föregående inlägg, och ställ dig frågan : "Hur skriver jag en SQL-fråga som kollar i tblUsers_block om det finns en blockering där den som är blockad är samma användare som försöker titta på sidan, och den som blockar är den som "äger" sidan?"
set RS = objConn.Execute("SELECT * FROM tblUsers u INNER JOIN tblUsers_block b ON u.userID = b.vemBlockar where vemBlockar="& UserID)
SQL-satsen kollar om det är jag som har blockat någon
If CInt(uid) = RS("vemArBlockad") then
Response.Redirect "visablocksida.asp"
End If
IF-satsen kollar om personen som är blockad.....eller nåt
Du förklarar bra Emission men min hjärna är helt död ikväll.....måste vara all svetsrök jag får i mig på skolan som gör att jag inte kan tänka
emissionMedlem sedan dec. 19996 721 inlägg Du behöver ingen if-sats. Fråga databasen om båda sakerna. Får du en träff (kolla EOF) i sökningen så är man blockad, annars inte.
Nu kommer blocksidan fram om jag besöker mig själv men inte när jag besöker nån (blocklistan är tom för tillfället)
set RS = objConn.Execute("SELECT * FROM tblUsers u INNER JOIN tblUsers_block b ON u.userID = b.vemArBlockad where vemBlockar="& UserID)
If not RS.EOF then
Response.Redirect "visablocksida.asp"
End If
emissionMedlem sedan dec. 19996 721 inlägg Du glömde att peta in värdet på vemArBlockad i ekvationen.
Detta verkar fungera, jag kan inte besöka den som blockade mig men jag kan besöka andra och mig själv
set RS = objConn.Execute("SELECT * FROM tblUsers u INNER JOIN tblUsers_block b ON u.userID = b.vemArBlockad where vemBlockar="& uid &" and vemArBlockad="& UserID)
If not RS.EOF then
Response.Redirect "visablocksida.asp"
End If
emissionMedlem sedan dec. 19996 721 inlägg Precis så! (y)
PS. Egentligen är tblUsers ointressant i sammanhanget, men den gör ju ingen skada... DS