Pagination im phpBB?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Hi

Deine query ist fehlerhaft, sag mal was du damit machen willst, ich glaub dann kann ich besser helfen ...

Mfg
Jens
Jason

Beitrag von Jason »

Wie gesagt ist eine Buddyliste mit dem Query lese ich die Usernamen/id und Online Status aus den tabellen phpbb_buddylist/phpbb_users/phpbb_sessions aus!Oder was meinst du damit,was ich mit dem Query machen will?

Grüße Jason
Jason

Beitrag von Jason »

Also ich habe gerade rausgefunden das GROUP BY ...whatever fehlt!

Wenn ich das Query so abänder:
$sql = 'SELECT b.buddy_name, b.buddy_id, b.user_id, b.added,
u.user_msnm, u.user_yim, u.user_aim, u.user_email, u.user_viewemail, u.user_icq, u.user_website,
IF(s.session_user_id <> "","true","false") AS is_online, count(*) AS total
FROM ' . BUDDYLIST_TABLE . ' b, ' . USERS_TABLE . ' u
LEFT OUTER JOIN '.SESSIONS_TABLE.' s ON b.buddy_id = s.session_user_id AND s.session_time >= '.( time() - 300 ) . '
WHERE b.buddy_id = u.user_id AND b.user_id = ' . $user_id . '
GROUP BY b.buddy_name
ORDER BY b.added
LIMIT ' . $start . ', ' . $board_config['topics_per_page'];
ist zwar die fehlermeldung weg aber jetzt wird nur noch 1 User in der Buddyliste angezeigt obwohl 12 da sind :o

Bin für jede weitere hilfe dankbar!!

Grüße Jason
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Schmeiss den ganzen Count- und Group-Quatsch raus und benutz die Funktion mysql_num_rows().
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
JasonLucas

Beitrag von JasonLucas »

Was ist mysql_num_rows()?Ist das dasselbe wie sql_numrows()?

Grüße Jason

BTW: Sorry das ich als Gast schreibe aber der Login funzt net :(
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

JasonLucas hat geschrieben:Was ist mysql_num_rows()?Ist das dasselbe wie sql_numrows()?
jepp
Jason

Beitrag von Jason »

Ok ich habs jetzt soweit hinbekommen das es ohne fehlermeldung läuft aber es werden jetzt immer die ersten 15 Benutzer angezeigt und untendrunter steht nur "Seite 1 von 1" und es sind keine Links zu den weiteren seiten vorhanden obwohl über 50 Benutzer in der Buddyliste sind ( Eingestellt habe ich im ACP 15 Themen pro Seite ) Nu versteh ich net das die Links zu den Seiten mit den restlichen Benutzern net angezeigt werden :cry:

Hier nochmal das aktuelle Script + Template:

php: buddylist.php

template: buddylist.tpl

Bin für weitere tipps echt dankbar :)

Grüße Jason
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

du musst für numrows n extra query machen, da du so nur immer 15 ausliest, es muß aber logischerweise den totalen wert haben, also noch ein SELECT COUNT(*) ... query und den wert in $numrows packen.
Jason

Beitrag von Jason »

Jo nur wie soll die abfrage dann aussehen?Es müssen dann ja wie beim normalen Query nur zu dem jeweiligem User (Dem die Buddylist gehört) gehörenden Buddys ausgelesen werden!Ich habs mal so probiert:

Code: Alles auswählen

$sql = 'SELECT  b.buddy_name, b.buddy_id, b.user_id, b.added, count(*) AS total
                        FROM ' . BUDDYLIST_TABLE . ' b, ' . USERS_TABLE . ' u
                        WHERE b.buddy_id = u.user_id AND b.user_id = ' . $user_id . '
                        ORDER BY b.added';
                if ( !$result = $db->sql_query($sql) )
                {
                        message_die(GENERAL_ERROR, 'Error getting buddy listing for pagination', '', __LINE__, __FILE__, $sql);
                }
                $total_buddys = $db->sql_numrows($result);
Scheint aber net zu funzen da ich jetzt wieder diese fehlermeldung bekomme:
Error getting buddy listing for pagination

DEBUG MODE

SQL Error : 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

SELECT b.buddy_name, b.buddy_id, b.user_id, b.added, u.user_msnm, u.user_yim, u.user_aim, u.user_email, u.user_viewemail, u.user_icq, u.user_website, count(*) AS total FROM phpbb_buddylist b, phpbb_users u WHERE b.buddy_id = u.user_id AND b.user_id = 2 ORDER BY b.added

Line : 222
File : /is/htdocs/board/buddylist.php
Grüße Jason
Jason

Beitrag von Jason »

Sonst noch wer ne idee?Das muss doch irgendwie gehen :cry: :o

Grüße Jason
Antworten

Zurück zu „Coding & Technik“