Jump to content
manolegal

[Resolvido] Criar Tabela Dinâmica com dados vindos do BD

Recommended Posts

Olá amigos.

Com base em um exemplo, criei uma tabela dinâmica com dados vindos do banco de dados. As colunas estão sendo criadas normalmente de acordo com a tabela existente no BD.

Os dados estão vindos corretamente.

O problema está na exibição. Supondo que sejam retornados 10 linhas de dados, ao invés de listar somente estas 10 linhas, está listando da seguinte forma:

id_estado	sigla_estado	estado	
1	AC	Acre	
id_estado	sigla_estado	estado	
1	AC	Acre	
2	AL	Alagoas	
id_estado	sigla_estado	estado	
1	AC	Acre	
2	AL	Alagoas	
3	AP	Amapá	

Os cabeçalhos estão sendo repetidos também, ao invés de aparecerem somente uma única vez.

 

Meu código:

$Sql = "SELECT * FROM.....

$rsRegistro = executa($Sql);
$numCampos = pg_num_fields($rsRegistro);

for($i = 0;$i<$numCampos; $i++){//Pega o nome dos campos
    $Campos[] = pg_field_name($rsRegistro,$i);
}

//Montando o cabeçalho da tabela
$tabela = '<table border="1"><tr>';

for($i = 0;$i < $numCampos; $i++){
    $tabela .= '<th>'.$Campos[$i].'</th>';
}

//Montando o corpo da tabela
$tabela .= '<tbody>';
while($r = pg_fetch_array($rsRegistro)){
    $tabela .= '<tr>';
    for($i = 0;$i < $numCampos; $i++){
        $tabela .= '<td>'.$r[$Campos[$i]].'</td>';
    }
    $tabela .= '</tr>';

    echo $tabela;

}
exit;

//Finalizando a tabela
$tabela .= '</tbody></tabela>';

//Imprimindo a tabela
echo $tabela;   

 

Share this post


Link to post
Share on other sites

Você está concatenando a $tabela e está jogando ela dentro do LAÇO FOR. a estrutura inicial da tabela não precisa ficar dentro do laço de repetição, caso contrário o resultado é a repetição de toda estrutura em cada registro.

  • +1 1

Share this post


Link to post
Share on other sites

Alaerte, obrigado pela ajuda. Tentei de várias formas, porém não consegui alterar a exibição. Não tenho muito experiência com laço for. Se puder detalhar o problema lhe agradeço.

Share this post


Link to post
Share on other sites

Problema resolvido. Fiz da seguinte forma:

//Montando o cabeçalho da tabela
echo '<table border="1"><tr>';   
 
for($i = 0;$i<$numCampos; $i++){ // Pega o nome dos campos
    $Campos[] = pg_field_name($rsRegistro,$i);
}

for($i = 0;$i < $numCampos; $i++){
    echo '<th>'.$Campos[$i].'</th>';   
}

// Montando o corpo da tabela
echo '<tbody>';

while($r = pg_fetch_array($rsRegistro)){
    echo '<tr>';

    for($i = 0;$i < $numCampos; $i++){
        echo '<td>'.$r[$Campos[$i]].'</td>';
    }
    echo '</tr>';

}
exit;

// Finalizando a tabela
echo '</tbody></tabela>';

Obrigado pela ajuda.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Gemenson Miranda
      Oi pessoal, estou com um problema na minha hospedagem LInux do Godaddy, publiquei meu site, fiz o apontamento correto do banco de dados, mas quando acesso a URL o site me exibe HTTP ERROR 500 exibe realizei a configuração do arquivo .htaccess, alterei as permissões para (755), nada disso resolve... A questão e que sempre que comento as informações de apontamento do banco de dados no arquivo index.php o site carrega normalmente, porem sem conexão com o bando mysql, o que me faz pensar que o erro pode esta relacionado ao banco mysql, porem não consigo visualizar o erro por que a tela fica toda branca e não retorna nada, como resolver esse erro ou ao menos exibir qual erro causa ele?? agradeço!
    • By TheRonaldoStar
      Oii, fala ae pessoal!!
      Alguém pode me ajudar com uma coisa por favor?;
      Seguinte!, eu anteriormente fiz uma pergunta aqui no fórum recorrente a isso, mas eu conseguir uma solução parcial.
      Que era, fazer uma listagem de todos os cadastros e fazer a junção dos cadastros com uma coluna igual, Ou seja existem duas colunas [DE e Para], que recebem o id de quem está recebendo ou que está enviando a mensagem, eu conseguir fazer a tal listagem por grupo mas o problema que estou tendo é: que so faz o agrupamento de as colunas contiver o id por ex: [De = "1" e Para ="2"].
      Atualmente estou usando a codificação deste Jeito:
       
      $sql_2 = $db -> prepare("SELECT * FROM privado WHERE (Para = '$Meu_id') Or (De = '$Meu_id') GROUP BY Para, De DESC"); $sql_2 -> execute(); Esta consulta como pode ver ele busca todos os cadastros que tenha o meu ID ou seja do usuário online!, Após a consulta ele vei obter em um "while" somente o [ Id_De eo Id_Para ] desta forma:
      while($dados_2 = $sql_2 -> fetch(PDO::FETCH_OBJ)){ $Id_De = ($dados_2 -> De); $Id_Para = ($dados_2 -> Para); } Mas em fim eu gostaria de saber como mostrar somente um resultado ou seja o ultimo resultado que tiver o meu ID em ambas colunas [ Id_De ou Id_Para ].
      Antes de vocês me recomendar a função DESC LIMIT 'valor' saiba eu quero que liste todos os usuários que enviou ou recebeu minha mensagem não somente 1 ou seja se eu mandar um mensagem para o usuário 2 e ele me retornar uma mensagem vai mostrar somente o ultimo registro que tenha o meu ID e o id dele.
       
      Atenciosamente,
      ~Ronaldo
       
    • By TheRonaldoStar
      Oi, mais cedo eu fiz um post aqui no site mas um pouco longo creio eu que e mais fácio eu fazer uma pergunta mais direta.
      A pergunta é:
      Como posso fazer agrupamentos de uma tabela através de dois campos cujo os valores são =, mesmo que esteja invertidos?
      EX: [DE = "1"], [PARA = "2"].
      E fazer o agrupamento ou só mostrar o ultimo cadastro mesmo que eles estejam invertidos desta forma?
      EX: [DE = "2"], [PARA = "1"].
       
      Acho que agora com este post fui mais claro, Alguém pode me ajudar por favor??.
      Atenciosamente,
      ~Ronaldo
    • By HigorCrds
      Bom, o que eu consegui até agora foi fazer com que, ao usuário clicar em algum dos botões de paginação (1, 2, 3...) o PHP guarde uma SESSION com o número da página correspondente.
      Segue o código:
       
      <!-- BOTÃO COM O NÚMERO DA PÁGINA --> <button onclick="mudaVar(<?php echo $i; ?>);"> <?php echo $i; ?> </button> <!-- FUNÇÃO PARA GUARDAR SESSION PG --> function mudaVar(valor) { $.ajax({ url:'sessions.php?valor='+valor }); } // GUARDA SESSION PG if(isset($_GET['valor'])){ $_SESSION['pg'] = $_GET['valor']; } Até aí tudo bem, só que o problema é que a SESSION não é alterada naquele momento, só quando eu atualizo a página.
      Como corrigir isso?
    • By Carcleo
      A ideia:
       
      toda e entrada no site, seja com link direto do tipo:
       
      www.site.com.br/pasta1/pasta2/arquivo.php  
      ou normal url amigável
       
      www.site.com.br/categoria/tipo  
      tudo queria que redirecionasse para o index.php da raiz do site.
       
      E que, caso o arquivo ou pasta NÃO existisse, abrisse normalmente a pagina 404.php
       
       
      Tentei de tres formas mas nenhuma dá certo.
       
      Primeira forma
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 Segunda forma:
      Options +FollowSymLinks DirectorySlash On RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} \.php$ RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?request=$1 [L] Terceira forma:
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^(.*)$ index.php?page=$1 Problemas:
       
      A) Quando acesso a url diretamente não está redirecionando para o index.
      B) Quando falo que é para redirecionar todos os arquivos ele não me dá os parêmetros. 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.