• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

revolucao

Tabelas Dinamicas

6 mensagens neste tópico

Boas

Estou com um pouco de dificuldade em criar uma tabela dinâmica com informações vindas de uma base de dados, será que alguém me pode ajudar ?

aqui vai o código:

...

$sql_t = mysql_query("SELECT id,des,im FROM sala"); 
$row=mysql_fetch_row($sql_t);
while($row4=mysql_fetch_row($sql_t))
{	
    $linhas=$row4[0]; // conta o numero de linhas
        }	
if($sql_t)
{
	$colunas = 5; // numero estático

        for ($i=0;$i<$linhas;$i++)
	{	
			echo "<tr>\\n";
			for($j=0; $j<$colunas; $j++)
			{
				if ($i % 2)
			        {
					$bgcolor = "#A8A8A8";
				}
				else
				{
					$bgcolor="#CCCCCC";
				}
			       if($j==0){echo " <td bgcolor=$bgcolor><b> $row[0] </td>\\n";}
			       if($j==1){echo " <td bgcolor=$bgcolor><b> $row[1] </td>\\n";}
			       if($j==2){echo " <td bgcolor=$bgcolor><b> $row[2] </td>\\n";}
			}
			echo "</tr>\\n";
	        }
                 }
         }

o código encima descrito esta a funcionar, mas agora eu queria substituir o primeiro for , o das linhas, por uma estroctura       

                                         while($row4=mysql_fetch_row($sql_t))

                  {

e deste modo aceder as posições de cada row4 (variavel),

o que se passa é que eu não consigo aceder a essas variaveis com esta estroctura while, será que existe uma outra forma mais facil de resolver o problema, ou será que algum sabe de uma montagem diferente do while que me possa ajudar ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, tens algumas coisas que podes melhorar no teu código:

Para contar as linhas, usa a função mysql_num_rows(), porque assim deixas de ter a "vantagem" de percorrer as linhas com o ciclo while. Isto resolve o problema da estrutura a utilizar.

Depois, outro erro grave, é no segundo for, o de dentro, nestas linhas:

if($j==0){echo " <td bgcolor=$bgcolor><b> $row[0] </td>\\n";}
if($j==1){echo " <td bgcolor=$bgcolor><b> $row[1] </td>\\n";}
if($j==2){echo " <td bgcolor=$bgcolor><b> $row[2] </td>\\n";}

Isto é capaz de ser prático para 3 colunas, mas para 10 ou 20 ou mais, já fica um bocado desarrumado. Talvez o teu problema esteja em por a variável $j como índice dentro do array.

Bom, no fim de contas sugiro assim:

$sql_t = mysql_query("SELECT id,des,im FROM sala");
$linhas = mysql_num_rows($sql_t);     //conta o numero de linhas
$colunas = mysql_num_fields($sql_t);  //conta o numero de colunas

if ($linhas < 0) {
   while ($row = mysql_fetch_row($sql_t)) {
      echo "<tr>\n";
      
      for ($i = 0; $i < $colunas; $i++) {
         // forma reduzida do if, ideal para estas situações
         // ( teste ? valor se verdadeiro : valor se falso)
         $bgcolor = (i % 2 ? "#A8A8A8" : "#CCCCCC");

         echo " <td bgcolor=$bgcolor><b> {$row[$i]} </b></td>\n";
      }
      
      echo "</tr>\n";
   }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Versão mais optimizada :

$sql_t = mysql_query("SELECT id,des,im FROM sala");

// conta o numero de registos na base de dados
$num = mysql_num_rows($sql_t);

$i = 1;

while ($row=mysql_fetch_row($sql_t))
{	
echo "<tr>\\n";

$i % 2 > 0 ? $bgcolor = "#A8A8A8" : $bgcolor="#CCCCCC";

echo " <td bgcolor=".$bgcolor>."<b> ".$row[0]." </td>\\n";
echo " <td bgcolor=".$bgcolor>."<b> ".$row[1]." </td>\\n";
echo " <td bgcolor=".$bgcolor>."<b> ".$row[2]." </td>\\n";

echo "</tr>\\n";

$i++;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda podia argumentar que a minha versão está mais "copy/pasteable", por contar dinamicamente o número de colunas  :) , mas para o caso, a solução do yoda.pt é mais prática. O que é essencial é que aprendas alguns dos pequenos erros que cometeste aí, e que uses e abuses do manual do PHP em http://www.php.net

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado pessoal,

Eu sou novo por estas andanças e ainda só conheço superficialmente a linguagem php, e conto com a ajuda do pessoal do portugal-a-programar para melhorar a minha forma de programar....

obrigado pelas dicas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora