Das stimmt,
denn
(int)$user->data['user_id']
ist der angemeldete Benutzer.
//Edit:
Irgendwie gefällt mir das nicht. Um ein paar Queries zu sparen, solltest Du es so machen:
Lösche den
NUR oben geposteten SQL-Code und
finde in der vietopic.php
danach füge ein:
Code: Alles auswählen
$sql_array = array(
'SELECT' => 'u.user_id, COUNT(uu.user_id) AS member_id',
'FROM' => array(
USERS_TABLE => 'u'
),
'LEFT_JOIN' => array(
array(
'FROM' => array(USERS_TABLE => 'uu'),
'ON' => 'uu.user_id < u.user_id'
),
array(
'FROM' => array(GROUPS_TABLE => 'g'),
'ON' => 'g.group_id = u.group_id',
)
),
'WHERE' => $db->sql_in_set('g.group_name', array('BOTS', 'GUESTS'), true) .
' AND uu.user_id < u.user_id',
'GROUP_BY' => 'u.user_id',
);
$mem_sql = $db->sql_build_query('SELECT', $sql_array);
$mem_result = $db->sql_query($mem_sql);
$member_num = array();
while ($mem_row = $db->sql_fetchrow($mem_result))
{
$member_num[$mem_row['user_id']] = $mem_row['member_id'];
}
$db->sql_freeresult($mem_result);
Dann hast Du nur eine Query mit der alles abgedeckt ist.
Wenn Du es noch mehr verbessern möchtest (irgendwann wird die Idee kommen, die Member ID auch in der Mitgliederliste anzeigen zu wollen), kannst Du den Code in eine Funktion stecken und von überall her aufrufen lassen.
Dummerweise ist die somit ermittelte Mitgliedsnummer "dynamisch", d.h, daß beim Löschen eines Benutzers, die nachfolgenden Benutzer andere Mitglieder IDs bekommen.
Ausblick:
Es wäre also anzustreben, die Mitglieder ID im zuge der Mitglieder-Registrierung in der Benutzertabelle zu speichern, so daß diese dort verankert ist und immer dieselbe für den jeweiligen Benutzer bleibt.
Happy Programming.
P.S.:
Interessehalber: Kann mir jemand erklären, wie ich einen CROSS JOIN von ein und derselben Tabelle (hier USERS_TABLE) machen kann und dabei das DBAL des phpBB3 benutzen kann?
