Ir para conteúdo

POWERED BY:

Arquivado

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

felipebmfaria

Paginacao de resultados EM TABELA HTML

Recommended Posts

Estou usando este código para paginação dos resultados:

 

<?php 
$link_p_pag = 5;
$reg_p_pag = 6;
$pag = $_GET['pag'];

$busca = mysql_query("SELECT count(*) FROM tabela;");
$registros = mysql_result($busca,0); 

$num_total_paginas = ($registros%$reg_p_pag==0)?$registros/$reg_p_pag:floor($registros/$reg_p_pag)+1;

if ($pag>$num_total_paginas)
echo "Error<br><br>";
else

if (!$pag)
$pag = 1;

$inicio = ($reg_p_pag*$pag)-$reg_p_pag;

$query = "SELECT * FROM tabela ORDER BY id DESC LIMIT $inicio, $reg_p_pag";
$result = @mysql_query($query);

while ($row = mysql_fetch_assoc($result))
{
  $id = $row['id'];
  $nome = $row['nome'];
  $foto = $row['arquivo'];
  
}
 
echo "<hr><br>";

$anterior = $pag-1;
if ($anterior<1)
echo "Anterior - ";
else
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$anterior\">Anterior</a> - ";

for($i=1; $i<$pag; $i++)
if($i>=$pag-$link_p_pag)
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a> - ";

echo "<b>$pag</b>";

for($i=$pag+1; $i<=$num_total_paginas; $i++)
if($i<=$pag+$link_p_pag)
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a>";

$proxima = $pag+1;
if ($proxima>$num_total_paginas)
echo " - Próxima";
else
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$proxima\">Próxima</a>";

?>

 

Mas eu precisava que o resultado fosse exibido em tabelas, como neste exemplo(sendo que aqui nao há paginacao) aqui

 

 

Alguem me dah uma luz de como posso paginar os resultados em uma tabela?????

 

 

Segue o codigo da tabela que eu precisava

 

<table width="540" height="390" border="1" cellspacing="0" cellpadding="0">
  <tr>
	<td width="130" height="130"> </td>
	<td width="130" height="130"> </td>
	<td width="20"> </td>
	<td width="130" height="130"> </td>
	<td width="130" height="130"> </td>
  </tr>
  <tr>
	<td width="130" height="130"> </td>
	<td width="130" height="130"> </td>
	<td width="20"> </td>
	<td width="130" height="130"> </td>
	<td width="130" height="130"> </td>
  </tr>
  <tr>
	<td width="130" height="130"> </td>
	<td width="130" height="130"> </td>
	<td width="20"> </td>
	<td width="130" height="130"> </td>
	<td width="130" height="130"> </td>
  </tr>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom esse é um exemplo basico que eu montei, agora é so voce adaptar a sua necessidade

 

<table>
<tr>
<?php
// a variavel $td e definida com valor 0
$td = 0;
// no while fazemos o seguinte:
while($array=mysql_fetch_array($sql)){
// em seu começo definimos que a $td deve ser incrementada; ou seja seu valor ira subindo
$td++;
// imprimimos os resultados com em um while qualquer
echo '
<td width="130" height="130">'.$array['campo'].'</td>';
// como sua tabela tera 5 resultados
// verificamos se variavel $td tem valor 5
if($td==5){
// se tiver fecha a linha e abre outra
echo '
</tr>
<tr>';
// e entao zeramos $td para que a contagem recomeçe
$td=0;
}
}
// note que se voce olhar o codigo fonte da pagian gerada, teramos uma <tr></tr> sobrando, ela esta ali pelo
// seguinte caso, se sua consulata retornar 11, sua terceira linha tera apenas 1 resultado, esse </tr> esta ali
// para impedir erro em sua tabela, caso ocorra o descrito acima
?>
</tr>
</table>

Observando essa parte do codigo

 

$num_total_paginas = ($registros%$reg_p_pag==0)?$registros/$reg_p_pag:floor($registros/$reg_p_pag)+1;

Na minha opiniao seu script fica mais facil assim

 

$num_total_paginas =ceil($registros/reg_p_pag);

A função ceil vai arrendondar o valor da divisao para cima, e tambem reparei que se o visitante digitar no GET pag um valor maior que o numero de pagina, e exibida uma mensagem de erro. se isso acontecer redireciona o usuario para a ultima pagian encontrada, tornando seu script mais funcional

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça algo parecido com isso:

 

echo "<table>";
for ($z = 1; $z <= $d3; $z++)

{
$cum = $r;
$cd = $r +1;
$ct = $r + 2;
$cq = $r + 3;
echo "
<tr>
<td>".$a[$cum]."</td>
<td>".$a[$cd]."</td>
<td>".$a[$ct]."</td>
<td>".$a[$cq]."</td>
";
$r += 4;
}
echo "</table>";
$a é um array com os registros.

 

aproveitando o post eu queria que avaliace isso:

minha paginaçao:

http://forum.imasters.com.br/index.php?showtopic=309230

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder...

 

Estou fazendo assim para tentar adaptar a minha necessidade...

 

<?php  
$link_p_pag = 5;
$reg_p_pag = 12;
$pag = $_GET['pag'];

$busca = mysql_query("SELECT count(*) FROM tabela;");
$registros = mysql_result($busca,0); 

$num_total_paginas =ceil($registros/reg_p_pag);

if ($pag>$num_total_paginas)
echo "Error<br><br>";
else

if (!$pag)
$pag = 1;

$inicio = ($reg_p_pag*$pag)-$reg_p_pag;

$query = "SELECT * FROM tabela ORDER BY id DESC LIMIT $inicio, $reg_p_pag";
$result = @mysql_query($query);

while ($row = mysql_fetch_assoc($result))
{
  $id = $row['id'];
  $nome = $row['nome'];
  $completa = $row['completa']
  $foto = ['arquivo']
?>  
<table>
<tr>
<?php
// a variavel $td e definida com valor 0
$td = 0;
// no while fazemos o seguinte:
while($array=mysql_fetch_array($sql)){
// em seu começo definimos que a $td deve ser incrementada; ou seja seu valor ira subindo
$td++;
// imprimimos os resultados com em um while qualquer
echo '
<td width="130" height="130">'.$array['campo'].'</td>';
// como sua tabela tera 5 resultados
// verificamos se variavel $td tem valor 5
if($td==5){
// se tiver fecha a linha e abre outra
echo '
</tr>
<tr>';
// e entao zeramos $td para que a contagem recomeçe
$td=0;
}
}
?>
</tr>
</table>
<?php
}

echo "<hr><br>";

$anterior = $pag-1;
if ($anterior<1)
echo "Anterior - ";
else
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$anterior\">Anterior</a> - ";

for($i=1; $i<$pag; $i++)
if($i>=$pag-$link_p_pag)
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a> - ";

echo "<b>$pag</b>";

for($i=$pag+1; $i<=$num_total_paginas; $i++)
if($i<=$pag+$link_p_pag)
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a>";

$proxima = $pag+1;
if ($proxima>$num_total_paginas)
echo " - Próxima";
else
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$proxima\">Próxima</a>";

?>

mas nao tah dando certo...

sei que tem coisa errada, por exemplo neste trecho:

 

while ($row = mysql_fetch_assoc($result))
{
  $id = $row['id'];
  $nome = $row['nome'];
?>  
<table>
<tr>
<?php
// a variavel $td e definida com valor 0
$td = 0;
while($array=mysql_fetch_array($sql)){
$td++;
echo '
<td width="130" height="130">'.$array['campo'].'</td>';

mas eh que eu nao to conseguindo um caminho... o que devo colocar em 'campo' no seguinte trecho <td width="130" height="130">'.$array['campo'].'</td>'; ???????

 

e os dois whiles??? como fazer com eles???

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder...

 

Estou fazendo assim para tentar adaptar a minha necessidade...

 

<?php  
$link_p_pag = 5;
$reg_p_pag = 12;
$pag = $_GET['pag'];

$busca = mysql_query("SELECT count(*) FROM tabela;");
$registros = mysql_result($busca,0); 

$num_total_paginas =ceil($registros/reg_p_pag);

if ($pag>$num_total_paginas)
echo "Error<br><br>";
else

if (!$pag)
$pag = 1;

$inicio = ($reg_p_pag*$pag)-$reg_p_pag;

$query = "SELECT * FROM tabela ORDER BY id DESC LIMIT $inicio, $reg_p_pag";
$result = @mysql_query($query);

while ($row = mysql_fetch_assoc($result))
{
  $id = $row['id'];
  $nome = $row['nome'];
  $completa = $row['completa']
  $foto = ['arquivo']
?>  
<table>
<tr>
<?php
// a variavel $td e definida com valor 0
$td = 0;
// no while fazemos o seguinte:
while($array=mysql_fetch_array($sql)){
// em seu começo definimos que a $td deve ser incrementada; ou seja seu valor ira subindo
$td++;
// imprimimos os resultados com em um while qualquer
echo '
<td width="130" height="130">'.$array['campo'].'</td>';
// como sua tabela tera 5 resultados
// verificamos se variavel $td tem valor 5
if($td==5){
// se tiver fecha a linha e abre outra
echo '
</tr>
<tr>';
// e entao zeramos $td para que a contagem recomeçe
$td=0;
}
}
?>
</tr>
</table>
<?php
}

echo "<hr><br>";

$anterior = $pag-1;
if ($anterior<1)
echo "Anterior - ";
else
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$anterior\">Anterior</a> - ";

for($i=1; $i<$pag; $i++)
if($i>=$pag-$link_p_pag)
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a> - ";

echo "<b>$pag</b>";

for($i=$pag+1; $i<=$num_total_paginas; $i++)
if($i<=$pag+$link_p_pag)
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a>";

$proxima = $pag+1;
if ($proxima>$num_total_paginas)
echo " - Próxima";
else
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$proxima\">Próxima</a>";

?>

mas nao tah dando certo...

sei que tem coisa errada, por exemplo neste trecho:

 

while ($row = mysql_fetch_assoc($result))
{
  $id = $row['id'];
  $nome = $row['nome'];
?>  
<table>
<tr>
<?php
// a variavel $td e definida com valor 0
$td = 0;
while($array=mysql_fetch_array($sql)){
$td++;
echo '
<td width="130" height="130">'.$array['campo'].'</td>';

mas eh que eu nao to conseguindo um caminho... o que devo colocar em 'campo' no seguinte trecho <td width="130" height="130">'.$array['campo'].'</td>'; ???????

 

e os dois whiles??? como fazer com eles???

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os dois exemplos foram bastante explicativos, deu pra clarear a logica do incremento na criacao das tabelas.. muito obrigado pela atencao de vcs...

 

mas eh que me passaram hj que para as imagens nao ha necessidade de paginacao, apenas para os textos mesmo... falha de comunicacao do designer cmg...

 

mas agradeço a ajuda de vcs mais uma vez. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

vlw.

 

Abçs.

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.