[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Class pagination funktioniert nicht - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
cervelat
Beiträge: 111
Registriert: 7. Mai 2008, 22:32

Class pagination funktioniert nicht

2. Jul 2009, 00:08

Moin,

ich versuche gerade eine Suchfunktion mit der Class pagination zu versehen. Die Suche funktioniert soweit, es geht nur noch darum, die Ergebnisse auf mehrere Seiten aufzuteilen.

Hier mein Code:

Code: Alles auswählen

<?php

	require $REX['INCLUDE_PATH'].'/classes/class.pagination.inc.php';

	$params = array(
		'page' => 'structure',
		'category_id' => 3
	);

	if(isset($_REQUEST['jobsearch-submit'])) {

		$sql = "SELECT ra.id, ra.name, ras.value1, ras.value3, ras.value4, ras.value5, ras.value6, ras.value7, ras.value8 FROM rex_article ra, rex_article_slice ras WHERE ra.clang=0 AND ras.clang=0 AND ra.id = ras.article_id AND ras.modultyp_id=3 AND ra.re_id=3 AND (ra.name LIKE '%" . mysql_real_escape_string(trim($_REQUEST['keywords'])) . "%' OR ras.value8 LIKE '%" . mysql_real_escape_string(trim($_REQUEST['keywords'])) . "%')";

		$pag = new pagination('index.php', $sql, $params, 'cpage', 3, 'cpage');
		
		$pag->getPagination();

		foreach($pag->result as $row) {
			echo '	<p><strong><a href="'.rex_getUrl(6,"", array('project_id' => $row->getValue('id'))).'">'.$row->getValue('name').'</a></strong><br />'.mb_substr($row->getValue('value8'), 0, 180)."...</p>";
		}

		// Ausgabe der Seitenauswahl (nur wenn mehr als eine Seite)
		echo $pag->pagination;
		
		// Ausgabe "Seite x von y" (nur wenn mehr als eine Seite)
		echo $pag->pagecount;		

	}
?>
Ich erhalte folgende Fehlermeldung:
Warning: Division by zero in E:\redaxo\include\classes\class.pagination.inc.php on line 99

Zeile 99 in der class.pagination.inc.php:

Code: Alles auswählen

$this->numPages = ceil($sql->getRows()/$this->itemsPerPage);
Was mich wundert, ist daß die Funktion pagination nur 5 Parameter erwartet, aber 6 im Beispielscript übergeben bekommt.

Wenn ich nur 5 Parameter übergebe, erhalte ich folgende Fehlermeldung:
Fatal error: Call to a member function getValue() on a non-object in E:\redaxo\include\classes\class.rex_article.inc.php(271) : eval()'d code on line 45

Der Code in Zeile 45 ist der Inhalt der foreach-Schleife (kursiv im Code)

Hat jemand schon das gleiche Problem gehabt oder eine Idee? Danke im Voraus für Eure Hilfe!

Grüße,
David

Benutzeravatar
Michael83
Beiträge: 189
Registriert: 22. Aug 2006, 16:59
Wohnort: Reichshof
Kontaktdaten: Website

4. Jul 2009, 18:14

Hallo,

danke für den Hinweis. Ich habe die Beschreibung ausgebessert. Versuchs mal so:

Code: Alles auswählen

$pag = new pagination('index.php', $sql, $params, 3, 'cpage');
Gruß,
Michael

cervelat
Beiträge: 111
Registriert: 7. Mai 2008, 22:32

4. Jul 2009, 21:40

Hi, danke für die Aktualisierung. Ich habs jetzt hinbekommen (der Fehler war, daß ich innerhalb der foreach-Schleife auf den Wert mit $row->getValue('name') statt $row['name'] zugreifen wollte...)

Allerdings werden bei der Ausgabe der Ergebnisse pro Seite jeweils der letzte Eintrag doppelt angezeigt?! Bei Anzeige von 5 Ergebnissen pro Seite werden jeweils 6 angezeigt...Was ist denn da los?
Grüße,
David

Benutzeravatar
Michael83
Beiträge: 189
Registriert: 22. Aug 2006, 16:59
Wohnort: Reichshof
Kontaktdaten: Website

5. Jul 2009, 03:43

Das Problem kann ich bei mir nicht nachvollziehen. Gibt es auch einen doppelten Eintrag, wenn du die Klasse nicht verwendest und direkt die Daten ausgibst?

Notfalllösung:

Code: Alles auswählen

$i = 1;
foreach($pag->result as $row) {
    if($i > 5) {
        break;
    }
    $i++;
    [...]
}
Gruß,
Michael

cervelat
Beiträge: 111
Registriert: 7. Mai 2008, 22:32

5. Jul 2009, 14:29

der Fehler war bei mir im Code, sorry. Danke für das Addon, funktioniert super.
Grüße,
David

Zurück zu „Allgemeines [R4]“