• 24-01-2010, 18:59:58
    #1
    Merhaba, aşağıdaki kod ile sayfalama yapıyorum. Ama içerik arttıkça sayfa sayısı da 170-180 diye gidiyor. ve bu çok kötü bir görünüm veriyor. Nasıl sadece 5 sayfayı listeleyebiliriz?
    Örn: şuan da
    1 2 3 4 5 6 7 8 9 10 11 12 diye gidiyor.

    ben şu şekilde olmasını istiyorum; sayfa 21 seçiliyse

    1 ... 17 18 19 20 [21] 22 23 24 25 ... 136

    aynı şekilde 1 seçiliyse
    1 2 3 4 5 ... 136 gibi.


    if($tsayfa==1){}else{
    echo'<div class="pages">';
    if($sayfa==1){
    echo'<span class="nextprev">« Önceki Sayfa</span>';
    }else{
    echo '<a class="nextprev" href="'.$ayar['siteadres'].'/sayfa-'.($sayfa-1).'/">« Önceki Sayfa</a>';
    }
    for($x=1; $x<=$tsayfa; $x++){
    
    
    if($x==$sayfa){echo '<span class="current">'.$x.'</span>';}else{
    echo '<a href="'.$ayar['siteadres'].'/sayfa-'.$x.'.html">'.$x.'</a>&nbsp;';
    
    }}
    if($sayfa==$tsayfa){echo '<span class="nextprev">Sonraki Sayfa »</span>';}else{echo '<a class="nextprev" href="'.$ayar['siteadres'].'/sayfa-'.($sayfa+1).'.html">Sonraki Sayfa »</a> ';}
    echo'</div>';
    }
  • 24-01-2010, 21:07:36
    #2
    kendi sitemde kullandığım sayfalama fonsiyonu:

    function sayfala($suanda = 1,$iceriksay,$limit = 15,$sayfa = "/",$uzanti = "") {
    	$onceki = $suanda - 1;
    	$sonraki = $suanda + 1;
    	$sonsayfa = ceil($iceriksay / $limit);
    	$ileri = $suanda + 4;
    	if($ileri > $sonsayfa) $ileri = $sonsayfa;
    	$geri = $suanda - 4;
    	if($geri < 1) $geri = 1;
    
    	$sayfalar = "";
    	if($sonsayfa > 1) {
    		$sayfalar .= "\t\t\t<div class=\"sayfalar\" >\n";
    		if($suanda >= 6) {
    			$sayfalar .= "\t\t\t\t<a href=\"".$sayfa."1".$uzanti."\">&lt;&lt; İlk</a>\n";
    		}
    		if($suanda > 1) {
    			$sayfalar .= "\t\t\t\t<a href=\"$sayfa$onceki$uzanti\">&lt; Önceki</a>\n";
    		}
    		for($counter=$geri;$counter<$suanda;$counter++) {
    			$sayfalar .= "\t\t\t\t<a href=\"$sayfa$counter$uzanti\">$counter</a>\n";	
    		}
    		$sayfalar .= "\t\t\t\t<span class=\"current\">$suanda</span>\n";
    		for($counter=$suanda+1;$counter<=$ileri;$counter++) {
    			$sayfalar .= "\t\t\t\t<a href=\"$sayfa$counter$uzanti\">$counter</a>\n";	
    		}
    		if($suanda < $sonsayfa) {
    			$sayfalar .= "\t\t\t\t<a href=\"$sayfa$sonraki$uzanti\">Sonraki &gt;</a>\n";
    		}
    		if($suanda < $sonsayfa - 4) {
    			$sayfalar .= "\t\t\t\t<a href=\"$sayfa$sonsayfa$uzanti\">Son &gt;&gt;</a>\n";
    		}
    		$sayfalar .= "\t\t\t</div>\n";
    	}
    	return $sayfalar;
    }
    kullanımı :

    /*
    $suanda : şuanki sayfa no
    $iceriksay : toplam içerik
    $limit : sayfada gösterilicek içerik sayısı
    $sayfa : sayfa adı (örn : index.php?page= , komik-videolar-
    $uzanti : örn : .html 
    sayfalama $sayfa.$sayfano.$uzanti şeklinde olucak
    */
    echo sayfala($suanda,$iceriksay,$limit,$sayfa,$uzanti);
  • 24-01-2010, 21:56:36
    #3
    teşekkürler.