Remove last comma from pagination

Asked

Viewed 73 times

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)'>&laquo;</a>";

} else { 

    $prev_link = "&laquo;";

}


// 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)'>&raquo;</a>";

} else { // senão não há link para a próxima página

    $next_link = "&raquo;";

}   

// 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;

?>`

1 answer

0

Try to use something in this sense:

$total_paginas = ceil($total_paginas);
$painel = "";

$f = $pagina + 2;
if($f > $total_paginas){
    $f = $total_paginas;
}

$n = $pagina - 2;
if($n < 1){
    $n = 1;
}

for ($x=$n; $x<=$f; $x++) {

    if ($x==$pagina) {
        $painel .= "$x";
    } else {
        $painel .= "<a href='javascript:void();' onclick='paginacao($x, $usr_id)'>$x</a>";
    }

    if ($x < $f) {
        $painel .= ", ";
    }
}

At the time of creating the pagination condition append the comma only if it is not the last iteration of the for.

  • 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.

  • 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.

  • 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?

  • 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.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.