rir Posted April 17, 2012 at 09:47 AM Report #449505 Posted April 17, 2012 at 09:47 AM 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;}
calbertoferreira Posted April 22, 2012 at 10:58 AM Report #450478 Posted April 22, 2012 at 10:58 AM 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 😛
bsccara Posted April 22, 2012 at 12:31 PM Report #450502 Posted April 22, 2012 at 12:31 PM 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.
calbertoferreira Posted April 22, 2012 at 01:11 PM Report #450509 Posted April 22, 2012 at 01:11 PM Ele actualiza a variável caso exista query string com na seguinte secção: if ($pag!='') { $inicio = $pag - 1; }
bsccara Posted April 22, 2012 at 01:40 PM Report #450512 Posted April 22, 2012 at 01:40 PM Tens razão, mas nesse caso acho que o código deveria ser: if ($pag!='') { $inicio = ($pag - 1) * $limite; }
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now