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.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Das count() musst du in einer Separaten Abfrage ohne WHERE ausführen. Das steht zwar schon in der Fehlermeldung
Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
aber scheinbar muss man´s dir nochmal extra sagen.
Jason

Beitrag von Jason »

Jo nur dann werden alle in der tabelle vorhandenen Datensätze zusammengezählt aber es dürfen ja nur die zusammengezählt werden die zu der Buddyliste des jeweiligen Users gehören also denke ich mal wirds wohl ohne WHERE net gehen oder steh ich grad mal wieder auffm schlauch?Ausserdem funzt es ja in der memberlist auch mit WHERE siehe hier:

Code: Alles auswählen

$sql = "SELECT count(*) AS total
      FROM " . USERS_TABLE . "
      WHERE user_id <> " . ANONYMOUS . " $sql_filter";
Grüße Jason
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Damit meine ich keine Anweisungen, die die Anzahl weiter als nötig verringern. Also wenn z.B. 50 in der Liste sind und 15 pro Seite angezeigt werden sollen, musst du die numrows Abfrage so bauen, daß dabei 50 rauskommt.
Wichtig ist nur daß du das nicht in die Hauptabfrage mit einbaust, sondern eine zweite startest.
Jason

Beitrag von Jason »

Hi,
ich habe es jetzt hinbekommen die pagination funzt nur wird unten auf der Seite jetzt diese fehlermeldung angezeigt:
Fatal error: Cannot break/continue 1 level in /is/htdocs/board/buddylist.php on line 402
Ich weiss nicht ob es damit was zu tun hat aber die Links zu den Weiteren seiten sehen so aus: http://www.domain.de/buddylist.php?&start=0

Müsste es net so sein http://www.domain.de/buddylist.php?start=0 ??

Hier nochmal das aktuelle script: buddylist.php

Grüße Jason
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Ich weiß nicht warum die Meldung angezeigt wird, aber da das break an der Stelle sowieso sinnlos ist, nimm´s doch einfach raus.
Jason

Beitrag von Jason »

Danke die fehlermeldung ist jetzt weg aber mir ist da noch ein problem aufgefallen mit dem SQL Query in dem jetzt das Limit eingebaut ist wird auch abgefragt welche der Buddys Online bzw. Offline sind:
$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
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 . '
ORDER BY b.added
LIMIT ' . $start . ', ' . $board_config['topics_per_page'];
Jetzt werden unter Online/Offline nur noch die angezeigt die auch auf der jeweiligen Seite sind kann man das irgendwie hinbekommen das unter Online/Offline wieder alle in der jeweiligen Buddyliste vorhandenen Benutzer angezeigt werden?

Hier wieder das aktuelle script: buddylist.php

Hoffe mal es hat jemand verstanden was ich meine und kann mir helfen das hinzubekommen :)

Grüße Jason
Antworten

Zurück zu „Coding & Technik“