błędy w ilosci stron paginacji

0

mam problem przy generowaniu ilosci stron w paginacji, załóżmy że mamy 39 elementów i ustawiamy 20 elementów na stronie - wygenerowane zostaną 2 podstrony (prawidłowo), ale przy 40 elementach już są generowane 3 podstrony (1 pusta), gdzie jest błąd ?

    // laczna ilosc, ilosc w rzedzie, ilosc na stronie, dlugosc podstron w paginacji, GET, adres strony
    function get_pagenumbers($entries, $rzad, $config_rows, $config_maxshow, $config_page, $adres) 
    {
    	$prev = '« cofnij';
    	$next = 'dalej »';
    	$config_totalPages = ceil(($entries) / ($rzad * $config_rows));
    	$start = 0; 
    	$end = $config_totalPages - 1; 
    	if($config_maxshow < $config_page || (($rzad * $config_rows * $config_maxshow) < $entries))
        {
    		if($config_page >= ($config_maxshow + 1) && $config_page < $end - $config_maxshow)
            { 
                $start = $config_page - $config_maxshow;
            }
    		else if($end < $config_page + $config_maxshow + 1 && $config_totalPages-1 >= $config_maxshow * 2+1)
            {
                $start = $config_totalPages - 1 - $config_maxshow * 2;
            }
    		else
            {
                $start = 0;
            } 		
    		if($config_page + $config_maxshow + 1 > $config_totalPages-1) 
            {
                $end = $entries / ($rzad * $config_rows); 
            }
    		else if($start == 0 && $end > $config_maxshow * 2) 
            {
                $end = $config_maxshow * 2; 
            }
    		else if($start == 0 && $config_totalPages <= $config_maxshow * 2) 
            {
                $end = $config_totalPages - 1; 
            }
    		else
            {
                $end = ($config_page + $config_maxshow); 
            } 
    	}
        if ($config_totalPages <= 1)
        {
            echo '';
        }
        else
        {       
            echo '<p align="center"><div class="pagination">';
        	if(($config_page-1) >= 0)
            {
                echo '<span class=""><a href="'.$adres.'page='.($config_page-1).'">'.$prev.'</a></span>';
            }
        	else
            {
                echo '<span class="disabled">'.$prev.'</span>';
            }
        	if($start > 0)
            {
                echo ' ... ';
            }
        	else
            {
                echo ' . ';
            }
        	for($i = $start; $i <= $end; $i++)
            {
        		if($config_page == $i)
                {
                    echo '<span class="current">'.($i+1).'</span>';
                }
        		else
                {
                    echo '<span class=""><a href="'.$adres.'page='.$i.'">'.($i+1).'</a></span>'; 
                }
        	}
        	if(ceil($end) < $config_totalPages - 1)
            {
                echo ' ... ';
            }
        	else
            {
                echo ' . ';
            }
        	if(($config_page + 1) <= $config_totalPages - 1)
            {
                echo '<span class=""><a href="'.$adres.'page='.($config_page+1).'">'.$next.'</a></span>';
            }
        	else
            {
                echo '<span class="disabled">'.$next.'</span>';
            }
            echo '</div></p>';
        }
    }
 
0

Napisz do czego służy każdy z parametrów wejściowych i co w nie wpisujesz, oraz co ma robić kod?

Mimo to stawiam na:

$config_totalPages = ceil(($entries) / ($rzad * $config_rows));

bo ceil zaokrągla w górę.

0

Sprostowanie: Parametry wejściowe opisałeś, ale napisz co ma robić ten kod.

0
$total_pages = ceil(($ilosc-1) / $max); // ilość stron  

Gdzie $ilosc to łączna ilość twoich elementów
$max to ilość wyświetlen na stronie

Proponuję mi zamiast pisać

 if($start > 0)
            {
                echo ' ... ';
            }
                else
            {
                echo ' . ';
}

tak

if(start > 0)
 echo '...' ;
else
 echo '.' ; 

też się wykona poprawnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1