Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo Cunha

Numerar uma lista (ranking) com paginação

Recommended Posts

Queridos amigos,

Criei uma página em PHP/MySQL que lista (ranking) as candidatas mais votadas em ordem (da mais votada à menos votada). E isso está funcionando perfeitamente. Programei um paginação, limitando a listagem de 10 em 10 candidatas. Até aí tudo certo também. O grande problema está sendo numerá-las. Sendo que na primeira página vai de 1º ao 10º. Na segunda página da lista, repete 1º ao 10º, e o correto era ser 11º ao 20º. Estou usando um while e contador ++. Alguém que já passou por isso pode me ajudar? Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queridos amigos,

Criei uma página em PHP/MySQL que lista (ranking) as candidatas mais votadas em ordem (da mais votada à menos votada). E isso está funcionando perfeitamente. Programei um paginação, limitando a listagem de 10 em 10 candidatas. Até aí tudo certo também. O grande problema está sendo numerá-las. Sendo que na primeira página vai de 1º ao 10º. Na segunda página da lista, repete 1º ao 10º, e o correto era ser 11º ao 20º. Estou usando um while e contador ++. Alguém que já passou por isso pode me ajudar? Obrigado desde já.

 

posta o codigo, da pra usar no loop uma variavel...

Compartilhar este post


Link para o post
Compartilhar em outros sites

era bom voce postar seu código ai né mano

http://forum.imasters.com.br/index.php?


$sql_2 = mysql_query("SELECT * FROM tabela WHERE campo LIKE '%$q%'");
$total_registros = mysql_num_rows($sql_2);

$paginas = ceil($total_registros/$quantidade);
$links = 9;

for ($i = $page-$Links; $i <= $page+1; $i++){
   if($i <= 0){}
   else
   {
       $sub = $i-1;
        echo "<a href='index.php?q=$q&page=$sub'>$sub</a>"; 

       }

}

   //pagina marcada, pagina atual
//echo "<a href='#' style='color:red;'>$page</a>";

for ($i = $page+1; $i <= $page+$links; $i++){
   if($i > $paginas){}else
   { 

    echo "<a href='index.php?q=$q&page=$i'>$i</a>";

    }

}
//utlima pagina
echo "<a href='index.php?q=$q&page=$paginas'>$paginas</a><br>";

 

um exemplo de código acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o codigo, da pra usar no loop uma variavel...

 

 

Segue abaixo para análise do código. Obs: Vou tentar já fazer a sugestão mencionada!

 

// Conecta no Banco de Dados
include ("conexao.php"); ?>
<?

// inclui a página com as funções
include_once('funcoes/pagination.php');

// Linhas de dados por pagina
    $entries_per_page=10;
    $page = (isset($_GET['page'])?$_GET['page']:1);

    $result = mysql_query("SELECT COUNT(*) from tb_candidata ORDER BY votos_candidata DESC")
           or die (mysql_error());            
        $num_rows = mysql_fetch_row($result);
/////////////////////////////////////////////////////////
if($num_rows[0]!=0){
   $total_pages = ceil($num_rows[0]/$entries_per_page);    
   $pagination = pagination_six($total_pages,$page);
   $offset = (($page * $entries_per_page) - $entries_per_page);

// Selecione o Banco de Dados
mysql_select_db($banco, $conexao);
// Executa o comando para selecionar todos os dados da tabela Candidata
$sql = mysql_query("SELECT * FROM tb_candidata ORDER BY votos_candidata DESC LIMIT $offset, $entries_per_page");
// Cria um laço de repetição
$contador = 0;
while ($row=mysql_fetch_assoc($sql)) {
$contador++; 
// Exibi os dados na tabela
?>
	 <table width="482" align="center" bgcolor="#EEEFF4"><form id="form1" name="form1" method="post" action="candidata_perfil.php">
             <tr>
               <td width="3" align="center" background="img/bkg_resultadoList.gif"><? echo "$contador" ?>º</td>
               <td width="249" height="36" align="left" background="img/bkg_resultadoList.gif">
                 <div align="left"><font size="2" face="tahoma,verdana,arial,helvetica" color="#FF3300"> <strong><img src="https://graph.facebook.com/<?=$row['foto_candidata'];?>/picture" />  <? echo $row['nome_candidata'];?>  </strong></font></div>
               </td>
               <td width="216" align="left" background="img/bkg_resultadoList.gif"><font size="2" face="tahoma,verdana,arial,helvetica"><a href="<? echo $row['perfil_candidata'];?>" target="_blank"><img src="perfil.png" border="0" /></a>
                 <input name="chk_candidata" type="hidden" value="<? echo $row['id_candidata'];?>" />
               <input type="image" src="votar.png" name="button" id="button" value="votar" />
               </font></td>
               <td width="0" align="center" valign="middle" background="img/bkg_resultadoList.gif"><!--<font size="2" face="tahoma,verdana,arial,helvetica"><strong>Votos</strong><br />
              <strong> <? echo $row['votos_candidata'];?></strong></font> --></td>
             </tr>
             <tr>
               <td colspan="4" align="center"><img src="barra.gif" width="480" height="2" /></td>
             </tr></form>
             <tr> <? } ?>
               <td colspan="4" align="center"><?
////////// TERMINA A TABELA DE EXEMPLO DE MOSTRAGEM DE DADOS       

   echo $pagination; // Mostra a página na parte inferior

          }  // FECHA CHAVE DO IF QUE VERIFICA SE $num_rows[0] != 0
        ?>
               <?
	if ($row == ""){
	echo "$erro";
	}
?></td>
             </tr>

	   <tr align="center">
            <td height="2">             
          </td>


 </table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...você pode usar o loop como eu disse anteriormente..

 

na primeira pagina, onde o limit 0,10 // por exemplo

 

antes do loop você faz

 

$id=0;

 

e dentro do loop você faz

 

$id++;

 

na segunda pagina, o limit sera limit 10,10, ae fora do loop

 

$id=10;

e dentro $id++;;

 

por ae...

 

como o seu codigo nao esta dentro do bbcode php, ficou dificil de entender...

Compartilhar este post


Link para o post
Compartilhar em outros sites

puxa vida, eu to pensando aqui, achei que fosse mais fácil, mas não estou entendendo ainda como fazer...segue abaixo o código novamente da programação, pra melhorar a visualização:

 

// inclui a página com as funções
include_once('funcoes/pagination.php');

// Linhas de dados por pagina
    $entries_per_page=10;
    $page = (isset($_GET['page'])?$_GET['page']:1);

    $result = mysql_query("SELECT COUNT(*) from tb_candidata ORDER BY votos_candidata DESC")
           or die (mysql_error());            
        $num_rows = mysql_fetch_row($result);
/////////////////////////////////////////////////////////
if($num_rows[0]!=0){
   $total_pages = ceil($num_rows[0]/$entries_per_page);    
   $pagination = pagination_six($total_pages,$page);
   $offset = (($page * $entries_per_page) - $entries_per_page);

// Selecione o Banco de Dados
mysql_select_db($banco, $conexao);
// Executa o comando para selecionar todos os dados da tabela Candidata
$sql = mysql_query("SELECT * FROM tb_candidata ORDER BY votos_candidata DESC LIMIT $offset, $entries_per_page");

// Cria um laço de repetição
$id=0;
$id=10; 
while ($row=mysql_fetch_assoc($sql)) {
	$id++;

// Exibi os dados na tabela
// aqui vai o resultado da busca

<? } ?>
               <td colspan="4" align="center"><?
////////// TERMINA A TABELA DE EXEMPLO DE MOSTRAGEM DE DADOS       

   echo $pagination; // Mostra a página na parte inferior

          }  // FECHA CHAVE DO IF QUE VERIFICA SE $num_rows[0] != 0
        ?>
               <?
	if ($row == ""){
	echo "$erro";
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, olha a loucura que eu fiz, porém deu certo! Creio eu que exista uma forma mais inteligente de programar isso:

Mas a numeração funciona certinho na paginação até a página 12.

 

O Código consiste nisso:

> Qual é a página selecionada da paginação?

> Se for = 0 então numero(que é contador) = 0

> se for = 1 então numero = 0

> se for = 2 então numero = 20

e assim vai nos else if da vida rsrs.

 

 

// Cria um laço de repetição
if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 0))
	$numero = 0;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 1))
	$numero = 0;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 2))
	$numero = 20;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 3))
	$numero = 30;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 4))
	$numero = 40;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 5))
	$numero = 50;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 6))
	$numero = 60;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 7))
	$numero = 70;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 8))
	$numero = 80;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 9))
	$numero = 90;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 10))
	$numero = 100;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 11))
	$numero = 120;
else if ($_REQUEST['page'] && is_numeric($_REQUEST['page']) && ($_REQUEST['page'] == 12))
	$numero = 130;
else
	$numero= 0;

while ($row=mysql_fetch_assoc($sql)) {
	$numero++;

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.