Jump to content

Recommended Posts

Posted

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;}
 
Posted

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  😛

Posted

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.

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.