Bom, tenho uma duvida que me fez perder algumas horas de raciocinio, mas nao me fez chegar a lugar algum, resolvi vir aqui pedir ajuda dos mais experientes. Estou fazendo um sistema que possui paginação, mas essa paginação precisa sempre exibir a mesma quantidade de resultados.
Exemplo: Se houverem 64 resultados, e cada página exibir 10, a sétima página nao poderá exibir somente os 4 que restam, mas sim os 4 + 6 anteriores. É algo parecido com a paginação do orkut. Consigo fazer a paginação, mas nao consigo fazer esse esquema de sempre listar um numero pre-definido de resultados. Alguem pode me dar uma força na lógica?
Estou usando o seguinte esquema pra paginação:
<? //Consulta a ser feita no MySQL $sql = "SELECT * FROM tabela ORDER BY coluna DESC"; //Número de registros paginados por página $registros_pagina = "10"; //Resgato a página que estiver sendo acessada pela paginação $lista = (int)$_GET["lista"]; //Se for a página inicial da consulta, a variável $lista será nula if(!$lista) { $pc = "1"; } //Caso contrário, declaro o valor atual da variável $lista else { $pc = $lista; } $inicio = $pc - 1; $inicio = $inicio * $registros_pagina; //Limito a consulta do MySQL para exibir apenas a quantidade máxima configurada mais acima $resultado = mysql_query("$sql LIMIT $inicio, $registros_pagina"); //consulta a quantidade total de registros $todos = mysql_query("$sql"); //Armazeno a quantidade total de registros $tr = mysql_num_rows($todos); //Armazeno o resultado da quantidade total de registros pela quantidade de registros por página $tp = $tr / $registros_pagina; //Se não houverem registros a se exibir, é acusado o retorno abaixo if(mysql_num_rows($resultado) < 1) { echo "Nenhum registro encontrado"; } //Caso contrário é exibido o resultado da consulta else { //Exibo o resultado dos registros encontrados na consulta while($linha = mysql_fetch_array($resultado)) { $coluna = $linha["coluna"]; echo "$coluna<br /><br />"; } //E por fim monto os links da paginação $tp = ceil($tp); if($pc>1) { $anterior = $pc - 1; echo "<a href=\"?lista=$anterior\">[Anterior]</a> "; } for($i=$pc-5;$i<$pc;$i++) { if($i<=0) { } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; } } for($i=$pc;$i<=$pc+5;$i++) { if($i==$tp) { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; break; } else { echo "<a href=\"?lista=$i\">"; if($i=="$pc") { echo "<b>[$i]</b>"; } else { echo "[$i]"; } echo "</a> "; if($i==$pc+5 && $tp>$pc+5) { echo " ... <a href=\"?lista=$tp\">[$tp]</a>"; } } } if($pc<$tp) { $proxima = $pc + 1; echo " <a href=\"?lista=$proxima\">[Próxima]</a>"; } } ?>
Edição feita por: onlooker, 29/07/2009, 13:07.