+2

Paginação de Resultados - Parte II

criado por Diego Mascarenhas em 29/01/2003 3:46pm
Após um tempo de ter escrito a primeira parte do artigo de paginação de resultados,
estou de volta para explicar a vocês como colocar o número das páginas nos seus scripts.

Antes de mais nada, vou colocar o link da primeira parte, caso alguém não tenha visto.
O endereço do primeiro artigo é: http://www.phpbrasil.com/articles/article.php/id/245

O código utilizado no artigo antigo era o seguinte:

<?php
$conn = mysql_connect("host","user","senha");
$banco = mysql_select_db("bancodedados");
$busca = "SELECT * FROM tabela";
$total_reg = "10"; // número de registros por página
if (!$pagina) {
    $pc = "1";
} else {
    $pc = $pagina;
}
$inicio = $pc - 1;
$inicio = $inicio * $total_reg;
$limite = mysql_query("$busca LIMIT $inicio,$total_reg");
$todos = mysql_query("$busca");

$tr = mysql_num_rows($todos); // verifica o número total de registros
$tp = $tr / $total_reg; // verifica o número total de páginas

// vamos criar a visualização
while ($dados = mysql_fetch_array($limite)) {
    $nome = $dados["nome"];
    echo "Nome: $nome<br>";
}

// agora vamos criar os botões "Anterior e próximo"
$anterior = $pc -1;
$proximo = $pc +1;
if ($pc > 1) {
    echo " <a href='?pagina=$anterior'><- Anterior</a> ";
}
echo "|";
if ($pc < $tp) {
    echo " <a href='?pagina=$proximo'>Próxima -></a>";
}
?>

Na próxima página, a continuação...

Comentários:

Mostrando 1 - 10 de 13 comentários
Marcondes disse:
Eu sei que é meio tarda pra responder, mas alguém pode precisar!!!

Sendo assim,O erro:

ERROR: LIMIT #,# syntax is not supported\nHINT: Use separate LIMIT and OFFSET clauses.

Este é um problema com o PEAR, o PostgreSQL não suporta a nova sintaxe.

Você de usar :

$limite = pg_query("$busca LIMIT $inicio OFFSET $total_reg");

Observe o OFFSET no meio no lugar da vírgula....


abraços!!!
23/12/2009 12:10am (~7 anos atrás)

CONDE COLOCO UM ORDER BY PARA ORDENAR?

RECEBO A SEGUINTE MENSAGEM AO INSERIR

$sql2 = mysql_query("SELECT * FROM videos LIMIT $inicio,$total_reg ORDER BY id DESC");


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:\www.revistavipbrasil.com.br\tv\videos.php on line 29
02/07/2007 7:38pm (~9 anos atrás)

Eu uso o PostgreSQL e essa linha está dando erro para mim:

$limite = pg_query("$busca LIMIT $inicio,$total_reg");

Acredito que seja o LIMIT, vejam o erro:
pg_query() [<a href='function.pg-query'>function.pg-query</a>]: Query failed: ERROR: LIMIT #,# syntax is not supported\nHINT: Use separate LIMIT and OFFSET clauses.

Alguem pode me ajudar?
Dago
22/06/2007 7:46am (~9 anos atrás)

herson leite disse:
nossa veio num tou conseguindo de geito nenhum, aparece na segunda paginação sempre os mesmos resultados da primeira!! como eu arrumo isso?
16/09/2005 6:08pm (~11 anos atrás)

Endymion disse:
Alterar a linha:

$tp = $tr / $total_reg; // verifica o número total de páginas

para

$tp = ceil($tr / $total_reg); // verifica o número total de páginas

Codigo dos botões:

<?php
// agora vamos criar os botões "Anterior e próximo"
$intervalo = 10;
$anterior = $pc -1;
$proximo = $pc +1;
$flag1 = floor($pc/$intervalo);
$pi = ($flag1 * $intervalo );
$pf = $pi + $intervalo;
if ($pc > 1) {
echo "<a href='?name=icashop&pagina=$anterior'><- Anterior</a> ";
}else{
echo "<- Anterior";
}
echo "|";
for ($pi; $pi < $pf; $pi++) {
// Se número da página for menor que total de páginas
if ($pi <= $tp) {
if ($pc == $pi) {
// se página atual for igual a página selecionada
if ($pi > "0") {
echo "[" . $pi . "]&nbsp;";
}
} else {
// se for diferente, aparece o link para a página
if ($pi > "0") {
echo "<a href='?name=icashop&pagina=" . $pi . "'>[" . $pi . "]</a>&nbsp;";
}

}
}
}
echo "|";
if ($pc < $tp) {
echo "<a href='?name=icashop&pagina=$proximo'>Próxima -></a>";
}else{
echo "Próxima ->";
}

?>
04/02/2005 9:50am (~12 anos atrás)

Bom galera.. creio que teve algum erro no meu artigo, me basiei a partir do DGNavBar pra fazer a segunda parte(numeracao)... e como faz tempo ki postei esse artigo... nao lembro qual foi a logika ki usei... vou ver si assim ki der um tempo.. eu posto o código certo aki.. ok? valew
19/02/2003 9:56pm (~14 anos atrás)

eh o anterior e proximo rolam mas a numeração num aparece naum... mas tah 10 o artigo Diego
14/02/2003 9:49am (~14 anos atrás)

Faiz tempu k postei essi artigu.. ai num mi lembru mtu bem da logica direitinhu naum.. mas eli soh saiu agora.. pq eu num sei.. =[

vo ver si tem algu erradu
07/02/2003 11:19am (~14 anos atrás)

Os links "anterior" e "próximo" funcionam mas os intervalos nem sequer aparecem.
Acho que são as variáveis $flag1 e $intervalo, já que não estáo definidas.
04/02/2003 10:12am (~14 anos atrás)

Os links "anterior" e "próximo" funcionam mas os intervalos nem sequer aparecem.
Acho que são as variáveis $flag1 e $intervalo, já que não estáo definidas.
04/02/2003 10:12am (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)