Ir para conteúdo
Fórum Script Brasil
  • 0

Paginação...


amos

Pergunta

E ae galera? Jóia?

Tipo assim...

Eu tenho um script de paginação aki...

Que pega os dados do mysql...

Até ai tranquilo, mas dedpois q eu fui perceber q ele so mostrava o numero de paginas quando o numero de dados era compativel com o numero d paginas... Ficou meio confuso ne? Tcho explicar melhor....

Eu coloquei ele para paginar os resultados d 25 por pagina? Ai c eu tenho 43 dados por exemplo... Ele num mostra q tem duas paginas... e sim 1...

Ou seja... eu tenho um link de pagina faltando...

Vou colocar o script aqui pra vocês verem...

<?

 

  function getmicrotime(){

  list($sec, $usec) = explode(" ",microtime());

  return ($sec + $usec);

  }

  $time_start = getmicrotime();

//#####################################################################

  $arquivo = "seealliframe.php";

          $banco = "fotossal";

  $endereco = "localhost";

  $usuário = "root";

  $password = ""; 

  $table = "fotos"; 

  $maxpag = 25;      $maxlnk = 100; 

$id = $_GET['id'];

  if ($id == ''){$param = 0;} else {

  $temp = $id;

  $passo1 = $temp - 1;

  $passo2 = $passo1*$maxpag;

  $param = $passo2;}

  $res = mysql_connect('localhost','root','');

  $sql = "select * from $table";

  $sql_01 = "select * from $table  limit $param,$maxpag";

  $res1 = mysql_db_query($banco, $sql, $res) or die("Erro no result 1");

  $res2 = mysql_db_query($banco, $sql_01, $res) or die("Erro no result 2");

    $totreg = mysql_num_rows($res1);

  $totreg_01 = mysql_num_rows($res2);

  $results_tot = $totreg;

  $results_parc = $totreg_01;

  $result_div = $results_tot/$maxpag;

  $n_inteiro = (int)$result_div;

  if ($n_inteiro < $result_div) {$n_paginas = 1;}

  else {$n_paginas = $result_div;}

  $pg_atual = $param/$maxpag+1;

  $reg_inicial = $param + 1;

  $pg_anterior = $pg_atual - 1;

  $pg_proxima = $pg_atual + 1;

  $time_end = getmicrotime();

  $time = $time_end - $time_start; ?><html>

<head>

<style type=text/css">

<!--

.forms {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 9px;

color: #000000;

background-color: #F4F4F4;

border: 1px solid #333333;

}

-->

</style>

<style type="text/css">

<!--

.textos {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 9px;

color: #000000;

border: 1px solid #CCCCCC;

}

-->

<STYLE type="text/css">

a:active { font-family: Verdana; font-size: 10px; color: #333333; text-decoration:none;}

a:hover { font-family: Verdana; text-decoration:bold; font-size: 10px; color: #FF9900;}

a:link { font-family: Verdana; font-size: 10px; color: #333333; text-decoration:none;}

a:visited { font-family: Verdana; font-size: 10px; color: #333333; text-decoration:none;}

}

.bordalateraltudo {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 9px;

color: #000000;

border-top-width: 1px;

border-right-width: 1px;

border-bottom-width: 1px;

border-left-width: 1px;

border-top-style: none;

border-right-style: solid;

border-bottom-style: solid;

border-left-style: none;

border-top-color: #CCCCCC;

border-right-color: #CCCCCC;

border-bottom-color: #CCCCCC;

border-left-color: #CCCCCC;

}

body {

margin-left: 0px;

margin-top: 0px;

margin-right: 0px;

margin-bottom: 0px;

}

</style>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<div align="left">

<table width="431" border="0" cellpadding="0" cellspacing="0">

  <!--DWLayoutTable-->

  <tr>

    <td width="431" height="365" valign="top">

      <? while($resultado = mysql_fetch_array($res2)) { $contador ++;?>

      <?

// ################## ######################?>

      <p style="word-spacing: 0; margin: 0" align="left"> <font color="#000000" size="1" face="Verdana"><? echo $resultado["id];?> - <? echo $resultado["nome"];?></font></p>      <?

// ############################ ###############################?>

      <? }$reg_final = $param + $contador;?>    <div align="center">

        <table border="0" cellspacing="0" width="147">

    <tr>

      <td width="63">

        <p align="left"><font face="Verdana" size="1">

   <? if ($id > 1) {?><a href="?id=<? echo $pg_anterior;?>" class="estilos"><b>&lt;&lt;Anterior </font><? }?></a></td>

  <? if ($temp >= $maxlnk){

  if ($n_paginas > $maxlnk) {$n_maxlnk = $temp + 4;

  $maxlnk = $n_maxlnk;

  $n_start = $temp - 6;

  $lnk_impressos = $n_start;}}

  while(($lnk_impressos < $n_paginas) and ($lnk_impressos < $maxlnk))

  { $lnk_impressos ++;?>

      <center>

      <td width="7">

        <p align="center"><font face="Verdana" size="1">

   <? if ($pg_atual != $lnk_impressos){echo "<a href=\"?id=$lnk_impressos\" class=\"estilos\">";}

  if ($pg_atual == $lnk_impressos){echo "$lnk_impressos";} else {echo "$lnk_impressos";}?></a></b></td><? }?>

   </font></td>

      </center>

      <td width="200">

        <p align="left"><font face="Verdana" size="1">

 

   <? if ($reg_final < $results_tot) {?><a href="?id=<? echo $pg_proxima;?>" class="estilos"><b> Próxima&gt;&gt;</b></font></a></td><? }?>

    </tr>

  </table>

    </div>      <p style="word-spacing: 0; margin: 0">&nbsp;</p></td>

  </tr>

  <tr>

    <td height="3"></td>

  </tr>

</table>

</body>

</html>

E ae? c alguém puder me ajudar... eu fico milhoes de vezes GRATO...

biggrin.giftongue.gif

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Para melhor explicar como paginar registros, ainda uma dúvida para muitas pessoas, aí vai um artigo. 

Gostaria de abordar algumas questões iniciais.

A condição "LIMIT inicio,termino" do MySQL, funciona da seguinte maneira:

SELECT * FROM tabela LIMIT 0,5

Acima o MySQL vai capturar os registros da linha 0 e vai avansar seu cursor 5 linhas, o que resultará na captura das linhas 0, 1, 2, 3 e 4.

SELECT * FROM tabela LIMIT 5,5

Acima o MySQL vai capturar os registros da linha 5 e vai avansar seu cursor 5 linhas, o que resultará na captura das linhas 5, 6, 7, 8 e 9.

Entendendo:

"LIMIT inicio,termino", na variável 'INICIO' eu só preciso informar o ponto de partida, e na variável 'TERMINO' eu só preciso informar o número de linhas que quero avançar a partir de 'INICIO'.

Agora vamos começar:

1º - Precisamos informar quantas linhas/registros do banco queremos mostrar, sendo assim;:

<?

$pag_views = 10;

?>

2º - Agora vamos a um pequeno processo para evitar a página 0, isso é para que visualmente não fique confusa uma interpretação do número da página:

<?

If (!$pagina) {

$pagina = 1;

} else {

$pagina = $pagina;

}

?>

3º - Vamos calcular o valor da variável $inicio, essa variável é quem vai dizer onde o MySQL vai começar a capturar linhas;

<?

$mat = $pagina -1; //ASSIM INICIAREMOS DA LINHA ZERO DO BANCO

$inicio = $mat * $pág_views;

?>

Entendendo: Esse calculo é feito em 2 partes.

Vamos dizer que você está na 1ª página, sendo assim, $pagina = 1;

Para calcular $início devemos fazer o primeiro calculo,

$mat = $pagina -1

$mat = 1 -1

$mat = 0

Sendo assim,

$inicio = $mat * $pág_views

$inicio = 0 * 10

$inicio = 0

4º - Seleção de dados

<?

$sql = "SELECT * FROM tabela";

$query = mysql_query($sql);

?>

5º - Limitando a seleção

<?

$limita = "$sql LIMIT $inicio,$pág_views";

$executa = mysql_query($limita);

?>

Aceitando o exemplo acima do calculo da variável $inicio, começaremos da linha 0 e vamos avançar o cursor até $pag_views depois de $inicio.

Resultará nas linhas 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.

6º - Obtendo o número de linhas afetadas pela consulta, isso será útil para calcularmos quantas páginas terão esta consulta.

<?

$linhas = mysql_num_rows($query);

?>

Notem que executei $query, que seleciona todos os registros desta condição.

7º - Calculando o total de páginas

<?

$paginas = $linhas / $pág_views;

?>

Entendendo:

Supondo que $query resultou em 7.570

$paginas = $linhas / $pág_views

$paginas = 7570 / 10

$paginas = 757

Portanto teremos 757 páginas

8º - Criando os valores para o botão de voltar e para o botão de próxima página

<?

$volta = $pagina -1;

$próxima = $pagina +1;

?>

9º - Mostrando o resultado limitado

<?

while ($dado = mysql_fetch_array($executa)) {

echo $dado[nome_do_campo];

}

?>

10º - Exibindo o link para voltar uma página

<?

if ($volta>0) echo "<a href=?pagina=$volta>Volta</a>";

?>

Entendendo:

Vamos dizer que estamos na página 1, portanto $volta = 0, se volta for maior que 0, mostra o botão VOLTAR

11º - Exibindo o botão para cada uma das páginas

<?

for ($i = 0; $i <= $paginas; $i++){ //REPETE ATÉ QUE SE ACABEM AS PAGINAS

$pag = $i +1; //EVITA A PÁGINA

ZERO echo "<a href=?pagina=$pag>$pág</a>"; //MOSTRA O BOTÃO PARA A PÁGINA

}

?>

12º - Exibindo o botão para avançar uma página se ela existir.

<?

If ($pagina<$paginas) echo "<a href=?pagina=$proxima>Proxima</a>";

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Para melhor explicar como paginar registros, ainda uma dúvida para muitas pessoas, aí vai um artigo. 

Gostaria de abordar algumas questões iniciais.

A condição "LIMIT inicio,termino" do MySQL, funciona da seguinte maneira:

SELECT * FROM tabela LIMIT 0,5

Acima o MySQL vai capturar os registros da linha 0 e vai avansar seu cursor 5 linhas, o que resultará na captura das linhas 0, 1, 2, 3 e 4.

SELECT * FROM tabela LIMIT 5,5

Acima o MySQL vai capturar os registros da linha 5 e vai avansar seu cursor 5 linhas, o que resultará na captura das linhas 5, 6, 7, 8 e 9.

Entendendo:

"LIMIT inicio,termino", na variável 'INICIO' eu só preciso informar o ponto de partida, e na variável 'TERMINO' eu só preciso informar o número de linhas que quero avançar a partir de 'INICIO'.

Agora vamos começar:

1º - Precisamos informar quantas linhas/registros do banco queremos mostrar, sendo assim;:

<?

$pag_views = 10;

?>

2º - Agora vamos a um pequeno processo para evitar a página 0, isso é para que visualmente não fique confusa uma interpretação do número da página:

<?

If (!$pagina) {

$pagina = 1;

} else {

$pagina = $pagina;

}

?>

3º - Vamos calcular o valor da variável $inicio, essa variável é quem vai dizer onde o MySQL vai começar a capturar linhas;

<?

$mat = $pagina -1; //ASSIM INICIAREMOS DA LINHA ZERO DO BANCO

$inicio = $mat * $pág_views;

?>

Entendendo: Esse calculo é feito em 2 partes.

Vamos dizer que você está na 1ª página, sendo assim, $pagina = 1;

Para calcular $início devemos fazer o primeiro calculo,

$mat = $pagina -1

$mat = 1 -1

$mat = 0

Sendo assim,

$inicio = $mat * $pág_views

$inicio = 0 * 10

$inicio = 0

4º - Seleção de dados

<?

$sql = "SELECT * FROM tabela";

$query = mysql_query($sql);

?>

5º - Limitando a seleção

<?

$limita = "$sql LIMIT $inicio,$pág_views";

$executa = mysql_query($limita);

?>

Aceitando o exemplo acima do calculo da variável $inicio, começaremos da linha 0 e vamos avançar o cursor até $pag_views depois de $inicio.

Resultará nas linhas 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.

6º - Obtendo o número de linhas afetadas pela consulta, isso será útil para calcularmos quantas páginas terão esta consulta.

<?

$linhas = mysql_num_rows($query);

?>

Notem que executei $query, que seleciona todos os registros desta condição.

7º - Calculando o total de páginas

<?

$paginas = $linhas / $pág_views;

?>

Entendendo:

Supondo que $query resultou em 7.570

$paginas = $linhas / $pág_views

$paginas = 7570 / 10

$paginas = 757

Portanto teremos 757 páginas

8º - Criando os valores para o botão de voltar e para o botão de próxima página

<?

$volta = $pagina -1;

$próxima = $pagina +1;

?>

9º - Mostrando o resultado limitado

<?

while ($dado = mysql_fetch_array($executa)) {

echo $dado[nome_do_campo];

}

?>

10º - Exibindo o link para voltar uma página

<?

if ($volta>0) echo "<a href=?pagina=$volta>Volta</a>";

?>

Entendendo:

Vamos dizer que estamos na página 1, portanto $volta = 0, se volta for maior que 0, mostra o botão VOLTAR

11º - Exibindo o botão para cada uma das páginas

<?

for ($i = 0; $i <= $paginas; $i++){ //REPETE ATÉ QUE SE ACABEM AS PAGINAS

$pag = $i +1; //EVITA A PÁGINA

ZERO echo "<a href=?pagina=$pag>$pág</a>"; //MOSTRA O BOTÃO PARA A PÁGINA

}

?>

12º - Exibindo o botão para avançar uma página se ela existir.

<?

If ($pagina<$paginas) echo "<a href=?pagina=$proxima>Proxima</a>";

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Pows legal....

mas não e esse o problema...

o problema é q se eu não tenho os valores completos para as paginas por exemplo...

Eu tenho 30 resultados por pagina...

Se eu tiver 35 ele mostra q tem so uma pagina e não duas... o q seria o certo...

entenderam?

Poxa to quebrando a cabeça aki!!

mas mesmo assim num to conseguindo....

biggrin.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...