Jump to content


Photo

Código De Paginação


  • Faça o login para participar
10 replies to this topic

#1 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 26/01/2006, 19:02

Olá pessoas!!!

Peguei esse código aqui no Forum, mas só que não aparece os numeros das paginas.

Tentei eu mesmo encontra-las :P mas não consegui :P

$busca = "SELECT * FROM wss_empresas";
$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 = ceil($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_fantasia"];
    echo "Nome: $nome<br>";
}

// agora vamos criar os botões "Anterior e próximo"
$anterior = $pc -1;
$proximo = $pc +1;
$pi = $flag1 * $intervalo;
if ($pi == "0") {
    $pi = "1";
}
$pf = $pi + $intervalo - 1;
if ($pc > 1) {
    echo " <a href='?pagina=$anterior'><- Anterior</a> ";
}
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
            echo "<b>[" . $pi . "]</b>&nbsp;";
        } else {
            // se for diferente, aparece o link para a página
            echo "<a href='?pagina=" . $pi . "'>" . $pi . "</a>&nbsp;";
        }
    }
}
echo "|";
if ($pc < $tp) {
    echo " <a href='?pagina=$proximo'>Próxima -></a>";
}

Se vocês puderem me ajudar ;)

desce já agradeço!!!

Walison(GENNF)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#2 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 26/01/2006, 20:13

walison

$reg_p_pag = "10";
$link_p_pag = "5";
$pag = $_GET['pag'];

o que eu uso é quase igual ao seu, mas o meu tem tudo isso acima.
será que não é isso?

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
           echo "<b>[" . $pi . "]</b>&nbsp;";
       } else {
           // se for diferente, aparece o link para a página
           echo "<a href='?pagina=" . $pi . "'>" . $pi . "</a>&nbsp;";
       }
   }
}

ai pega os numeros das pags e exibe.

#3 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 27/01/2006, 06:48

o problema esta nesta variavel $pf ( dentro do FOR )
que ao meu ver no script não existe em nenhum canto... assim troque ela por $tp

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
          echo "<b>[" . $pi . "]</b>&nbsp;";
      } else {
          // se for diferente, aparece o link para a página
          echo "<a href='?pagina=" . $pi . "'>" . $pi . "</a>&nbsp;";
      }
  }
}


está em negrito no script acima...

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#4 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 27/01/2006, 08:47

Olá Pessoas!!!

A Ajuda acima funcionou. Muito obrigado Goku!!!

Só que agora tem um outro probleminha. O número total de dados cadastrados em meu banco de dados da um total de 15 paginas sendo que a pagina 15 tem apenas 2 resultados. Mas só que ela não é numerada nos números de paginas, apenas aparece o link próxima mas só que os números vão apenas até o número 14.

LINK DA PAGINA (CLIQUE AQUI PRA VER A PAGINA FUNCIONANDO)

Será que vcs podem me dar mais essa mãozinha???

Desde já agradeço!!!

Walison(GENNF)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#5 gonacts

gonacts

    "Agora eu tb tenho um Tux..." =D

  • Usuários
  • 1030 posts
  • Sexo:Não informado

Posted 27/01/2006, 08:51

for ($pi; $pi <= $pf; $pi++) {


coloke esse igual ai
"Ninguém é tão inteligente que não possa aprender e ninguém é tão burro que não possa ensinar.."
"As dúvidas engrandecem nossa sabedoria, mas não basta somente tirá-las, temos que entendê-las"

#6 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 27/01/2006, 10:01

Óla , eu reduzi o seu script , pq esse aê ficou meio q grandinho :P

<?php

// Conexao com o banco de dados
mysql_connect('HOST','USUARIO','SENHA');
mysql_select_db('BANCO');

// Informe o nome da tabela e a quantidade de de registros
$SQl = "SELECT * FROM nome_da_tabela";
$TReg = 10;

// Daqui pra baixo não altere em nada
// aqui ele verifica se a a variavel vinda da URL ( PGn ) se existe ou não ou se esta em branco ou não, se não existir ou se existir e estivem em branco irá definir 0
// caso contrario irá pegar o VALOR da variavel ( PGn ) e irá setar !
$_GET['PGn']  = (!isset($_GET['PGn']) || !empty($_GET['PGn']))?0:$_GET['PGn']; 

// Aqui irá criar o INICIO para fazer a consulta no banco de dados, assim irá multiplicar o número da pagina com o total de registro definido por vc no inicio
$Ini = $_GET['PGn'] * $TReg;

// aqui irá fazer a primeira consulta no banco de dados com função de pegar o total de registros!
$Sql = mysql_query($SQl);

// aqui irá dividir o total de registros encontrados no banco de dados com o total de registros definidor por vc e irá deixar inteiro acima
$PGs = ceil(mysql_num_rows($Sql) / $TReg);

/*
Altere o nome do CAMPO que vc queria ORDENAR..
se for campo q contém NUMERO coloque o NOME DO CAMPO + DESC ( o DESC irá ordernar de BAIXO PRA CIMA )
se for campo q contém LETRAS coloque o NOME DO CAMPO + ASC ( o ASC irá deixar em ORDER ALFABETICA )
*/

// a query abaixo pega todos os registro, ORDENA eles do jeito que vc especificar e irá dar inicio a consulta de valor até o total de registros q vc quer q aparece por página
$SQL = mysql_query("$SQl ORDER BY nome_do_campo ASC LIMIT $Ini,$TReg");

// Exibe os REGISTROS!
// faz um loop pegando todos os registros do banco de dados e exibe
while ($RRr = mysql_fetch_array($SQL)) {
  echo "Nome: {$RRr['nome']}<br>";
}


// Link Anterior
echo ($_GET['PGn']>0)?"<a href='?PGn=".($_GET['PGn']-1)."'><- Anterior</a>&nbsp;|&nbsp;":'';

// Números das páginas!
for ($X = 1; $X < $PGs; $X++) {
echo ($_GET['PGn'] == $X) ? "<b>[{$X}]</b>&nbsp;":"<a href='?PGn={$X}'>".$X."</a>&nbsp;";
}

// Link próximo
echo ($_GET['PGn']<($PGs-1))?"&nbsp;|&nbsp;<a href='?PGn=".($_GET['PGn']+1)."'>Próxima -></a>":'';

?>


qualquer dúvida e só postar!

-------------------------------------
Editando
agora que vi que o meu q ficou grande :rolleyes:
tbm a quantidade de comentários que possue ! fala serio :lol:

T+

Edição feita por: Goku Jr, 27/01/2006, 10:03.

-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#7 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 27/01/2006, 11:39

Ae Goku,

Valeu mesmo cara, brigadão.

Mas eu ja consegui aqui com aquele mesmo com a sua ajuda e depois com a ajuda gonacts.

Bom, como vcs estão com muita boa vontade e ainda não estou em casa pra eu continuar mexendo nessa pagina gostaria que vcs me ajudassem com uma outra coisinha, tipo:

Fazer com que o numero das paginas sejam apresentadas apenas 10.

Exemplo:

1 2 3 4 5 6 7 8 9 10

2 3 4 5 6 7 8 9 10 11

3 4 5 6 7 8 9 10 11 12

E assim por diante.

Será que vcs podem me dar mais essa mão ai???

Tive que voltar pra editar :P , mas foi só pra lembrar que é no código que eu passei la em cima. :P. Esse novo ai do GOKU vou pegar pra estudar ;). Valeu Galera.

Mas Goku, se tirar aquele monte de comentários vai ficar bem pequeno mesmo :P, mas pra mim que ainda estou no início ficou ótimo pra aprender. :P

Desde já mais uma vez agradeço a ajuda de vcs.

Um grande abraço ;)

Walison(GENNF)

Edição feita por: gennf, 27/01/2006, 11:47.

Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#8 gonacts

gonacts

    "Agora eu tb tenho um Tux..." =D

  • Usuários
  • 1030 posts
  • Sexo:Não informado

Posted 27/01/2006, 11:55

pra te falar a verdade nunca fiz assim nao.... :blink:

mas até q é melhor msm...pois evita de ficar uma penka de registros ali embaixo dps...


tipo a logica seria...

vc estar verificando no seu for..no for vc manda listar 10 e no proximo vc listaria a partir da 11...acho q seria melhor assim..tipo

1 2 3 4 5 6 7 8 9 10 ->proxima
11 12 13 14 15 16 17 18 19 20 .....

ai ali emcima na sua querystring, vc passa tb um numero "base"...para na hr q montar o seu for vc fazeria multiplicacao....

Para exibir a pagina q ele clicar..
www.site.com.br/exemplo.php?pagina=3

Qnd clicar no PROXIMO
www.site.com.br/exemplo.php?pagina=3&base=2

ai vc pegaria essa (base*10)+1 = 21
entao mostraria da 21 a 31....

tendeu?! :unsure:
"Ninguém é tão inteligente que não possa aprender e ninguém é tão burro que não possa ensinar.."
"As dúvidas engrandecem nossa sabedoria, mas não basta somente tirá-las, temos que entendê-las"

#9 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 27/01/2006, 15:20

Olá gonacts!!!

Obrigado pela resposta cara, mas não é bem o que eu queria.

O que eu queria mesmo era um semelhante ao daqui do forum onde vai aparecendo as paginas de cinco em cinco.

Se vc clicar no link 5 vc vai ver da seguinte forma:

« Primeira ... 3 4 [5] 6 7 ... Última »

Eu não quero bem desse jeito, o que eu queria na verdade é que fosse assim:

« Anterior ... 3 4 [5] 6 7 ... Próximo »

Acho esse modo bem legal. Tipo, no site que estou montando se você buscar por uma certa palavra vão aparecer o link de 29 paginas, imagina o quanto esta ficando feio :P

Por isso estou a procura desse modo ai.

Se alguem puder me ajudar!!!

Espero uma ajuda suas.

Um grande abraço ;)

Walison(GENNF)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#10 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 27/01/2006, 15:24

então seria o que o gonacts disse , ai você joga o valor base ( que o gonacts disse ) no valor inicial do FOR

uai eu to tendo aqui uma ideia de como fazer :P
vou tentar fazer e deixar explicado ai eu adiciono aqui

T+

------------------------------------------------------------------------------------------------------
EDITANDO

Ops nem vi que o última resposta era minha :unsure:

Script:

<?php

$Con = mysql_connect("host","user","senha");
mysql_select_db("banco");

$TReg = 15; #- quantidade de Registros por páginas
$TLink = 2; #- Quantidade de LINKs

$SQl = mysql_query("SELECT * FROM tabela");
$Ini = ((!isset($_GET['PG'])) ? 0 : $_GET['PG']) * $TReg;
$PGs = ceil(mysql_num_rows($SQl) / $TReg);
$Sql = mysql_query("SELECT * FROM tabela LIMIT $Ini , $TReg");

while ( $RRr = mysql_fetch_array($Sql) ) {
echo sprintf('%02d',$RRr['id'])."&nbsp;-&nbsp;Registro : {$RRr['campo']}<br>";
}

echo "<= <a href='?PG=".(($_GET['PG'] > 0) ? ($_GET['PG'] - 1) : '?')."'>Voltar</a>";

echo "&nbsp;|&nbsp;";

echo "<a href='?PG=0'>Primeira</a>";

echo "&nbsp;|&nbsp;";

for($X = ($_GET['PG'] - ($TLink - 1)); $X < ($_GET['PG'] + $TLink); $X++) {
echo ($X >= 0 && $X < $PGs) ? $_GET['PG'] == $X ? "<b>[".sprintf('%02d',($X+1))."]</b> " : "<a href='?PG={$X}'>".sprintf('%02d',($X+1))."</a> ":'';
}

echo "&nbsp;|&nbsp;";

echo "<a href='?PG=".($PGs-1)."'>Última</a>";

echo "&nbsp;|&nbsp;";

echo "<a href='?PG=".(($_GET['PG'] < ($PGs - 1)) ? ($_GET['PG'] + 1) : $_GET['PG'])."'>Próxima</a> =>";

?>


PS: agradeço o BALALA por ter me ajudado (y) BIGADUUUU !!!
Link: http://forum.wmonlin...howtopic=140734

Dúvida e só falar !

Edição feita por: Goku Jr, 01/02/2006, 16:33.

-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#11 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 01/02/2006, 16:27

Desculpe não vi que a última resposta era minha :(

T+

Edição feita por: Goku Jr, 01/02/2006, 16:29.

-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq