hi,
Entschuldige, das ich erst jetzt antworte, aber ich hatte bisher nicht die Luft und den Kopf dafür ;).
Ach, kein Problem. Ich bin dir schon dankbar, dass ich überhaupt endlich mal die verwendung von Klassen verstanden habe :)
// Insgesamt finde ich es aber merkwürdig, weshalb du für ein ceil eine eigene Funktion schreibst ;)-
Das selbe ist mir vor 2 St. auch durch den Kopf gegangen, und ich habe es verworfen; und bei der Gelegenheit auch einige andere dinge vereinfacht.
// aber ich würde ehr zu Funktionen greifen und die notwendigen Daten beim Aufruf berechnen
$_pagination->PrintPageHeader();
echo $_pagination->GetPageFooder();
Das kommt als letzter Schritt, der auch Default sein wird.
Auf die von mir verwendete Weise besteht aber noch die möglichkeit, dass man zusätzlich auf die einzelnen Ausgaben zugreifen kann; so als kleiner Bonus, einfach der Flexibiltät willen.
Ist der Ansatz so Ok?
Sieht eigendlich recht gut aus.
Dann bleibe ich dabei. Ich habe mittlerweile auch die erste Sektion, die komplette Infoanzeige fertiggestellt, und kam mit überraschenden 25 Zeilen in der Klasse aus. Ich muss es noch kommentieren und dann den nächsten Abschnitt angehen, aber so langsam fällt es mir immer leichter.
class Pagination_builder
{
public function __construct($param) {
$this->msg = $param['msg']->pagination; // XML-Datei, direkt auf die gewünschte Sektion
$this->total_data = $param['total_data'];
$this->perpage = $param['perpage'];
$this->getsite = $param['getsite'];
$this->total_pages = ceil($param['total_data'] / $param['perpage']);
// Seite X von Y
$this->pagefromto = $this->temp_replace(sprintf($this->msg->pagefromto, $param['getsite'] < $this->total_pages+1 && $param['getsite'] > 0 ? $param['getsite'] : 1, $this->total_pages));
// Die Komplette Infoanzeige
$this->total_info = $this->head_all();
}
private function head_all() {
$seperate = ' <span>' . $this->msg->pageinfoseperator . '</span> ';
if ($this->total_data < 1)
return $this->msg->nodatafound;
else if ($this->total_data < $this->perpage+1)
return $this->temp_replace( sprintf($this->msg->totalfiles, $this->total_data) );
else
return $this->pagefromto . $seperate
. $this->temp_replace( sprintf($this->msg->totalfiles, $this->total_data) ) . $seperate
. $this->temp_replace( sprintf($this->msg->filesperpage, $this->perpage) );
}
private function temp_replace($str) {
return str_replace('[/b]', "</strong>", str_replace('[b]', "<strong>", $str));
}
}
OOP ist Geil! ;)
mfg