Ir para conteúdo

POWERED BY:

Arquivado

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

Rosye

Nossos desafios foram apagados

Recommended Posts

Oi, pessoal!

 

Estou tentando adaptar um script de paginação, mas não estou conseguindo.

 

Do jeito que está o script funciona, exibindo 21 registros em 11 páginas (2 registros por página). O problema é que ele também exibe os links para as 11 páginas, e eu queria que exibisse links para somente as 5 primeiras páginas (depois, quando chegasse na 5ª, desapareceria o link para a 1ª e apareceria o link para a 6ª, e assim por diante, mantendo sempre 5 links por página).

 

Já encontrei alguns scripts na net que fazer isso, mas eles sempre apresentam algum erro que não consigo contornar (e acabam não mostrando os links da forma que eu quero). Por isso, peço ajuda a vcs para que editem meu script, ou indiquem o que é que eu devo modificar nele para que funcione!

 

Notem que eu já incluí uma variável para determinar o número máximo de links (azul), e acho que devo inserí-la na parte do script que está em vermelho, mas como??? De todas as formas que tento não dá certo... :unsure:

 

<?php

$conexao = mysql_connect("localhost");

$db = mysql_select_db("cadastro_membros");

$busca = "SELECT * FROM membros ORDER BY Nome";

 

$total_reg = "2"; // número de registros por página

$total_link = "5"; // número de links por página

 

if (!isset($pagina)) {

$pg = "1";

} else {

$pg = $pagina;

}

$inicio = $pg - 1;

$inicio = $inicio * $total_reg;

$limite = mysql_query("$busca LIMIT $inicio,$total_reg");

$todos = mysql_query("$busca");

$n_total_reg = mysql_num_rows($todos);

$n_total_pg = ceil ($n_total_reg / $total_reg);

 

while ($linha = mysql_fetch_array($limite)) {

$nome = $linha ["Nome"];

$tipo_associacao = $linha ["Tipo_associacao"];

$data_associacao = $linha ["Data_associacao"];

$cidade = $linha ["Cidade"];

echo "$nome<br>

$tipo_associacao<br>

$data_associacao<br>

$cidade";

}

 

if ($pg == 1) {

echo "<span class='verdeaguaescuro'>« anterior |</span>";

}

else {

echo "<span class='verdeaguaescuro'>« <a href=\"listatodos.php?pagina=".($pg - 1)."\">anterior</a> |";

}

for($i = 1; $i <= $n_total_pg; $i ++)

if ($i == $pg) {

echo " <span class='verdeaguaescuro'><b><u>$i</u></b></span>";

}

else {

echo " <span class='verdeaguaescuro'><a href=\"listatodos.php?pagina=".$i."\">".$i."</a></span>";

}

if ($pg == $n_total_pg) {

echo "<span class='verdeaguaescuro'> | próxima »\n</span>";

else {

echo "<span class='verdeaguaescuro'> | <a href=\"listatodos.php?pagina=".($pg + 1)."\">próxima</a> »\n</span>";

}

 

mysql_free_result ($todos);

mysql_close($conexao);

?>

 

Agradeço qualquer ajuda!!

 

[]s!

 

Rosana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo assim, está na pg 5, aí, exibiria link, para a pg 1...3,4,5,6,7....ultima?!?!?!Bjão!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, sem "última", não gosto dessa navegação com "última"...Mas, para melhorar a navegação, eu poderia aumentar o número de resultados para 10 ($total_link = "10" ;) . Assim:Na página 1 exibiria: anterior 1 2 3 4 5 6 7 8 9 10 próximaNa página 10 mudaria para: anterior 5 6 7 8 9 10 11 12 13 14 15 próxima(sendo a anterior 9 e a próxima, 11)Na página 15 mudaria para: anterior 10 11 12 13 14 15 16 17 18 19 20 próxima(sendo a anterior 14 e a próxima, 16)Assim, iria variando de 5 em 5, com 10 resultados por página!Igual ao Yahoo! ;) Se puder me ajudar, serei eternamente grata!! :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

éééé, vai dar um trabalhinhoooo, mas eu me viro, se der tempo eu faço agora, ñ dando faço o mais rápido possível.

Se puder me ajudar, serei eternamente grata!! 

Eu serei eternamente grato em poder lhe ser util em algo!!!! http://forum.imasters.com.br/public/style_emoticons/default/blush.gif http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Deixa eu ver oq eu posso fazer, agora!!! heheheBjão!!!!! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada neste código:

PHP [/tr][tr]$conexao = mysql_connect("localhost");

$db = mysql_select_db("teste");

$busca = "SELECT * FROM membros ORDER BY Nome";

 

$total_reg = "2"; // número de registros por página

$total_link = "10"; // número de links por página

 

if (!isset($_GET['pagina'])) {

$pg = "1";

} else {

$pg = $_GET['pagina'];

}

 

$inicio = $pg - 1;

$inicio = $inicio * $total_reg;

$limite = mysql_query("$busca LIMIT $inicio,$total_reg");

$todos = mysql_query("$busca");

$n_total_reg = mysql_num_rows($todos);

$n_total_pg = ceil ($n_total_reg / $total_reg);

 

while ($linha = mysql_fetch_array($limite)) {

$nome = $linha ["Nome"];

$cidade = $linha ["Cidade"];

echo "$nome<br>\n

$cidade"

;

}

 

if ($pg == 1) {

echo "<span class='verdeaguaescuro'>« anterior |</span>";

} else {

echo "<span class='verdeaguaescuro'>« <a href=\"index.php?pagina=".($pg - 1)."\">anterior</a> |";

}

 

 

 

if ($n_total_pg > $pg + $total_link) {

 

for($i = $pg; $i <= $total_link+$pg; $i ++)

if ($i == $pg) {

echo " <span class='verdeaguaescuro'><b><u>$i</u></b></span>";

} else {

echo " <span class='verdeaguaescuro'><a href=\"index.php?pagina=".$i."\">".$i."</a></span>";

}

 

 

}

 

mysql_free_result ($todos);

mysql_close($conexao);

?>

[/tr]

 

Qualquer problema só falar, terei o maior prazer em ajuda-la, bem, ao menos tentar estou aprendendo tbm!!!! hehe http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Bjão!!!!!! :D :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela ajuda, mas com esse código a paginação só funciona via links anterior e próximo, os números não aparecem... :( Vou continuar fuçando pra ver se consigo algum progresso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vê se esse serve, eu dei uma mexida:

 

PHP [/tr][tr]$conexao = mysql_connect("localhost");

$db = mysql_select_db("teste");

$busca = "SELECT * FROM membros ORDER BY Nome";

 

$total_reg = "2"; // número de registros por página

$total_link = "10"; // número de links por página

 

if (!isset($_GET['pagina'])) {

$pg = "1";

} else {

$pg = $_GET['pagina'];

}

 

$inicio = $pg - 1;

$inicio = $inicio * $total_reg;

$limite = mysql_query("$busca LIMIT $inicio,$total_reg");

$todos = mysql_query("$busca");

$n_total_reg = mysql_num_rows($todos);

$n_total_pg = ceil ($n_total_reg / $total_reg);

 

while ($linha = mysql_fetch_array($limite)) {

$nome = $linha ["Nome"];

$cidade = $linha ["Cidade"];

echo "$nome<br>\n

$cidade"

;

}

 

if ($pg == 1) {

echo "<span class='verdeaguaescuro'>« anterior |</span>";

} else {

echo "<span class='verdeaguaescuro'>« <a href=\"index.php?pagina=".($pg - 1)."\">anterior</a> |";

}

 

//$n_total_pg=15

//$total_link=10

//echo $total_link;

 

if ($n_total_pg >= $pg+$total_link) {

for($i = $pg; $i <= $total_link+$pg; $i++) {

if ($i == $pg) {

echo " <span class='verdeaguaescuro'><b><u>$i</u></b></span>";

} else {

echo " <span class='verdeaguaescuro'><a href=\"index.php?pagina=".$i."\">".$i."</a></span>";

}

}

} else {

for($i = $pg; $i <= $n_total_pg; $i++) {

if ($i == $pg) {

echo " <span class='verdeaguaescuro'><b><u>$i</u></b></span>";

} else {

echo " <span class='verdeaguaescuro'><a href=\"index.php?pagina=".$i."\">".$i."</a></span>";

}

}

}

 

 

mysql_free_result ($todos);

mysql_close($conexao);

?>

[/tr]

 

Bjão e qualquer problema só falar estou a sua inteira disposição!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Michel, no código que você postou, os links não paravam de aparecer, mesmo depois de ter sido atingido o número máximo de páginas do banco de dados... além disso, os links anteriores desapareciam quando se clicava no posterior (ex:

na página 1 os links iam de 1 a 10, na página 10 iam de 2 a 11, na 11, de 3 a 12, e assim por diante. Não era bem isso que eu queria.

 

Mexi até o máximo que consegui para chegar no seguinte código, que mostra somente os links para páginas existentes (quando chega à última página, o "próximo" não linka mais nada) e, na página 10, consegue fazer o que eu quero (exibir de 5 a 14). Mas, do jeito que está, ele linka a própria página 10 quando está dentro dela (não deveria linkar), e não segue esse padrão até depois do 14.

 

Será que você consegue seguir a minha idéia a partir desse código? :wacko:

 

PHP [/tr][tr]$i = 1;

do {} while (++$i <= $n_total_pg);

 

if ($pg == 1) {

echo "« anterior |";

}

else {

echo « <a href=\"listatodos.php?pagina=".($pg - 1)."\">anterior</a> |";

}

 

for ($i = 1; $i <= $total_link; $i++) {

if ($i == $pg && $i <> $total_link) {

echo "

<b><u>$i</u></b>";

}

else {

if ($pg >=$total_link)

{

echo "

<a href=\"listatodos.php?pagina=".($i + 4)."\">".($i + 4)."</a>";

}

else

{

echo "

<a href=\"listatodos.php?pagina=".($i)."\">".($i)."</a>";

}

}

}

 

if ($pg == $n_total_pg) {

echo "

| próxima »\n";

}

else {

echo "

| <a href=\"listatodos.php?pagina=".($pg + 1)."\">próxima</a> »\n";

}

[/tr]

 

Valeu! Tamos chegando lá! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué, aqui funcionou certinho, o ultimo script pq no penultimo, ele fazia como você falou.você está testando em algum host, tem o endereço pra mim dar uma olhada?!?!bjão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe-me se eu estiver sendo incoveniente,mas é melhor fazer pelo Dreamweaver...no 2004 a extenção para fazer paginação já vem instalada no MX 6.0 é só você baixar....AQUI O LINK PARA O DOWNLOAD

Dai o resto é tudo mastigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Haha, depois de eu sofrer por dias, alguém me avisa que o Dreamweaver faz isso sozinho! :D

 

Mas, finalmente, consegui um script que faz o que eu queria (paginação no estilo Google) aqui! Adaptei e dei uma simplificada no exemplo, e funcionou bem.

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Valeu pela ajuda de todos!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.