0

como fazer paginação e apresentar em 3 colunas?

criado por alessandro em 26/07/2010 12:00pm
pessoal estou precisando de ajuda aqui no meu codigo e programo a pouco tempo e qeria saber como é q eu faço.
abaixo vai o codigo q eu fiz só o problema é que ele lista só em uma coluna.

<?php
  include("titulo.php");
 ?>
<p>&nbsp;</p>
<?php
 
include("conecta.php");
 $codigo=$_GET["cod"];
if(isset($_GET["pag"]))
  $pag=$$_GET["pag"];
else
 if(!isset($pag))
  $pag=1;
  $quant=10;
  $inicio=($pag *$quant)-$quant;
  $sql="select * from produtos where cod_grupo = $codigo order by descricão limit $inicio,$quant";
$dados = mysql_query($sql);
echo"
    <table width=60%>";

//Percorre todas as linhas retornadas na consulta
  while($linha = mysql_fetch_array($dados)) {
$codigo = $linha["codigo"];
$descricao = $linha["descricao"];
$preco = $linha["preco"];
   //pega as fotos gravadas com o numero de registro da pasta fotos
  $foto = "fotos/".$codigo.".jpg";

    echo"
       <tr>
          <td><img src=$foto width=70 heigth=95></td>
       <tr/>
       <tr>
          <td>$descricao-R$$preco</td>
       </tr>";
      }
   echo"</table>";
  
   $sql2 = "select codigo from produtos";
   $dados2 = mysql_query($sql2);
   $total = mysql_num_rows($dados);

  //ceil:arredonda para cima
$paginas = ceil($total/$quant);

   for($i = 1,$i<=$paginas;$i++){
       if ($i == $pag){
         echo"[i]&nbsp;";
         }
       else{
          echo "<a href='pesquisa2.php?pag=$i&cod=$cod_grupo'>";
          echo "$i</a>&nsbp;&nsbp;&nsbp;";
          
//fecha a conexão
  mysql_close($conecta);
?>
</select>
</form>
</fielset>
</div>
</body>
</html>
 

Lista de Respostas:

0
26/07/2010 9:45pm
(~14 anos atrás)
Alessandro, seu código está com alguns problemas:

#1 A indentação está atrapalhada. Sugiro que use abre/fecha chaves nas instruções condicionais ou de repetição.

#2 A linha a segir tem um cifrão ($) sobrando:
  $pag=$$_GET["pag"];
Deveria ser:
  $pag = $_GET['pag'];

#3 A linha a seguir está com "," no lugar do ";":
  for($i = 1,$i<=$paginas;$i++){
Deveria ser:
for ($i = 1; $i <= $paginas; $i++) {

Além disso, o "for" não teve sua chave fechada.

#4 Aparentemente o código abaixo devia usar $dados2 ao invés de $dados:
$dados2 = mysql_query($sql2);
$total = mysql_num_rows($dados);
Mudança:
$dados2 = mysql_query($sql2);
$total = mysql_num_rows($dados2);

Enfim, o código precisa de uma boa ajeitada:
<?php
include("titulo.php");
include("conecta.php");

// Configuracoes
$itens_pagina = 10;

// Obtendo o codigo do grupo e a pagina corrente
$cod_grupo = (int)$_GET['cod'];
$pagina    = isset($_GET['pag']) ? (int)$_GET['pag'] : 1;

// Obter total de produtos e total de paginas
$sql = 'SELECT COUNT(*) AS total FROM produtos WHERE cod_grupo = {$cod_grupo}';
$result = mysql_query($sql_total);
$obj = mysql_fetch_object($result);
$total_produtos = $obj->total;

mysql_free_result($result);
unset($sql, $result, $obj);

$total_paginas  = ceil($total_produtos / $itens_pagina);

// Obter os produtos
$inicio = ($pagina * $itens_pagina) - $itens_pagina;
$sql = "SELECT * FROM produtos WHERE cod_grupo = {$codigo} ORDER BY descricão LIMIT {$inicio}, {$itens_pagina}";
$result = mysql_query($sql);

// Exibindo a tabela de produtos
echo '<table width="60%">';
while ($obj = mysql_fetch_object($result)):
echo <<<HTML
<tr>
  <td><img src="fotos/{$obj->codigo}.jpg" width="70" heigth="95" /></td>
  <td>{$obj->descricao}</td>
  <td>R${$obj->preco}</td>
<tr/>
HTML;
endwhile;
echo '</table>';

mysql_free_result($result);
unset($sql, $result, $obj);

// Montar links para as paginas  
$links = array();
for ($i = 1; $i <= $total_paginas; $i++) {
   if ($i == $pagina) {
       $links[] = '<span>['.$i.']</span>';
   } else {
       $links[] = "<a href=\"pesquisa2.php?pag={$i}&amp;cod={$cod_grupo}\">{$i}</a>";
   }
}

// Exibir links para as paginas
echo '<p>'.implode(' ', $links).'</p>';
          
// Fechar a conexao
mysql_close($conecta);
?>
</body>
</html>

Veja que tem muitas coisas que podem ser feitas de outra forma

0
07/09/2010 10:02pm
(~14 anos atrás)
Victor Mangia respondeu:
Postei um script que acho que atenda a suas necessidades

http://www.phpbrasil.com/script/AU_1AtGNbDX/exibir-resultados-em-colunas-com-paginacao-mysql

abraço

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)