Voor een website met phpBB forum wil ik de moderators een mogelijkheid geven om snel de gebruikers te kunnen overzien. Het forum is uitgebreid met onder andere de gebruikelijke phpBB gebeuren, een cash mod, een bank mod, een loterij mod, een waarschuwingen systeem en ook zijn er speciale mod-tags mogelijk.
In het overzicht wil ik de volgende velden van alle gebruikers laten zien:
ID, Gebruikersnaam, Laatste bezoek, Credits, Bank, % Credits, Loten, Waarschuwingen, Aantal mod balkjes
De velden ID, gebruikersnaam, laatste bezoek, credits en waarschuwingen kunnen gewoon uit de tabel php_users worden gehaald.
Het veld Bank wordt uit de tabel phpbb_bank gehaald, waar het veld phpbb_bank.name moet overeen komen met phpbb_users.user_id. Gebruikers kunnen kiezen een bank aan te maken, deze hoeft dus niet perse te bestaan!
Het veld % credits wordt berekend door het aantal credits van een gebruiker op te tellen bij zijn bank saldo, en dit door het totaal te delen.
Het veld loten wordt wordt uit phpbb_lottery gehaald, voor elk lot dat een gebruiker koopt wordt er een nieuwe kolom aan deze tabel toegevoegd, het kan dus ook voorkomen dat de gebruikers ID niet in phpbb_lottery voorkomt.
Het veld aantal mod balkjes wordt berekend door het aantal keer te tellen dat er in een bericht van een gebruiker de ubb code "[mod" voorkomt. Deze moet in phpbb_posts_text worden gezocht, welke verwijst (met een post_id) naar de tabel phpbb_posts, welke verwijst (met een poster_id) naar de tabel phpbb_users.
Om dit allemaal in een query te gooien had ik zelf het volgende bedacht:
Het probleem hierbij is dat er nu voor er voor het aantal loten nu "het aantal loten maal het totaal aantal berichten" van een gebruiker uit komt, bij het aantal blauwe balkjes komt er "het aantal blauwe balkjes maal het aantal loten" uit.
Ziet iemand wat ik fout doe?
In het overzicht wil ik de volgende velden van alle gebruikers laten zien:
ID, Gebruikersnaam, Laatste bezoek, Credits, Bank, % Credits, Loten, Waarschuwingen, Aantal mod balkjes
De velden ID, gebruikersnaam, laatste bezoek, credits en waarschuwingen kunnen gewoon uit de tabel php_users worden gehaald.
Het veld Bank wordt uit de tabel phpbb_bank gehaald, waar het veld phpbb_bank.name moet overeen komen met phpbb_users.user_id. Gebruikers kunnen kiezen een bank aan te maken, deze hoeft dus niet perse te bestaan!
Het veld % credits wordt berekend door het aantal credits van een gebruiker op te tellen bij zijn bank saldo, en dit door het totaal te delen.
Het veld loten wordt wordt uit phpbb_lottery gehaald, voor elk lot dat een gebruiker koopt wordt er een nieuwe kolom aan deze tabel toegevoegd, het kan dus ook voorkomen dat de gebruikers ID niet in phpbb_lottery voorkomt.
Het veld aantal mod balkjes wordt berekend door het aantal keer te tellen dat er in een bericht van een gebruiker de ubb code "[mod" voorkomt. Deze moet in phpbb_posts_text worden gezocht, welke verwijst (met een post_id) naar de tabel phpbb_posts, welke verwijst (met een poster_id) naar de tabel phpbb_users.
Om dit allemaal in een query te gooien had ik zelf het volgende bedacht:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| SELECT (bank.holding + user.user_points) AS total, COUNT(lottery.user_id) AS lottery, user.user_id, user.user_active, user.username, user.user_session_time, user.user_points, user.user_warnings, bank.holding FROM ( ( ( ( phpbb_users AS user LEFT JOIN phpbb_bank AS bank ON user.user_id = bank.name ) LEFT JOIN phpbb_lottery AS lottery ON user.user_id = lottery.user_id ) LEFT JOIN phpbb_posts AS post ON post.poster_id = user.user_id ) LEFT JOIN phpbb_posts_text AS text ON post.post_id = text.post_id AND text.post_text LIKE "%[mod:%" ) GROUP BY user.user_id ORDER BY user.user_id ASC |
Het probleem hierbij is dat er nu voor er voor het aantal loten nu "het aantal loten maal het totaal aantal berichten" van een gebruiker uit komt, bij het aantal blauwe balkjes komt er "het aantal blauwe balkjes maal het aantal loten" uit.
Ziet iemand wat ik fout doe?
2 swim or not 2 swim, that's the question