Seiten Blättern Funktion
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
argument
aussehen
bedingung
beispiel
code
ergebnis
funktion
limit
null
offset
page
parameter
problem
schleife
string
suchwort
tabelle
url
zeile
-
Hallo
ich möchte eine Seiten Blättern Funktion erstellen, bei der man quasi unendlich weiter blättern kann,
aber immer nur 5 Seiten-Links angezeigt werden, wobei immer mit Seite:01 ganz vorne steht
und - wenn Seitenzahl groß genug - man auch immer direkt eine Seite zurück kann.
Also wenn man auf Seite 1 ist dann ist es ja einfach:
-- Seite:01 --- Seite:02 --- Seite:03 --- Seite:04 --- Seite:05 ---
... wenn man auf Seite 04 ist, dann soll es so aussehen:
--- Seite:01 -- Seite:03 --- Seite:04 --- Seite:05 --- Seite:06 ---
... wenn man auf Seite 15 ist, dann soll es so aussehen:
--- Seite:01 -- Seite:14 --- Seite:15 --- Seite:16 --- Seite:17 ---
usw. ... also immer mit Seite:01, immer eine Seite zurück möglich und Gesamt max. 5 Links
Wie kann ich das mit einer /eigenen) PHP Funktion lösen,
bei der ich als Argument (Parameter) nur die aktuelle Seite übergebe ?!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich verstehe jetzt nicht was dein Problem ist. Kannst du überhaupt PHP? Es wäre hilfreich wenn du mal dein Problem formulierst und zeigst wie du es bisher versucht hast!
Wenn ich deinen Wunsch richtig verstanden habe ist das wirklich nicht schwer vllt. solltest du nochmal ein paar Tutorials für PHP durcharbeiten!
Trozdem hier mal kurz ein Beispiel (nochmal mach ich das nicht!)
<?php $page = 1; if (isset($_GET['page']) && is_numeric($_GET['page']) && is_int($_GET['page'] *1)) { $page = $_GET['page']; } function getPages($id) { if ($id == 1) { $html = "<a>Seite 1</a>"; } else { $html = "<a href='pages.php?page=1'>Seite 1</a>"; if ($id > 2) { $html .= " --- <a href='pages.php?page=" . ($id -1) . "'>Seite " . ($id -1) . "</a>"; } $html .= " --- <a>Seite " . ($id) . "</a>"; } $html .= " --- <a href='pages.php?page=" . ($id +1) . "'>Seite " . ($id +1) . "</a> --- <a href='pages.php?page=" . ($id +2) . "'>Seite " . ($id +2) . "</a>"; return $html; } ?> <!DOCTYPE html> <html> <head> </head> <body> <div> <?php echo getPages($page); ?> </div> </body> </html>
-
jo Danke, das sieht schon ganz gut aus.
ja, ein bishcne PHP kann ich schon ... habe das Beispiel noch ein bischen erweitert / verbessert
+ auch 5 Links zeigen, wenn aktuelle Seite noch kleiner als 3 ... vorher waren da zu wenige
+ mit Übergabe eines Suchwort (Query-String) aus Formular (POST) und in Links (GET)
+ mit "formatiereten" Zahlen bei Seiten-Nummern (immer 3-Stellig mit führenden Nullen)
<?php // ------------------------------------------------------- header('Content-Type: text/html; charset=utf-8'); $runfile = basename($_SERVER['PHP_SELF']); // ------------------------------------------------------- $page = 1; $query_string = 'Bücher'; $query_string = utf8_encode($query_string); if (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) && is_int($_REQUEST['page'] *1)) { $page = $_REQUEST['page']; } if (isset($_REQUEST['q']) && !empty($_REQUEST['query'])) { $query_string = $_REQUEST['query']; } $query_urlenc = rawurlencode($query_string); // ------------------------------------------------------- function formatNum($id,$len=3) { $nr = str_pad($id,$len,'0',STR_PAD_LEFT); return $nr; } function getPages($id) { global $runfile, $query_urlstr; if ($id == 1) { $html = "<a>Seite ".formatNum(1)."</a>"; } else { $html = "<a href='".$runfile."?query=".$query_urlstr."&page=1'>Seite ".formatNum(1)."</a>"; if ($id > 2) { $html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id -1) . "'>Seite " . formatNum($id -1) . "</a>"; } $html .= " --- <a>Seite " . formatNum($id) . "</a>"; } $html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +1) . "'>Seite " . formatNum($id +1) . "</a>"; $html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +2) . "'>Seite " . formatNum($id +2) . "</a>"; if ($id < 3) { $html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +2) . "'>Seite " . formatNum($id +3) . "</a>"; } if ($id < 2) { $html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +2) . "'>Seite " . formatNum($id +4) . "</a>"; } $html .= " --- "; return $html; } // ------------------------------------------------------- ?> <!DOCTYPE html> <html> <head> </head> <body> <div style="text-align:center;"> <br /> <br /> <form name="form1" method="post" action="<?php print $runfile; ?>"> Suchwort(e): <input type="text" name="q" size="40" maxlength="150" value="<?php print $query_string; ?>" /> OK: <input type="submit" name="run" value="Suchen" /> <input type="hidden" name="p" value="1" /> </form> <br /> <br /> <p>Suchwort: <strong><?php echo $query_string; ?></strong></p> <p>Aktuelle Seite: <strong><?php echo $page; ?></strong></p> <hr /> <?php echo "<p>".getPages($page)."</p>\n" ?> <hr /> <br /> <br /> </div> </body> </html>
schon ganz nett, aber es funktioniert damit halt nur für 5 Links in der Seiten-Navigation
nur zum herumspielen und lernen ... wie machen, wenn man Anzahl der Links dynamisch haben will ?
also als zusätzliches Argument (Parameter) bei Funktions-Aufruf ... z.B: getPages($page,7) für 7 Links
-
Wie macht man eine Seitenblätter Funktion
-
hier noch eine Seiten-Blättern Funktion,
// ---------------------------------------------------------- function navigationsLeiste($MaxSeiten,$seiteAktuell,$extVariables,$pagevar='seite',$navSize=7) { $NavCeil = floor($navSize / 2); $string = ''; if($seiteAktuell > 1){ $string .= '<a href="?'.$pagevar.'=1'.$extVariables.'"><<</a> '; $string .= '<a href="?'.$pagevar.'='.($seiteAktuell-1).$extVariables.'"><</a> '; } else { $string .= '<< '; $string .= '< '; } if ($seiteAktuell > $MaxSeiten-$NavCeil) { $startp = ($seiteAktuell-($NavCeil+($NavCeil-($MaxSeiten-$seiteAktuell)))); } else { $startp = $seiteAktuell-$NavCeil; } if ($seiteAktuell <= $NavCeil) { $endp = $NavCeil + ($seiteAktuell + ($NavCeil-$seiteAktuell) +1); } else { $endp = $seiteAktuell+$NavCeil; } $xnrsize = strlen($MaxSeiten); $xnrsize = ($xnrsize < 3) ? 3 : $xnrsize; for($x=$startp;$x<=$endp;$x++){ $xnr = str_pad($x,$xnrsize,'0',STR_PAD_LEFT); if(($x>0 && $x<$seiteAktuell) || ($x>$seiteAktuell && $x<=$MaxSeiten)) $string .= '<a href="?'.$pagevar.'='.$x.$extVariables.'">'.$xnr.'</a> '; if($x==$seiteAktuell) $string .= $xnr . ' '; } if($seiteAktuell < $MaxSeiten){ $string .= '<a href="?'.$pagevar.'='.($seiteAktuell+1).$extVariables.'">></a> '; $string .= '<a href="?'.$pagevar.'='.$MaxSeiten.$extVariables.'">>></a> '; } else { $string .= '> '; $string .= '>> '; } return $string; } // ----------------------------------------------------------
und für das Auslesen aus MySQL mit LIMIT hier noch ein Tipp wie man den LIMIT-START Wert bekommt:
$pagesize = 10; // ----- Ergebnisse pro Seite $limitstart = (($seiteAktuell * $pagesize) - $pagesize); // ----- Offset = ueberspringt n Zeilen $sql = "SELECT * FROM tabelle WHERE feld='bedingung' LIMIT ".$limitstart.",".$pagesize.""
somit beginnt die SQL Abfrage bei Seite:1 mit Offset 0 (Null) ... überspringt 0 Zeilen
und bei Seite:2 mit Offset 10, bei Seite:3 mit Offset 20, bei Seite:4 mit Offset 30, usw. ...
und es werden immer nur (hier) 10 Ergebnisse nach dem Offset ausgelesen.
... damit kann man prima durch größere MySQL Tabellen auf Seiten durch-blättern :)
Beitrag zuletzt geändert: 12.6.2013 18:24:59 von katalogbox -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage