O grupo no qual você está postando é um grupo da Usenet. As mensagens postadas neste grupo farão com que o seu e-mail fique visível para qualquer pessoa na internet.
Tenho um servidor de um jogo que utiliza mssql.
Gostaria de fazer páginação no ranking do servidor.
O Problema está na hora de exibir as páginas.
Se eu estiver na Página 1 ele exibe.
1 - 5 | Próxima >
Na página 6, ficaria assim:
< Anterior | 1 - 6 - 11 | Próxima >
Na página 9, ficaria assim:
< Anterior | 4 - 9 - 14 | Próxima >
Eu gostaria de exibir 5 Links após a página atual, e 5 antes da
anterior. Mas não está dando certo.
<?
$num_por_pagina = 10; // Número de Itens por página
$pagina = $_GET["pagina"]; // Pega o número da página
if(!$pagina) // Se não for definido a página ela será igual à 1
{
$pagina = 1;
}
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
if ($pagina == 1)
{
$res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
WHERE Rank > $primeiro_registro-1 AND Opened = 1 ORDER BY Rank ASC");
}
else
{
$res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
WHERE Rank >= $primeiro_registro AND Opened = 1 ORDER BY Rank ASC");
}
$consulta = mssql_query("SELECT COUNT(*) FROM TotalRanking"); // Total
de Itens no Banco
list($total_usuarios) = mssql_fetch_array($consulta);
$total_paginas = ceil($total_usuarios/$num_por_pagina); // Total de
páginas
$max_links = 5; // Número de Links antes e depois da página atual
?>
O Problema está aqui, ele não está exibindo os Links corretamente.
<?
// Cria um for() para exibir os 5 links antes da página atual
for($i = $pagina-$max_links; $i <= $pagina-1; $i++)
{
// Se o número da página for menor ou igual a zero, não faz nada
if($i <=0)
{
//faz nada
// Se estiver tudo OK, cria o link para as outras páginas
}
else
{
echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
a>";
}
}
// Cria outro for(), desta vez para exibir 5 links após a página atual
for($i = $pagina+1; $i <= $pagina+$max_links; $i++)
{
// Verifica se a página atual é maior do que a última página. Se for,
não faz nada.
if($i > $total_paginas)
{
//faz nada
// Se tiver tudo Ok gera os links.
}
else
{
echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
a>";
}
}
?>
Será que alguém ai poderia me ajudar?
Desde já agradeço, Alfredo.
> Tenho um servidor de um jogo que utiliza mssql.
> Gostaria de fazer páginação no ranking do servidor.
> O Problema está na hora de exibir as páginas.
> Se eu estiver na Página 1 ele exibe.
> 1 - 5 | Próxima >
> Na página 6, ficaria assim:
> < Anterior | 1 - 6 - 11 | Próxima >
> Na página 9, ficaria assim:
> < Anterior | 4 - 9 - 14 | Próxima >
> Eu gostaria de exibir 5 Links após a página atual, e 5 antes da
> anterior. Mas não está dando certo.
> <?
> $num_por_pagina = 10; // Número de Itens por página
> $pagina = $_GET["pagina"]; // Pega o número da página
> if(!$pagina) // Se não for definido a página ela será igual à 1
> {
> $pagina = 1;
> }
> $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
> if ($pagina == 1)
> {
> $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> WHERE Rank > $primeiro_registro-1 AND Opened = 1 ORDER BY Rank ASC");}
> else
> {
> $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> WHERE Rank >= $primeiro_registro AND Opened = 1 ORDER BY Rank ASC");
> }
> $consulta = mssql_query("SELECT COUNT(*) FROM TotalRanking"); // Total
> de Itens no Banco
> list($total_usuarios) = mssql_fetch_array($consulta);
> $total_paginas = ceil($total_usuarios/$num_por_pagina); // Total de
> páginas
> $max_links = 5; // Número de Links antes e depois da página atual
> ?>
> O Problema está aqui, ele não está exibindo os Links corretamente.
> <?
> // Cria um for() para exibir os 5 links antes da página atual
> for($i = $pagina-$max_links; $i <= $pagina-1; $i++)
> {
> // Se o número da página for menor ou igual a zero, não faz nada
> if($i <=0)
> {
> //faz nada
> // Se estiver tudo OK, cria o link para as outras páginas
> }
> else
> {
> echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> a>";
> }
> }
> // Cria outro for(), desta vez para exibir 5 links após a página atual
> for($i = $pagina+1; $i <= $pagina+$max_links; $i++)
> {
> // Verifica se a página atual é maior do que a última página. Se for,
> não faz nada.
> if($i > $total_paginas)
> {
> //faz nada
> // Se tiver tudo Ok gera os links.
> }
> else
> {
> echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> a>";
> }
> }
> ?>
> Será que alguém ai poderia me ajudar?
> Desde já agradeço, Alfredo.
> Tenho um servidor de um jogo que utiliza mssql.
> Gostaria de fazer páginação no ranking do servidor.
> O Problema está na hora de exibir as páginas.
> Se eu estiver na Página 1 ele exibe.
> 1 - 5 | Próxima >
> Na página 6, ficaria assim:
> < Anterior | 1 - 6 - 11 | Próxima >
> Na página 9, ficaria assim:
> < Anterior | 4 - 9 - 14 | Próxima >
> Eu gostaria de exibir 5 Links após a página atual, e 5 antes da
> anterior. Mas não está dando certo.
> <?
> $num_por_pagina = 10; // Número de Itens por página
> $pagina = $_GET["pagina"]; // Pega o número da página
> if(!$pagina) // Se não for definido a página ela será igual à 1
> {
> $pagina = 1;
> }
> $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
> if ($pagina == 1)
> {
> $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> WHERE Rank > $primeiro_registro-1 AND Opened = 1 ORDER BY Rank ASC");
> }
> else
> {
> $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> WHERE Rank >= $primeiro_registro AND Opened = 1 ORDER BY Rank ASC");
> }
> $consulta = mssql_query("SELECT COUNT(*) FROM TotalRanking"); // Total
> de Itens no Banco
> list($total_usuarios) = mssql_fetch_array($consulta);
> $total_paginas = ceil($total_usuarios/$num_por_pagina); // Total de
> páginas
> $max_links = 5; // Número de Links antes e depois da página atual
> ?>
> O Problema está aqui, ele não está exibindo os Links corretamente.
> <?
> // Cria um for() para exibir os 5 links antes da página atual
> for($i = $pagina-$max_links; $i <= $pagina-1; $i++)
> {
> // Se o número da página for menor ou igual a zero, não faz nada
> if($i <=0)
> {
> //faz nada
> // Se estiver tudo OK, cria o link para as outras páginas
> }
> else
> {
> echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> a>";
> }
> }
> // Cria outro for(), desta vez para exibir 5 links após a página atual
> for($i = $pagina+1; $i <= $pagina+$max_links; $i++)
> {
> // Verifica se a página atual é maior do que a última página. Se for,
> não faz nada.
> if($i > $total_paginas)
> {
> //faz nada
> // Se tiver tudo Ok gera os links.
> }
> else
> {
> echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> a>";
> }
> }
> ?>
> Será que alguém ai poderia me ajudar?
> Desde já agradeço, Alfredo.
Fui testar seu script. Mas ele nao esta errado, nao.
Pagina 1 imprime: 2 3 4 5 6
Pagina 4: 1 2 3 5 6 7 8 9
Pagina 8: 3 4 5 6 7 9 10 11 12 13
Não é isso que vc quer?
Nao vi nada de errado. Eu só faria diferente, com um loop só, como
falei na outra mensagem. Nao só faria, como já fiz paginação assim, e
tb sempre com links de primeira e ultima pagina.
> Tenho um servidor de um jogo que utiliza mssql.
> Gostaria de fazer páginação no ranking do servidor.
> O Problema está na hora de exibir as páginas.
> Se eu estiver na Página 1 ele exibe.
> 1 - 5 | Próxima >
> Na página 6, ficaria assim:
> < Anterior | 1 - 6 - 11 | Próxima >
> Na página 9, ficaria assim:
> < Anterior | 4 - 9 - 14 | Próxima >
> Eu gostaria de exibir 5 Links após a página atual, e 5 antes da
> anterior. Mas não está dando certo.
> <?
> $num_por_pagina = 10; // Número de Itens por página
> $pagina = $_GET["pagina"]; // Pega o número da página
> if(!$pagina) // Se não for definido a página ela será igual à 1
> {
> $pagina = 1;
> }
> $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
> if ($pagina == 1)
> {
> $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> WHERE Rank > $primeiro_registro-1 AND Opened = 1 ORDER BY Rank ASC");
> }
> else
> {
> $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> WHERE Rank >= $primeiro_registro AND Opened = 1 ORDER BY Rank ASC");
> }
> $consulta = mssql_query("SELECT COUNT(*) FROM TotalRanking"); // Total
> de Itens no Banco
> list($total_usuarios) = mssql_fetch_array($consulta);
> $total_paginas = ceil($total_usuarios/$num_por_pagina); // Total de
> páginas
> $max_links = 5; // Número de Links antes e depois da página atual
> ?>
> O Problema está aqui, ele não está exibindo os Links corretamente.
> <?
> // Cria um for() para exibir os 5 links antes da página atual
> for($i = $pagina-$max_links; $i <= $pagina-1; $i++)
> {
> // Se o número da página for menor ou igual a zero, não faz nada
> if($i <=0)
> {
> //faz nada
> // Se estiver tudo OK, cria o link para as outras páginas
> }
> else
> {
> echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> a>";
> }
> }
> // Cria outro for(), desta vez para exibir 5 links após a página atual
> for($i = $pagina+1; $i <= $pagina+$max_links; $i++)
> {
> // Verifica se a página atual é maior do que a última página. Se for,
> não faz nada.
> if($i > $total_paginas)
> {
> //faz nada
> // Se tiver tudo Ok gera os links.
> }
> else
> {
> echo "<a href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> a>";
> }
> }
> ?>
> Será que alguém ai poderia me ajudar?
> Desde já agradeço, Alfredo.
Descobri por que não estava funcionando. olha oque eu estava fazendo
Estava colocando uma variável para os links, e dar um echo na parte HTML pra
aparecer os Links, mas o Loop não funcionava.
<?
// Cria um for() para exibir os 5 links antes da página atual
for($i = $pagina-$max_links; $i <= $pagina-1; $i++)
{
// Se o número da página for menor ou igual a zero, não faz nada
if($i <=0)
{
//faz nada
// Se estiver tudo OK, cria o link para as outras páginas
}
else
{
$anteriores = "<a
href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</a>";
}
}
$atual = $pagina;
// Cria outro for(), desta vez para exibir 5 links após a página atual
for($i = $pagina+1; $i <= $pagina+$max_links; $i++)
{
// Verifica se a página atual é maior do que a última página. Se for,
não faz nada.
if($i > $total_paginas)
{
//faz nada
// Se tiver tudo Ok gera os links.
}
else
{
$proximas = "<a
href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</a>";
}
> Não é isso que vc quer?
> Nao vi nada de errado. Eu só faria diferente, com um loop só, como
> falei na outra mensagem. Nao só faria, como já fiz paginação assim, e
> tb sempre com links de primeira e ultima pagina.
> > Tenho um servidor de um jogo que utiliza mssql.
> > Gostaria de fazer páginação no ranking do servidor.
> > O Problema está na hora de exibir as páginas.
> > Se eu estiver na Página 1 ele exibe.
> > 1 - 5 | Próxima >
> > Na página 6, ficaria assim:
> > < Anterior | 1 - 6 - 11 | Próxima >
> > Na página 9, ficaria assim:
> > < Anterior | 4 - 9 - 14 | Próxima >
> > Eu gostaria de exibir 5 Links após a página atual, e 5 antes da
> > anterior. Mas não está dando certo.
> > <?
> > $num_por_pagina = 10; // Número de Itens por página
> > $pagina = $_GET["pagina"]; // Pega o número da página
> > if(!$pagina) // Se não for definido a página ela será igual à 1
> > {
> > $pagina = 1;
> > }
> > $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
> > if ($pagina == 1)
> > {
> > $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> > WHERE Rank > $primeiro_registro-1 AND Opened = 1 ORDER BY Rank ASC");
> > }
> > else
> > {
> > $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> > WHERE Rank >= $primeiro_registro AND Opened = 1 ORDER BY Rank ASC");
> > }
> > $consulta = mssql_query("SELECT COUNT(*) FROM TotalRanking"); // Total
> > de Itens no Banco
> > list($total_usuarios) = mssql_fetch_array($consulta);
> > $total_paginas = ceil($total_usuarios/$num_por_pagina); // Total de
> > páginas
> > $max_links = 5; // Número de Links antes e depois da página atual
> > ?>
> > O Problema está aqui, ele não está exibindo os Links corretamente.
> > <?
> > // Cria um for() para exibir os 5 links antes da página atual
> > for($i = $pagina-$max_links; $i <= $pagina-1; $i++)
> > {
> > // Se o número da página for menor ou igual a zero, não faz nada
> > if($i <=0)
> > {
> > //faz nada
> > // Se estiver tudo OK, cria o link para as outras páginas
> > }
> > else
> > {
> > echo "<a
> href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> > a>";
> > }
> > }
> > // Cria outro for(), desta vez para exibir 5 links após a página atual
> > for($i = $pagina+1; $i <= $pagina+$max_links; $i++)
> > {
> > // Verifica se a página atual é maior do que a última página. Se
> for,
> > não faz nada.
> > if($i > $total_paginas)
> > {
> > //faz nada
> > // Se tiver tudo Ok gera os links.
> > }
> > else
> > {
> > echo "<a
> href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> > a>";
> > }
> > }
> > ?>
> > Será que alguém ai poderia me ajudar?
> > Desde já agradeço, Alfredo.
não existe diferença em você usar while ou for, os dois faz a mesma função
então a performace é a mesma.
em questão de qual usar depende de você eu gosto de usar while ^^
> Não é isso que vc quer?
> Nao vi nada de errado. Eu só faria diferente, com um loop só, como
> falei na outra mensagem. Nao só faria, como já fiz paginação assim, e
> tb sempre com links de primeira e ultima pagina.
> > Tenho um servidor de um jogo que utiliza mssql.
> > Gostaria de fazer páginação no ranking do servidor.
> > O Problema está na hora de exibir as páginas.
> > Se eu estiver na Página 1 ele exibe.
> > 1 - 5 | Próxima >
> > Na página 6, ficaria assim:
> > < Anterior | 1 - 6 - 11 | Próxima >
> > Na página 9, ficaria assim:
> > < Anterior | 4 - 9 - 14 | Próxima >
> > Eu gostaria de exibir 5 Links após a página atual, e 5 antes da
> > anterior. Mas não está dando certo.
> > <?
> > $num_por_pagina = 10; // Número de Itens por página
> > $pagina = $_GET["pagina"]; // Pega o número da página
> > if(!$pagina) // Se não for definido a página ela será igual à 1
> > {
> > $pagina = 1;
> > }
> > $primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
> > if ($pagina == 1)
> > {
> > $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> > WHERE Rank > $primeiro_registro-1 AND Opened = 1 ORDER BY Rank ASC");
> > }
> > else
> > {
> > $res = mssql_query("SELECT TOP $num_por_pagina * FROM TotalRanking
> > WHERE Rank >= $primeiro_registro AND Opened = 1 ORDER BY Rank ASC");
> > }
> > $consulta = mssql_query("SELECT COUNT(*) FROM TotalRanking"); // Total
> > de Itens no Banco
> > list($total_usuarios) = mssql_fetch_array($consulta);
> > $total_paginas = ceil($total_usuarios/$num_por_pagina); // Total de
> > páginas
> > $max_links = 5; // Número de Links antes e depois da página atual
> > ?>
> > O Problema está aqui, ele não está exibindo os Links corretamente.
> > <?
> > // Cria um for() para exibir os 5 links antes da página atual
> > for($i = $pagina-$max_links; $i <= $pagina-1; $i++)
> > {
> > // Se o número da página for menor ou igual a zero, não faz nada
> > if($i <=0)
> > {
> > //faz nada
> > // Se estiver tudo OK, cria o link para as outras páginas
> > }
> > else
> > {
> > echo "<a
> href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> > a>";
> > }
> > }
> > // Cria outro for(), desta vez para exibir 5 links após a página atual
> > for($i = $pagina+1; $i <= $pagina+$max_links; $i++)
> > {
> > // Verifica se a página atual é maior do que a última página. Se
> for,
> > não faz nada.
> > if($i > $total_paginas)
> > {
> > //faz nada
> > // Se tiver tudo Ok gera os links.
> > }
> > else
> > {
> > echo "<a
> href=\"index.php?do=ranking&tipo=player&pagina=$i\">$i</
> > a>";
> > }
> > }
> > ?>
> > Será que alguém ai poderia me ajudar?
> > Desde já agradeço, Alfredo.