Pagination in der Hackliste

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
smarty
Beiträge: 128
Registriert: So 17.Jul, 2005 15:13

Pagination in der Hackliste

Beitrag von smarty »

Hallo,

meine Hackliste soll eine Pagination erhalten, jedoch komme ich net voran.
Mal wird eine Seitenangabe erstellt (1,2,3) - aber die Links springen lediglich zum Seitenanfang, oder ich sehe nur den Text "Gehe zu Seite" :(

Die Funktion für die Pagination hatte ich in die hacks_list.php eingebaut.

Weiß jemand von euch wie ich die Seitenangabe in die Hackliste bekomme?

Danke

Edit/ die Hackliste auf diesem Board ist geil - das würd mir gefallen :)
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Die Hackliste auf OXPUS.de ist Teil des Download MODs.
Sofern Du den benutzt, kannst Du diese Hackliste auch sofort verwenden ;)

Aber zu den Seitenzahlen:
Wenn Du Pagination erstellst, muss die Startzahl der Liste mit in den Pagination Links enthalten sein.
Mit der Original-phpBB-Funktion "generate_pagination" wird das durch "start" automatisch erledigt.

Diese Variable muss dann aber in Deinem Script auch abgefragt und in der SQL-Anweisung zur Abfrage der Daten als Limit eingebunden werden!
Hier das Beispiel für die SQL-Anweisung:

Code: Alles auswählen

...
LIMIT $start, " . $variable_für_anzahl_elemente_je_seite;
$start sollte aber ohne "Inhalt" (definiert durch den ersten Aufruf des Scripts) aus Sicherheitsgründen auf "0" gesetzt werden, bevor die SQL-Abfrage ausgeführt wird.

Dann zur Darstellung ohne nötige Pagination:
Wenn Du diese komplett abschalten willst, sollte diese eben nicht nötig sein (wenn z. B. nur 10 Einträge auf der Liste vorhanden sind, aber maximal 20 Einträge je Seite dargestellt werden sollen) ist dazu eine Bedingung zu erstellen.
Am besten mit dem Ergebnis, mit dem auch die Gesamtzahl der Listeneinträge gezählt werden, um die Pagination überhaupt zu erstellen.
Diese Gesamtzahl der möglichen Listeneinträge wird in einer Bedingung zu der Seitenbegrenzung (also maximal gewünschte Anzahl an Einträgen je Seite) in Vergleich gesetzt und erst dadurch die Pagination ausgelöst.
Als Beispiel das vom Download MOD:

Code: Alles auswählen

$pagination = (sizeof($all_files) > $board_config['topics_per_page']) ? generate_pagination("hacks_list.$phpEx?sort_by=$sort_by&order=$order", sizeof($all_files), $board_config['topics_per_page'], $start) : '';
oder auch so:

Code: Alles auswählen

	if ($total_files > $board_config['topics_per_page'])
	{
		$pagination = generate_pagination("downloads.$phpEx?view=overall&sort_by=$sort_by&order=$order", $total_files, $board_config['topics_per_page'], $start);
		$template->assign_vars(array(
			'PAGINATION' => $pagination)
		);
	}
Der Text "Gehe zu Seite" kommt ebenfalls automatisch durch die Funktion "generate_pagination", wird aber leider fälschlicherweise immer angefügt.
Die betreffende Zeile in der Datei includes/functions.php lautet:

Code: Alles auswählen

	$page_string = $lang['Goto_page'] . ' ' . $page_string;
Entweder entfernst Du diese Zeile komplett, dann wird "Gehe zu Seite" nirgendwo im Forum mehr angezeigt, oder Du ersetzt diese Zeile durch

Code: Alles auswählen

	$page_string = ($page_string != '') ? $lang['Goto_page'] . ' ' . $page_string : '';
um den zusätzlichen Text nur anzuzeigen, wenn die Pagination auch wirklich erstellt wird.

Ich hoffe, das konnte nun helfen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
smarty
Beiträge: 128
Registriert: So 17.Jul, 2005 15:13

Beitrag von smarty »

ok, ich hab es jetzt folgendermaßen gemacht:

Code: Alles auswählen

$start = ( !empty($_GET['start']) ) ? intval($_GET['start']) : 0;
$start = $start * 5;
   
   
		$sql = 'SELECT * FROM ' . HACKS_LIST_TABLE . "
               LIMIT $start, 5";
			   		
		$pagination = (sizeof($all_files) > $board_config['topics_per_page']) ? generate_pagination("hacks_list.$phpEx?sort_by=$sort_by&order=$order", sizeof($all_files), $board_config['topics_per_page'], $start) : '';

$template->assign_vars(array(
	'PAGINATION' => $pagination,
    'L_GOTO_PAGE' => $lang['Goto_page'])
	);
Schaut nett aus, zeigt nur nichts an :(

Die Zeilen sind in der hacks_list.php vor
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
eingebunden.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Code: Alles auswählen

$start = $start * 5;
ist falsch, denn der neue Startwert wird in der Pagination selber eingetragen, hier so also komplett unnötig.

Code: Alles auswählen

(sizeof($all_files) > $board_config['topics_per_page'])
ist auch nur ein Beispiel, da size($all_files) hier aus dem Download MOD stammt und bei Dir immer 0 rauskommt, also die Pagination dadurch auch NIE erstellt würde.
Für size($all_files) muss die Variable rein, die die Anzahl aller möglichen Einträge in der Hackliste enthält!
Das zählt man am besten mit einer separaten SQL-Abfrage, wie z. B.

Code: Alles auswählen

 $sql = 'SELECT * FROM ' . HACKS_LIST_TABLE;
um eben die Anzahl aller Hacklisteneinträge zu erhalten.
Und die daraus resultierende Anzahl muss eben anstelle size($all_files) verwendet werden!
Ebenso muss

Code: Alles auswählen

'L_GOTO_PAGE' => $lang['Goto_page'])
raus, sonst würde das auch immer die Anzeige "Gehe zu Seite" anzeigen, auch wenn die Pagination nicht erstellt wird.
Wie Du das dann nochmal änderst, hatte ich Dir ja bereits geschrieben (also innerhalb der Datei functions.php!) ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
smarty
Beiträge: 128
Registriert: So 17.Jul, 2005 15:13

Beitrag von smarty »

danke dir nochmals - werd ich heute drüber herfallen :)
Antworten