Ir para conteúdo

Arquivado

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

Rasp

[Resolvido] Exibir registros da paginação

Recommended Posts

Fala galera... tô com um probleminha meio besta mais não consigo resolver, nem sei como pesquisar sobre...

 

tenho o seguinte script de paginação:

 

$limite = 10;
$pg = (isset($_GET['pg']) && is_numeric($_GET['pg'])) ? $_GET['pg'] : 1;
$inicio = ($pg * $limite) - $limite;

$conexao = mysql_query("SELECT * FROM tabela ORDER BY campo ASC LIMIT $inicio, $limite");
$total = mysql_num_rows(mysql_query("SELECT * FROM tabela"));


$total_pg = ceil($total/$limite);
$total_pg++;

$anterior = ($pg - 3) < 1 ? 1 : $pg - 3;
$proximo = ($pg + 4) > $total_pg ? $total_pg : $pg + 4;

echo ($pg >= 5) ? "<span><a href=\"?pg=1\">« «</a></span>\r\n" : '';

echo ($pg > 1) ? "<span><a href=\"?pg=".($pg - 1)."\">«</a></span>\r\n" : '';

for($i_pg = $anterior; $i_pg < $proximo; $i_pg++) {
	if($pg == ($i_pg)) {
		echo "<span class=\"pag_atual\">$i_pg</span>\r\n";
	} else {
		echo "<span><a href=\"?pg=".$i_pg."\">$i_pg</a></span>\r\n";
	}
}

echo ($pg + 1) < $total_pg ? "<span><a href=\"?pg=".($pg + 1)."\">»</a></span>\r\n" : '';

echo ($pg <= $total_pg - 5) ? "<span><a href=\"?pg=".($total_pg - 1)."\">» »</a></span>\r\n" : '';

Exibo normalmente com ele a quantidade de registros que possui a tabela dando um echo $total... porém, me surgiu a necessidade de mostrar a posição dos registros na tela, exemplo:

 

estou exibindo os registros de 10 à 20, então teria de aparecer: Mostrando de 10 até 20 de $total registros... mais não sei como fazer isso...

Alguem poderia dar uma ideia?

Obrigado.

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exibindo <?php echo ((($i_pg-1) * $limite) + 1); ?> registros de um total de <?php echo $total; ?>

Explicação:

 

Suponhamos que esteja na página 2, e exiba 10 registros por página, logo:

 

$i_pg = 2;

$limite = 10;

 

Sendo assim:

(((2 - 1) * 10) + 1) = 11

 

Ou seja, começa a exibir a partir do registro 11.

Compartilhar este post


Link para o post
Compartilhar em outros sites

matias_rezende,

O total ($total) eu já mostro numa boa... o problema é como o Diego explicou é exibir a quantidade (de tanto à tanto) que está atualmente na tela.

 

Diego,

beleza, funcionou em partes mais não é bem isso... tipo... desse modo que você deu exemplo minha primeira página lista que está mostrando 41 registro de total, sendo que na verdade eu só exibo 10 registros por página... a ideia seria assim:

 

tenho 10 registros na tabela, mostrando do 1 ao 10. ai queria fazer que a mensagem abaixo ficasse Mostrando de 1 até 10 de 100 registros...

 

 

Valeu a atenção ai ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés do $inicio, use $inicio + 1 na hora de exibir...

 

Por que não existe o registro 0.

 

echo 'Mostrando de '.($inicio + 1).' até '.($inicio + $limite);

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo 'Mostrando de '.($inicio + 1).' até '.($inicio + $limite).' de um total de '.$total.' registros.';

Supondo que $inicio = 0, então...

 

Mostrando de (0 + 1) até (0 + 10) de um total de (100) registros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade não... Porque lá em cima, ele coloca que, se for a primeira consulta, o valor do inicio é 1...

$pg = (isset($_GET['pg']) && is_numeric($_GET['pg'])) ? $_GET['pg'] : 1;

Não sei se vai funcionar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão do inicio $inicio, eu resolvi assim que terminei de escrever, rs, parei pra pensar e me toquei que seria isso... mais valeu ;)

 

Agora a questão do final não pode ser:

 

$inicio + $limite

pois quando a página não está completa ou seja... quando não exibe 10 registros (ex: a última pág) ele mostra redondo... não sei (posso estar falando besteira) mais acho que tenho que fazer algo referente a consulta no banco :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então seria:

$total_exibidos = mysql_num_rows($conexao) // A tua query com limite...
echo 'Mostrando de '.($inicio + 1).' até '.($inicio + $total_exibidos).' de um total de '.$total.' registros.';

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza... até ai tudo bem... mais como eu faço a consulta no banco? pois se eu fizer uma consulta somente pra saber a quantidade do banco vai ser o mesmo que $total, correto? :S

 

Ou seja:

 

Consulto o total no banco (ex. 100)

 

inicio + total (0 + 100) = 100

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não... você usa a sua variável conexão, que já é a consulta... Só coloca o mysql_num_rows. Vai te retornar quantas linhas tem nesta consulta... Se for a última, e tiver só 3, vai retornar 3, mesmo tendo como limite 10. Entendeu???

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aaa sim... saquei... po agora ficou belezinha... valeo matias e diego ^^

Resolvido ;D

Abração!

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.