Jump to content
rir

Problema em sistema de paginação

Recommended Posts

rir

Boas esta paginação que eu tenho aqui esta a dar malta aparecem sempre os mesmos registo por favor ajudem me 😳

	<?php
global $paginacao;

if (!isset($_GET['pag']))
    $_GET['pag']=1;
$pag = ($_GET['pag']);
$pag = filter_var($pag, FILTER_VALIDATE_INT);

$inicio = 0;
$limite = 7;

if ($pag!='')
{
$inicio = $pag - 1;
} 

$busca_total = mysql_query("SELECT COUNT(*) as total FROM anedota");
$total = mysql_fetch_array($busca_total);
$total = $total['total'];

$busca = mysql_query("SELECT * FROM anedota  LIMIT $inicio, $limite");
if (mysql_num_rows($busca)>0)
{
	while ($texto = mysql_fetch_array($busca))
	{
		extract($texto);
	echo"<div class='post'>
	<a href='comentario_an.php?cond=".$id_anedota."'><h2>".$titulo."</h2></a>
		<p>". $anedota . "</p>
		</div>";
	}

$prox = $pag + 1;
$ant = $pag - 1;
$ultima_pag = ceil($total / $limite);
$penultima = $ultima_pag - 1;	
$adjacentes = 2;

echo '<div class="paginacao" align="center">';

if ($pag>1)
{
	$paginacao = '<a href="anedota.php?pag='.$ant.'">anterior</a>';
}


if ($ultima_pag <= 5)
{
for ($i=1; $i< $ultima_pag+1; $i++)
{
	if ($i == $pag)
	{
		$paginacao .= '<a class="atual" href="anedota.php?pag='.$i.'">'.$i.'</a>';
	} else {
		$paginacao .= '<a href="anedota.php?pag='.$i.'">'.$i.'</a>';
	}
}
} 

if ($ultima_pag > 5)
{
if ($pag < 1 + (2 * $adjacentes))
{
	for ($i=1; $i< 2 + (2 * $adjacentes); $i++)
	{
		if ($i == $pag)
		{
                                if (isset($paginacao))
                                    $paginacao .= '<a class="atual" href="anedota.php?pag='.$i.'">'.$i.'</a>';
                                else
                                    $paginacao = '<a class="atual" href="anedota.php?pag='.$i.'">'.$i.'</a>';
		} else {
                                if (isset($paginacao))
                                    $paginacao .= '<a href="anedota.php?pag='.$i.'">'.$i.'</a>';
                                else
                                    $paginacao = '<a href="anedota.php?pag='.$i.'">'.$i.'</a>';
		}
	}
	$paginacao .= '...';
	$paginacao .= '<a href="anedota.php?pag='.$penultima.'">'.$penultima.'</a>';
	$paginacao .= '<a href="anedota.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
elseif($pag > (2 * $adjacentes) && $pag < $ultima_pag - 3)
{
	$paginacao .= '<a href="anedota.php?pag=1">1</a>';
	$paginacao .= '<a href="anedota.php?pag=1">2</a> ... ';
	for ($i = $pag-$adjacentes; $i<= $pag + $adjacentes; $i++)
	{
		if ($i == $pag)
		{
			$paginacao .= '<a class="atual" href="anedota.php?pag='.$i.'">'.$i.'</a>';
		} else {
			$paginacao .= '<a href="anedota.php?pag='.$i.'">'.$i.'</a>';
		}
	}
	$paginacao .= '...';
	$paginacao .= '<a href="anedota.php?pag='.$penultima.'">'.$penultima.'</a>';
	$paginacao .= '<a href="anedota.php?pag='.$ultima_pag.'">'.$ultima_pag.'</a>';
}
else {
                $inic = $ultima_pag - (4 + (2 * $adjacentes));
                if ($inic > 3){
                    $paginacao .= '<a href="anedota.php?pag=1">1</a>';
                    $paginacao .= '<a href="anedota.php?pag=1">2</a> ... ';
                    }
                else{
                    $inic=3;
                    $paginacao .= '<a href="anedota.php?pag=1">1</a>... ';
                    }

	for ($i = $inic; $i <= $ultima_pag; $i++)
	{
		if ($i == $pag)
		{
			$paginacao .= '<a class="atual" href="anedota.php?pag='.$i.'">'.$i.'</a>';
		} else {
			$paginacao .= '<a href="anedota.php?pag='.$i.'">'.$i.'</a>';
		}
	}
}
}

}


if ($prox <= $ultima_pag && $ultima_pag >= 2)
{
	$paginacao .= '<a href="anedota.php?pag='.$prox.'">próxima »</a>';
}

	echo $paginacao;

echo '</div>';
?>
 

Se quiserem testar deixo aqui o css;

@charset "utf-8";

/*----------------------RESET--------------------*/

.box{position:relative; float:right; width:300px; padding:10px; margin:10px; background:#DCF1F1; border:1px solid #CDE2ED;}

.global-div{width:900px; height:auto; min-height:300px; padding:0 15px 15px 15px; position:absolute; float:none; left:50%;  margin:5px 0 0 -470px ; border:5px solid #fff; background:#fff; box-shadow:0 0 5px #999; -moz-box-shadow:0 0 5px #999; -webkit-box-shadow:0 0 5px #999; }

.global-div img{float:left; margin-right:20px; border:1px solid #eaeaea; z-index:500; }


.paginacao a{color:#333; padding:3px 5px; border:1px solid #ccc; text-decoration:none; margin:0 3px;}

.paginacao a:hover{background:#333; color:#fff;}

.paginacao a.atual{font-weight:bold; background:#fff; color:#333; border:0; border-bottom:1px solid #ccc; font-size:1.6em;}
 

EDIT: Alterado o título. Por favor, usem títulos específicos para a vossa dúvida (softklin)

EDIT: Indiquem a linguagem de programação usada para cada bloco de código (brunoais)

Share this post


Link to post
Share on other sites
calbertoferreira

Vamos começar pelo básico, verifica as seguintes situações:

- Já experimentas-te correr o código com prints ou outro output qualquer para verificar os resultados de cada variável ou das principais?

- Estás a passar a querystring de forma correcta? 127.0.0.1/anedotas.php?pag=1 por exemplo ?

Não tenho muita experiência em PHP, mas à primeira vista não vejo nada de errado.

Verifica as situações que referi anteriormente, por mais básicas que sejam, muitas horas à frente do PC por vezes fazem-nos esquecer delas  :P

Share this post


Link to post
Share on other sites
bsccara

Aparecem-te os mesmos registos porque não estás a mudar as variáveis $inicio e $limite, que indicam as linhas do resultado a devolver. Sendo sempre os mesmos valores a query devolve sempre as mesmas linhas.

Share this post


Link to post
Share on other sites
calbertoferreira

Ele actualiza a variável caso exista query string com na seguinte secção:

if ($pag!='')
{
        $inicio = $pag - 1;
} 

Share this post


Link to post
Share on other sites
bsccara

Tens razão, mas nesse caso acho que o código deveria ser:

if ($pag!='')
{
        $inicio = ($pag - 1) * $limite;
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.