0
I created a pagination, which is displayed like this 1,2,3, I wonder how I can remove the last comma from the last page? And another, the first pages show 1,2,3, and when step 3, shows 1,2,3,4, can all show only 3? If you can help me in these two things I will be very happy and grateful! The code I have: `
if($action == ""){
$num_por_pagina = 14;
$pagina = mysql_real_escape_string($_GET["pagina"]);
if (!$pagina) {
$pagina = 1;
}
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
}
$sql1 ="SELECT * FROM user_badges WHERE user_id = '$usr_id' ORDER BY id";
$res1= mysql_query($sql1) or die(mysql_error());
$prev = $pagina - 1;
$next = $pagina + 1;
$total = mysql_num_rows($res1);
$total_paginas = $total/$num_por_pagina;
if ($pagina > 1) {
$prev_link = "<a href='javascript:void();' onclick='paginacao($prev, $usr_id)'>«</a>";
} else {
$prev_link = "«";
}
// se número total de páginas for maior que a página corrente, então temos link para a próxima página
if ($total_paginas > $pagina) {
$next_link = "<a href='javascript:void();' onclick='paginacao($next, $usr_id)'>»</a>";
} else { // senão não há link para a próxima página
$next_link = "»";
}
// vamos arredondar para o alto o número de páginas que serão necessárias para exibir todos os registros. Por exemplo, se temos 20 registros e mostramos 6 por página, nossa variável $total_paginas será igual a 20/6, que resultará em 3.33. Para exibir os 2 registros restantes dos 18 mostrados nas primeiras 3 páginas (0.33), será necessária a quarta página. Logo, sempre devemos arredondar uma fração de número real para um inteiro de cima e isto é feito com a função ceil().
$total_paginas = ceil($total_paginas);
$painel = "";
$f = $pagina + 2;
$f = ($f > $total_paginas)?$total_paginas:$f;
$n = $pagina - 2;
$n = ($n<1)?1:$n;
if($n == 1 && $total_paginas >600){
$f=600;
}else{
$f=$pagina+2;
$f=($f<=$total_paginas)?$f:$total_paginas;
}
for ($x=$n; $x<=$f; $x++) {
if ($x==$pagina) { // se estivermos na página corrente, não exibir o link para visualização desta página
$painel .= "$x, ";
} else {
$painel .= "<a href='javascript:void();' onclick='paginacao($x, $usr_id)'>$x</a>, ";
}
}
$paginacao = "$prev_link $painel $next_link";
echo "".$paginacao;
?>`
Heber, it worked really well, thank you. You can help me on something else, the first paginations show 1,2,3, and when step 3, shows 1,2,3,4, can all show only 3 paginations? Waiting for answers, hug.
– Carlos Gomes
If I understand you want to show four buttons for navigation between pages, plus the next page button and previous page, okay? I changed your code a little bit, see in response the excerpt I edited.
– mminetto
No. I would like when I passed the next pagination to be showing three like this, 1, 2, 3 - 2, 3, 4 - 3, 4, 5 always showing only 3 numbers, it is possible?
– Carlos Gomes
Yes of course it is possible, you will only have to change the logic in assigning values to the variable $f and $n, probably just change from 2 pages to 1.
– mminetto