2016-07-18 8 views
0

Ich habe mein Problem über das Internet gesucht, aber ich konnte keine befriedigende Lösung finden.PHP Paginierung für jede zehn Seiten ohne SQL, MYSQL

Ich versuche, Seitennummerierung abhängig von Seitennamen auf meiner Website zu generieren. Im Code unten ich erreichte dies aber ich mag auch wie begrenzte Seiten zeigen this

Ich bin nicht PHP-Coder und mein Basic-Code ist hier ...

function Pagination($TotalPage) 
{ 
$PageName= substr(basename ($_SERVER['PHP_SELF']) , 0, (strlen(basename ($_SERVER['PHP_SELF']))-3)); 

for ($x = 1; $x <= $TotalPage; $x++) 
{ 
echo ltrim((sprintf('<a href="%s_%03d">%03d</a>&nbsp;&nbsp;&nbsp;', $PageName, $x, $x))); 
} 
} 

(I-Link am Abrufen Dateinamen aus und erhöhen sie eins nach dem anderen)

Wenn dieser Code ausgeführt wird es von Seiten wie dieser zeigt (unten auf der Seite): http://www.mcuma.com/doku.php/mesnevi/birinci_cilt_001

Wenn jemand Hilfe Code accor ändern ich werde mich sehr freuen.

Mit freundlichen Grüßen,

Mete

+0

Vielleicht [diese Antwort] (http://stackoverflow.com/questions/5683655/stuck-at-displaying-a-php-paginator/5685220#5685220) helfen können. Hier finden Sie 'PHP' Code und ein Beispiel wie man es benutzt. – Wh1T3h4Ck5

Antwort

0

Für Paginierung müssen Sie wissen, welche Seite Sie sich gerade befinden. Das sind die letzten drei Ziffern, wenn ich das richtig verstehe. Also:

$currentpage = substr($_SERVER['PHP_SELF'], -3); 

Jetzt kommt es darauf an, was Sie tun möchten. Wenn Sie die Präsentation wie im Screenshot wollen. Da die Ordnung und sprintf viel zu lang ist für mich, schreiben werde ich schreibe link(pagename, number, caption) gerade und übernehmen eine solche Funktion

$first = 1; // this is a magic var. 
$range = 3; // as is this. 

$prev = max($currentpage-1, $first);   // find prev 
$low = max($currentpage-$range, $first+1);  // clip low 
$high = min($currentpage+$range, $TotalPage-1); // clip high 
$next = min($currentpage+1, $TotalPage);  // find next 

link($PageName, $prev, '&laquo;'); 
link($PageName, $first, $first); 
if ($low-1 != $first) { echo '...'; } 
for($x = $low; $x <= $high; $x++) { 
    link($PageName, $x, $x); 
} 
if ($high+1 != $TotalPage) { echo '...'; } 
link($pageName, $TotalPage, $TotalPage); 
link($PageName, $next, '&raquo;'); 
0

Vielen Dank Jakumi, nach Ihren lehr Antwort existiert, ich nur geänderte link() Funktion in Ihrer Kodierung wegen meiner PHP Version unterstützt keine link() Funktion.

Es kann lang und nicht schlau sein, aber es funktioniert gut für mich. Vielen Dank nochmal mein Freund Jakumi.

function PG($TP) 
{ 
$PN= substr(basename ($_SERVER['PHP_SELF']) , 0, (strlen(basename (  $_SERVER['PHP_SELF']))-3)); // page name 
$currentpage = intval(substr($_SERVER['PHP_SELF'], -2)); // page number as integer 

$first = 1; // this is a magic var. 
$range = 10; // as is this. 

$prev = max($currentpage-1, $first);  // find prev 
$low = max($currentpage-$range, $first+1); // clip low 
$high = min($currentpage+$range, $TP-1); // clip high 
$next = min($currentpage+1, $TP);  // find next 

echo ltrim(sprintf('<a href="%s_%02d">&laquo;</a>&nbsp;&nbsp;&nbsp;', $PN, $prev, $prev)); 
echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $first, $first)); 

if ($low-1 != $first) { echo '... &nbsp;&nbsp;&nbsp;'; } 
for($x = $low; $x <= $high; $x++) { 
echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $x, $x)); 
} 
if ($high+1 != $TP) { echo '... &nbsp;&nbsp;&nbsp;'; } 

echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $TP, $TP));  
echo ltrim(sprintf('<a href="%s_%02d">&raquo;</a>&nbsp;&nbsp;&nbsp;', $PN, $next, $next)); 
}