Skocz do zawartości
Innocent

Pagination

Polecane posty

Cześć mam problem ze zrobieniem Pagination w PHP, próbuje cały czas uzyskać podobny efekt taki jak jest w IPS'ie ale nieudolnie mi to nie wychodzi, mógłby ktoś mnie nakierować jak to zrobić? Obecny kod mam taki:

<?php
    $Strona = $_GET["strona"];
    if(!$_GET["strona"]) {
	    $Strona=1;}
    $PoprzedniaStrona = $Strona-1;
    $NastepnaStrona = $Strona+1;
    $StartStrony = (($NaStronie*$$Strona)-$NaStronie);
    if($MinimumWynikow<=$NaStronie) {
	$MinimumStron =20;}
        else if(($MinimumWynikow % $NaStronie)==0) {
	$MinimumStron =($MinimumWynikow/$NaStronie) ;}
        else {
	$MinimumStron =($MinimumWynikow/$NaStronie)+1;
	$MinimumStron = (int)$MinimumStron;
    }
    $PoczatekStrony = ($Strona-1) * $WynikowNaStronie;
    $BazaDanych = "SELECT * FROM ".$TabelaBazy." ORDER BY test DESC LIMIT $PoczatekStrony, ".$WynikowNaStronie;
    $WynikWynikow = $Polaczenie->query($BazaDanych);
?> 
<?php echo $MinimumWynikow;?>
   <?php
    if($PoprzedniaStrona) {
	    echo " <li class='ipsPagination_page ipsPagination_active'><a href='?strona=$PoprzedniaStrona'> Poprzednia strona</a></li> ";
    }
    for($i=1; $i<=$MinimumStron; $i++){
	if($i != $Strona) {
		echo " <li class='ipsPagination_page'><a href='?strona=$i'> ".$i." </a></li> ";}
	else {
		echo " <li class='ipsPagination_page ipsPagination_active'><a href='?strona=$i'> ".$i." </a></li> ";}
    }
    if($Strona!=$MinimumStron) {
	    echo " <li class='ipsPagination_page ipsPagination_active'><a href ='?strona=$NastepnaStrona'> Następna strona</a></li> ";
    }
    ?>

Aktualny kod wyświetla mi tylko 20 stron i jak jest np tych stron 40 to nie wyświetla ich numerków.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No ok, ale robiąc:

$Strona = $_GET["strona"];
    if(!$_GET["strona"]) {
	    $Strona=1;}
    $PoprzedniaStrona = $Strona-1;
    $NastepnaStrona = $Strona+1;
    $StartStrony = (($NaStronie*$$Strona)-$NaStronie);
    if($MinimumWynikow<=$NaStronie) {
	$MinimumStron =20;}
        else if(($MinimumWynikow % $NaStronie)==0) {
	$MinimumStron =($MinimumWynikow/$NaStronie) ;}
        else {
	$MinimumStron =($MinimumWynikow/$NaStronie)+1;
	$MinimumStron = (int)$MinimumStron;
    }

najpierw powinieneś gdzieś mieć zliczoną ilość wszystkich rekordów. Tutaj masz jakieś $MinimumWynikow, ale nigdzie wcześniej nic nie masz do tego przypisane ani nic. Zobacz sobie w IPS jak jest robione stronicowanie jeśli chcesz mieć tak jak oni mają

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
1 godzinę temu, Spanner napisał:

No ok, ale robiąc:


$Strona = $_GET["strona"];
    if(!$_GET["strona"]) {
	    $Strona=1;}
    $PoprzedniaStrona = $Strona-1;
    $NastepnaStrona = $Strona+1;
    $StartStrony = (($NaStronie*$$Strona)-$NaStronie);
    if($MinimumWynikow<=$NaStronie) {
	$MinimumStron =20;}
        else if(($MinimumWynikow % $NaStronie)==0) {
	$MinimumStron =($MinimumWynikow/$NaStronie) ;}
        else {
	$MinimumStron =($MinimumWynikow/$NaStronie)+1;
	$MinimumStron = (int)$MinimumStron;
    }

najpierw powinieneś gdzieś mieć zliczoną ilość wszystkich rekordów. Tutaj masz jakieś $MinimumWynikow, ale nigdzie wcześniej nic nie masz do tego przypisane ani nic. Zobacz sobie w IPS jak jest robione stronicowanie jeśli chcesz mieć tak jak oni mają

W configu mam $WynikowNaStronie = 30;

I liczenie rekordów jest.

<?php 
	    $BazaDanych = "SELECT COUNT(test) AS test FROM ".$TabelaBazy;
        $Wynik = $Polaczenie->query($BazaDanych);
        $Rangi = $Wynik->fetch_assoc();
        $WszystkichStron = ceil($Rangi["points"] / $WynikowNaStronie);
	    echo "
		<ul class='ipsButtonRow ipsPos_right ipsClearfix'>
            <li>
			    <a href='' id='' data-role='sortButton' data-ipsmenu='' data-ipsmenu-activeclass='ipsButtonRow_active' data-ipsmenu-selectable='radio'>Wszystkich graczy: ".$Rangi["points"]."
		    </li>
        </ul>
		";
	?>

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tutaj

$StartStrony = (($NaStronie*$$Strona)-$NaStronie);

na pewno masz nie potrzebnie 2 znaki dolara ale ogólnie ilość ston to ceil( ilość_rekordów / ilość_wpisów_na_stronie )

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Można zamknąć, wykorzystałem JS'a do tego.

<script type="text/javascript">
$(document).ready(function(){
$('.pagination').pagination({
        items: <?php echo $total_records;?>,
        itemsOnPage: <?php echo $limit;?>,
        cssStyle: 'light-theme',
		currentPage : <?php echo $page;?>,
		hrefTextPrefix : 'index.php?page='
    });
	});
</script>

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.