Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pablo Gates

Paginação PHP, MYSQL e AJAX

Recommended Posts

Boa tarde galera, eu tive muitos problemas para fazer uma paginação sem refresh no meu último projeto e finalmente consegui resolver ^^

vou colaborar com o forum, mostrando como eu consegui resolver isto.

 

encontrei o script na internet, e fiz algumas alterações

créditos: Software livre Acre

 

Me desculpem é o primeiro post, colaborando espero ter postado de forma correta...

 

chega de papo e vamos lá:

 

index.php

<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Paginação sem refresh</title>
<script type="text/javascript" src="script.js"></script>
</head>

<body>
<?php
	//chamando a função para conectar ao banco de dados (Sua conexão com o db mysql)
	Conectar();

	//select com o contador para descobrir quantos resultados a tabela tem
	$result_p = mysql_query("select count(*) as count FROM sua_tabela");
	$row_p = mysql_fetch_array($result_p);

	//quantos resultados aparecerão por página
	$quant_resul = 24;
	//página em que sua paginação começara
	$pagina = 1;

	//calcula a quantidade de paginas
	$paginas = ceil($row_p['count'] / $quant_resul);

	//select com os valores limitados
	$result = mysql_query("select *FROM obras limit 0 , " . $quant_resul);
?>


<div id="dados"><!-- aqui é mostrada a paginação -->
     <ul>
            <?php
            	while ($row = mysql_fetch_object($result)) {//exemplo de laço
                echo'<li>';
			echo"<img src='uploads/images/".$row->miniatura."' />";
		echo'</li>';
            };

            //incluindo a página de índice ela é responsável por imprimir os valores das páginas e seus link's.
            include 'indice.php';
            ?>
    </ul>
       </div>
</body>
</html>

 

indice.php

<?php
echo "<div id='paginacao'>";
   //Verifica se está na primeira página, se não estiver exibe o botão anterior e o numero da página inicial
   //Se não ele desativa o botão de anterior e seta a primeira página
   if ($pagina > 1) {
echo ' <a class="pg" href="javascript:paginar(' . ($pagina - 2) . ',' . $paginas . ',' . $quant_resul . ')">« anterior</a> ';
   echo ' <a class="pg" href="javascript:paginar(0,' . $paginas . ',' . $quant_resul . ')">1</a> ';
   } else {
       echo "<font  color=#CCCCCC>« anterior</font>";
       echo " <span class='pgoff'>1</span> ";
   }

   //mostrando as demais páginas
   for ($i = $pagina; $i <= ($pagina + 1); $i++) {
       //imprindo o botão da página antes da atual, ela necessita ser diferente da primeira página
       if (($i - 1) == ($pagina - 1) and ($i - 1) != 1 and ($i != 1)) {
           echo '... <a class="pg" href="javascript:paginar(' . ($i - 2) . ',' . $paginas . ',' . $quant_resul . ')">' . ($i - 1) . '</a> ';
       }
       //verificando se estamos na primeira página ou na ultima se estiver ele não imprime nada.
       if ($i == 1 or $i == $paginas or $i == $paginas) {
           echo"";
       }
       //se a página for igual a página atual ele seta o indicador na página e desativa o botão
       elseif ($pagina == $i) {
           echo " <span class='pgoff'>$i</span> ";
       }
       //imprimindo a página após a página atual,
       elseif ($i < $pagina) {
           echo ' <a class="pg" href="javascript:paginar(' . $i - 1 . ',' . $paginas . ',' . $quant_resul . ')">' . $i . '</a> ';
       }
       if (($i + 1) == ($pagina + 1) and ($i + 1) != $paginas and $i != $paginas) {
           echo ' <a class="pg" href="javascript:paginar(' . ($i) . ',' . $paginas . ',' . $quant_resul . ')">' . ($i + 1) . '</a> ...';
       }
   }
   //verificando novamente se existe apenas a primeira página, se so existir ela é impresso o botão proximo desativado
   if ($paginas == 1) {
       echo "";
       echo "<font  color=#CCCCCC>próximo »</font>";
   }
   //verificando se a página atual é diferente  da ultima página se for diferente ele imprime a ultima página e ativa o botão próximo
   elseif ($pagina < $paginas) {

       echo ' <a class="pg"  href="javascript:paginar(' . ($paginas - 1) . ',' . $paginas . ',' . $quant_resul . ')">' . $paginas . '</a>';
       echo ' <a class="pg" href="javascript:paginar(' . ($pagina) . ',' . $paginas . ',' . $quant_resul . ')"><b>próximo »</b></a> ';
   }
   // se o sistema estiver na ultima página o indicador é setado na página e o botão próximo é desativado
   else {
       echo " <span class='pgoff'>" . $paginas . "</span> ";
       echo "<font  color=#CCCCCC>próximo »</font>";
   }
echo "</div>";
?>

 

op.php

<?php
// recebe conteudo da pagina anterior por post
$pagina = $_POST['pagina'];
$quant_resul = $_POST['quant_result'];
$paginas = $_POST['paginas'];
// calculando onde o limit deve começar no Select
$start = $pagina * $quant_resul;
$pagina++;

//conecta com o banco (Sua conexão com o banco, no meu caso estou chamando uma função)
Conectar();

//select com os limites definidos (inicio e quantidade de resultados)
$result = mysql_query("SELECT * FROM sua_tabela limit " . $start . " , " . $quant_resul);

//impresão dos valores que serão trocados dentro da DIV dados
   echo '<ul>';
   while ($row = mysql_fetch_object($result)) {
       echo'<li>';
		echo"<img src='uploads/images/".$row->miniatura."' />";//neste caso como podem ver acima eu escolho a linha($row) pegando a coluna miniatura
echo'</li>';
   };
   echo '</ul>';

   //incluindo a página de índice ela é responsável por imprimir os valores das páginas e seus link's.
include 'indice.php';
?>

 

script.js

 

este é o script ajax, que faz carregar a página sem efetuar o refresh/reload a imagem "carregando.gif" vocês podem utilizar qualquer uma que seja da sua preferência,

que será mostrada enquanto a paginação estiver carregando os resultados

 

function paginar(pagina,paginas, quant_result ){
 	$("#dados").html("<img src='images/carregando.gif' class='carregando' />");
   $.post("op.php", {pagina:pagina, paginas:paginas, quant_result:quant_result}, function(data){$("#dados").html(data);}, "html") ; 
};

Compartilhar este post


Link para o post
Compartilhar em outros sites

pablo legal sua atitude.. mas posta esse seu script no Laboratório de Scripts (PHP).. que é um lugar no forum para essas finalidades..

 

Lá se você precisar tem vários scripts bacanas para sem utilizados.. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

pablo legal sua atitude.. mas posta esse seu script no Laboratório de Scripts (PHP).. que é um lugar no forum para essas finalidades..

 

Lá se você precisar tem vários scripts bacanas para sem utilizados.. :thumbsup:

 

É melhor eu esperar um moderador mover ou coloco lá diretamente ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.