Ir para conteúdo

POWERED BY:

Arquivado

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

victor.gabrielli

(iniciantes) for each que quebra com a tabela

Recommended Posts

Oi, eu estava fazendo uma tabela que puxa dados de um banco de dados. Porem eu notei que tenho quebrar a tabela qd tiver 5 colunas.

Ou seja, tenho que colocar um tr a cada 5... Eu iria usar o for each, mas como completar a tabela com a quebra ? tAlguma dica ou solução viavel ? thanks :D

 

aqui ta o codigo:


<?php 
$query = mysql_query("SELECT id,nome FROM login WHERE ativo = '1' ");
$row = mysql_fetch_array($query); 

//foreach {          ????????????????????????        }

?>


como a tabela deveria ficar : 
<table style="border-spacing:10px;position:relative;left:-15px;">

<tr>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
</tr>
<tr>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
<td><img src="layout\images\perfil\$id.jpg" width="128,25" height="212">$nome</td>
</tr>


 <!--.... e assim por diante -->



</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe inúmeras formas. Mas, pelo o que eu percebi, você quer exibir 5 imagens por linha. Eu removeria a tabela e trabalharia com elementos em block. Você não precisaria se preocupar em quebrar a linha no momento certo e também não se preocuparia em ajustar a última linha da tabela quando não houver 5 colunas (colspan).

 

Utilize um bloco, que pode ser uma div, com float: left e tamanho e altura desejados, ele irá se adequar um ao lado do outro. Quando não houver mais espaço, criará uma nova linha.

 

Além de ser mais fácil de trabalhar, é mais fácil de tornar o site responsivo.

 

Por outro lado, na linha de tabelas, o que eu acho mais simples e fácil, é utilizar array com implode. Não gostaria de dar a resposta pronta, mas eu considero simples:

<table>
   <php 
   $colQuantity = 5;
   $tableRow = [];
   foreach($result as $row) {
      $tableRow[] = sprintf('<td>%s</td>' , $row['nome']);
  
      if(count($tableRow) == $colQuantity) {
          echo '<tr>'.implode('' , $tableRow).'</tr>';

          $tableRow = [];
      }
   }

   if(($count = count($tableRow)) > 0) {
       echo '<tr>'.implode('' , $tableRow).'<td colspan="'.($colQuantity - $count).'"></tr></tr>';
      
   } ?>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, fiz como você disse e ficou bem melhor assim com div e class css ;D. Porem meu foreach não funciona.

Sabe me explicar o que eu fiz de errado?

<?php  
$query = mysql_query("SELECT id, nome FROM login WHERE ativo = 1 "); 
$row = mysql_fetch_array($query); 
foreach ($query as $row){ 
echo "<div class='lista'><img src='layout\images\vitrine\\". $row["id"] .".jpg' width='128,25' height='212'><br>
". $row["nome"] ."</div> ";


}
?>

Outra duvida, nessas duas linhas que eu uso para pegar algo do mysql.

$query = mysql_query("SELECT id, nome FROM login WHERE ativo = 1 ");

Essa linha vai armazenar na $query a "lista" de todas as colunas e linhas onde tiver ativo = 1 correto?

 

Então, porque precisa usar essa linha ;

$row = mysql_fetch_array($query);

Sendo que ja esta em arranjo ? thanks

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimenta assim:

$result = mysql_fetch_array($query); 
while ($row = mysql_fetch_assoc($result)) { 
  echo "<div class='lista'><img src='layout\images\vitrine\\". $row["id"] .".jpg' width='128,25' height='212'><br>
". $row["nome"] ."</div> ";
}

O objecto $query, nesse caso, vai guardar o result set, ou seja, os dados devolvidos pela execução da consulta.

Depois precisas de percorrer o result set para ter acesso aos dados, daí teres de "extrair" a informação linha a linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O codigo esta assim:

<?php 

$query = mysql_query("SELECT id, nome FROM login WHERE ativo = 1 "); 
$result = mysql_fetch_array($query); 
while ($row = mysql_fetch_assoc($result)) { 
echo "<div class='lista'><img src='layout\images\vitrine\\". $row["id"] .".jpg' width='128,25' height='212'><br>
". $row["nome"] ."</div> ";
  
  }



?>

ola.png

 

Não faz nada. E da esse erro.

Erro: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, array given in C:\Users\Victor\Dropbox\www\perfil.php on line 43

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fetch_assoc faz algo similar a fetch_array, retornam a linha em um array. Mas ambos necessitam de um resource. É só remover o fetch_array e passar o resource como parâmetro.

$query = mysql_query("SELECT id, nome FROM login WHERE ativo = 1 ");
while ($row = mysql_fetch_assoc($query)) { 
Outro detalhe, não utilize mysql_*. São funções obsoletas, utilize PDO ou MySQLi.

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.