Ir para conteúdo

POWERED BY:

Arquivado

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

fsales_123

Paginação

Recommended Posts

bom dia, estou com problema na paginação, ela está mostrando todas as paginas exemplo:

 

123456789101112

 

eu queria que mostra-se 1234 ai a pessoa clica-se no 4 ai mostra 5678 e assim vai.. como faço isso?

 

codigo abaixo:

 <?php
$pagina = $_GET['pag'];
if(!$pagina){
  $pagina = 1;
}
// Defina aqui a quantidade de resultados a serem exibidos em cada página
$limite = 5;	

// FAÇA UMA BUSCA SIMPLES NA SUA TABELA
if(empty($_GET["categoria"])){
	$cont = mysql_query("SELECT * FROM anuncios");
}else{
	$cont = mysql_query("SELECT * FROM anuncios WHERE categoria = '".strip_tags($_GET["categoria"])."'");

}
$total_registros = mysql_num_rows($cont); // Aqui você conta o total de registros da tabela
$total_paginas = ceil($total_registros / $limite); // Aqui divide o total de registros pelo limite de registros a serem exibidos para obter o total de páginas a serem exibidas



//Abaixo você vai fazer a equação que deverá 
$inicio = ($pagina * $limite) - $limite;


// AQUI VAI O SEU CÓDIGO
if(@$_POST){
			$sql = mysql_query("SELECT * FROM anuncios WHERE descricao LIKE '%".$_POST["query"]."%' ORDER BY ID DESC LIMIT $inicio,$limite");
	}else{
 
		if(empty($_GET["categoria"])){
			$sql = mysql_query("SELECT * FROM anuncios WHERE status = 'Ativo' AND ID ORDER BY RAND() LIMIT $inicio,$limite");
		}else{
			$sql = mysql_query("SELECT * FROM anuncios WHERE categoria = '".strip_tags($_GET["categoria"])."' AND status = 'Ativo' ORDER BY nome ASC LIMIT $inicio,$limite");
		}
	}
	
			if(mysql_num_rows($sql) == false){
				echo '<div align="center"><br /><strong>Nenhum anúncio encontrado.</strong><br /></div>';
				
			}else{
				
				while($ln = mysql_fetch_object($sql)){
					
	?>

<table width="100%" height="50" border="0">
        <tr>
          <td width="2%" height="110" align="center" valign="middle"><a href="javascript: ver_anuncio(<?php echo $ln->ID; ?>);" style="text-decoration:none;"><img style="border:3px solid #CCC;" src="uploads/<?php echo $ln->thumb; ?>" width="140" height="90" /></a></td>
          <td width="98%" align="left" valign="top">
          <div align="left" style="margin:5px; color:#333; font-size:11px;">Nome da Empresa: <strong style="text-transform:uppercase;"><?php echo $ln->empresa; ?></strong></div>
          <div align="left" style="margin:5px; color:#333; font-size:11px;">Telefone1: <strong><?php echo $ln->telefone; ?></strong>  Tel-2/Celular:<strong><?php echo $ln->telefone2; ?></strong> </div>
            <div align="left" style="margin:5px; color:#333; font-size:11px;">Cidade: <strong><?php echo $ln->cidade; ?></strong></div>
             <div align="left" style="margin:5px; color:#333; font-size:11px;"><?php echo truncate(strip_tags($ln->descricao), 100); ?>...</div>
            <div align="left" style="margin-left:5px; margin-top:10px;"><a href="javascript: ver_anuncio(<?php echo $ln->ID; ?>);" class=" anuncio" style="text-decoration:none;">Ver anúncio</a></div>
          </td>
        </tr>
      </table></p>
      
      <?php
			}
			?>
      <?php
				}
				?>
                
               <?php // Abaixo, um loop para exibir o link para as próximas páginas
for($i=1; $i <= $total_paginas; $i++)
{
    echo "<a href='index.php?pag=$i'>".$i."</a> ";
}

echo "<hr width='100%'>"."Você está atualmente na página: ".$pagina."<hr width='100%'>";
?>

    </td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu utilizo a seguinte estrutura...

<?php
	$anterior = $pg -1;
	$proximo = $pg +1;
	
	if ($total_paginas > 1) {
		echo "<nav>";
		echo "	<ul class='pagination pagination-sm'>";
		
		if ($anterior > 0) {
			echo "<li>";
			echo "	<a href='?pg=".$anterior."' aria-label='Previous'>";
			echo "		<span aria-hidden='true'>«</span>";
			echo "	</a>";
			echo "</li>";
		} else {
			echo "<li class='disabled'>";
			echo "	<span aria-hidden='true'>«</span>";
			echo "</li>";
		}
		
		
		for ($i=1;$i<=$total_paginas;$i++) {
			if ($i < ($pg-4) AND $i == 1) {
				echo "<li><a href='?pg=".$i."'>".$i."</a></li>";
				echo "<li><a>...</a></li>";
			}
			
			if ($i >= ($pg-4) AND $i <= ($pg+4)) {
				if ($i == $pg) {
					echo "<li class='active'><a href='?pg=".$i."'>".$i."</a></li>";
				} else {
					echo "<li><a href='?pg=".$i."'>".$i."</a></li>";
				}
			}
			
			if ($i > ($pg+4) AND $i == $total_paginas) {
				echo "<li><a>...</a></li>";
				echo "<li><a href='?pg=".$i."'>".$i."</a></li>";
			}
		}
		
		if($pg < $total_paginas) {
			echo "<li>";
			echo "	<a href='?pg=".$proximo."' aria-label='Next'>";
			echo "		<span aria-hidden='true'>»</span>";
			echo "	</a>";
			echo "</li>";
		} else {
			echo "<li class='disabled'>";
			echo "	<span aria-hidden='true'>»</span>";
			echo "</li>";
		}
		
		echo "  </ul>";
		echo "</nav>";
	}
?>

No FOR que está o segredo que você quer...

 

 

No meu caso ele mostra as 4 antes e as 4 próximas, para mostrar mais você deve mudar o número 4 por outro.. mas deve mudar em todos os lugares

 

 

O $pg é a página atual que está, no meu caso o $pg eu fiz pra ele nunca existir o $pg==0, sempre começa no 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o sentido em não permitir que o visitante possa voltar pras páginas anteriores? Afinal, se ele clicou numa página além da que ele queria, você não vai mais deixar ele voltar? Se a pessoa queria acessar a página 5 e clicou na 10, então ele vai ter que recarregar a página toda pra depois voltar pra página 5? Não faz muito sentido esconder as páginas anteriores do visitante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matemática pura, é só calcular quantas páginas vai exibir de cada lado da página atual. Por exemplo, se quer exibir 12 páginas, então são 6 páginas do lado esquerdo, aí mostra a página atual e mais 6 outras páginas do lado direito. A equação é até bem simples:

<?php
$pagina = $_GET['pag'];
if(!$pagina){
  $pagina = 1;
}
// Defina aqui a quantidade de resultados a serem exibidos em cada página
$limite = 5;

$total_registros = mysql_num_rows($cont); // Aqui você conta o total de registros da tabela
$total_paginas = ceil($total_registros / $limite); // Aqui divide o total de registros pelo limite de registros a serem exibidos para obter o total de páginas a serem exibidas

//Abaixo você vai fazer a equação que deverá 
$inicio = ($pagina * $limite) - $limite;

// Abaixo, um loop para exibir o link para as próximas páginas
$limitePaginas = 12;
$totalExibir = ceil(($pagina - 1) / 2);
$esquerda = $pagina - $totalExibir;
$direita = $pagina + $totalExibir;

for($i=1; $i <= $total_paginas; $i++){
    if($pagina > $imitePaginas){
		if($i >= $esquerda AND $i < $limitePaginas){
			echo "<a href='index.php?pag=$i'>".$i."</a>, ";
		}elseif($i == $limitePaginas){
			echo "<a href='index.php?pag=$i'>".$i."</a>, ";
		}elseif($i <= $direita AND $i > $limitePaginas){
			echo "<a href='index.php?pag=$i'>".$i."</a>, ";
		}
		if($i == $direita){
			break;
		}
    }else{
		if($i <= 12){
			echo "<a href='index.php?pag=$i'>".$i."</a>, ";
		}else{
			break;
		}
	}
}

echo "<hr width='100%'>"."Você está atualmente na página: ".$pagina."<hr width='100%'>";
?>

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.