Mijn tabellen zien er (met veel troep ff eruit geknipt) als zo uit:
Rechten: rechten_UserID, rechten_ForumID, rechten_r, rechten_w, rechten_m
r=read, w=write, m=modify
dan nog groepen (categoriën), groep_id, groep_titel.
forums: forum_id, forum_groepid, forum_prive (als prive op 0 staat heeft iedereen toegang, staat ie op 1, heb je toegang nodig in het tabel rechten).
Stukje code
Oke, we hebben 4 forums (maar ff random gedaan);
General Chat,
Speeltuin,
in de cat General chat
User discussies,
Forum discussies
in de cat Crew
Alles heeft forum_prive op 1 behalve General Chat (dus de speeltuin ook).
Hij laat dit zien als ik ingelogt ben (heb stuk code weggehaald, zodat het niet onoverzichtelijk word, en heeft dus niets met het probleem te maken).
die cijfers zijn de categorie id's
Nu zie je, dat de Speeltuin op forum_prive 1 staat, en die herhaalt ie niet 2 keer, dus ik denk dat het iets met de OR clause te maken heeft.
Voor de Or clause (bij de WHERE clausules), want alles wat prive = 1 staat, herhaalt hij niet, en alles wat op 0 staat wel.
Nu heb ik al een paar keer gecontroleerd of de namen goed zijn, maar ze zijn allemaal goed gespeld zonder typefouten.
Rechten: rechten_UserID, rechten_ForumID, rechten_r, rechten_w, rechten_m
r=read, w=write, m=modify
dan nog groepen (categoriën), groep_id, groep_titel.
forums: forum_id, forum_groepid, forum_prive (als prive op 0 staat heeft iedereen toegang, staat ie op 1, heb je toegang nodig in het tabel rechten).
Stukje code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| $groepen_query = mysql_query (" SELECT groep_id, groep_titel FROM groepen ") or die (mysql_error()); while ( $groepen_fetch = mysql_fetch_object ( $groepen_query ) ) { $forums_query = mysql_query (" SELECT forum_id, forum_groepid, forum_titel, forum_prive FROM forums LEFT JOIN rechten ON ( forum_id = rechten.rechten_forumid ) WHERE forum_groepid = '$groepen_fetch->groep_id' AND rechten.rechten_r = 1 OR forum_prive = 0 ") or die (mysql_error()); if ( mysql_num_rows ( $forums_query ) == "0" ) { echo ""; } else { echo "<b>Cat: </b>$groepen_fetch->groep_titel <br>"; } while ( $forums_fetch = mysql_fetch_object ( $forums_query ) ) { echo "<b>Forum: </b>$forums_fetch->forum_groepid - $forums_fetch->forum_titel <br>"; } } |
Oke, we hebben 4 forums (maar ff random gedaan);
General Chat,
Speeltuin,
in de cat General chat
User discussies,
Forum discussies
in de cat Crew
Alles heeft forum_prive op 1 behalve General Chat (dus de speeltuin ook).
Hij laat dit zien als ik ingelogt ben (heb stuk code weggehaald, zodat het niet onoverzichtelijk word, en heeft dus niets met het probleem te maken).
code:
1
2
3
4
5
6
7
| Cat: General Chat Forum: 1 - General Chat Forum: 1 - De Speeltuin Cat: Crew Forum: 1 - General Chat Forum: 2 - Forum Discussies Forum: 2 - Gebruikers Discussies |
die cijfers zijn de categorie id's
Nu zie je, dat de Speeltuin op forum_prive 1 staat, en die herhaalt ie niet 2 keer, dus ik denk dat het iets met de OR clause te maken heeft.
Voor de Or clause (bij de WHERE clausules), want alles wat prive = 1 staat, herhaalt hij niet, en alles wat op 0 staat wel.
Nu heb ik al een paar keer gecontroleerd of de namen goed zijn, maar ze zijn allemaal goed gespeld zonder typefouten.