Ir para conteúdo

POWERED BY:

Arquivado

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

ajsantos

Montar tabela dinamica com php

Recommended Posts

Olá, estou tentando montar uma pagina de relatório em php usando dados do banco de dados mas nao estou conseguindo dispor os dados na forma horizontal de forma correta.

a lógica é a seguinte:

os campos de pesquisa são: 

tvBIi.png

 

data inicial | data final | estações (pode ser 1 ou várias)

essa pesquisa deverá retornar hora, nome da estação e valor da estação

O numero de linhas e colunas vai depender do resultado da pesquisa

eu gostaria que mostrasse da seguinte forma:

t1us7.png

 

Até o momento fiz um while que me mostra os nomes das estações na horizontal

$stm = $conexao->prepare("SELECT * FROM tb_estacoes where id_estacao in($estacoes)"); 
$stm->execute(); 
$count = $stm->rowCount(); 
while($re = $stm->fetchObject()){ 
echo '<td>'.$re->estacao.'</td>';
}

Agora preciso completar as celulas com os dados de horario e valor para cada estacao. tentei fazer usando for:

$select = $conexao->prepare("SELECT a.*, b.id_estacao, b.estacao FROM tb_dados a, tb_estacoes b where a.id_estacao in($estacoes) AND a.dt_medicao BETWEEN '$dtinicio' AND '$dtfim' AND a.id_estacao = b.id_estacao"); 
$select->execute(); 
$i=0; 
while($number = $select->fetchObject()){ 
echo "<td>" .$number->horario. "</td>"; 
for ($i = 0; $i >= $count; ++$i) { 
echo "</tr><tr>"; $
i = 0; 
  }
echo "<td>" .$number->valorEstacao. "</td>"; }

Desse jeito ele mostra os dados corridos (não separa por estacao) entao os valores de 1 estação, ficam distribuidos em todas as colunas, o que esta errado..
não se se tenho que fazer um select pra cada estacao, ou trabalhar com arrays..

se alguem tiver alguma ideia de como posso fazer isso, eu agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, marsolim disse:

ve se isso ajuda

 

Oi, obrigado por responder.

 

fiz uma adaptação usando esse tópico como exemplo:

 

Meu código ficou assim:
 

//Consulta quantas estações foram pesquisadas
$stm = $conexao->prepare("SELECT * FROM tb_estacoes where id_estacao in($estacoes)");
$stm->execute();
$estacao=$stm->fetchAll(PDO::FETCH_OBJ);

//Consulta quantos horarios existem no periodo indicado
$select = $conexao->prepare("SELECT * FROM tb_dados where dt_medicao BETWEEN '$dtinicio' AND '$dtfim' GROUP by horario");
$select->execute();
$number=$select->fetchAll(PDO::FETCH_OBJ);

<table class="table table-bordered">
<thead>
 <th>HORÁRIO</th>
<?php 
//Mostra o nome da estação no cabeçalho da coluna
  foreach($estacao as $key){ ?>
<th><?php echo $key->estacao;?></th>
  <?php } ?>
 </thead>
 <tbody>                                     
<?php  foreach($number as $grupo){
  $hora=$grupo->horario;
  //Consulta os valores para cada estação linkando com o horario
  $select = $conexao->prepare("SELECT a.*, b.id_estacao, b.estacao FROM tb_dados a, tb_estacoes b where a.id_estacao in($estacoes) AND a.dt_medicao BETWEEN '$dtinicio' AND '$dtfim' AND a.horario in('$hora') AND a.id_estacao = b.id_estacao order by a.id_estacao");
$select->execute();
$dados=$select->fetchAll(PDO::FETCH_OBJ);
?>
 <tr>
 <td><?php echo $grupo->horario ?></td>
  <?php  foreach($dados as $valor){ ?>
  <td><?php echo $valor->valorEstacao; ?></td>
  <?php } ?>
 </tr>
 <?php } ?>
</tbody>
</table>

 

Deste jeito até funciona, o problema agora é que não consigo pular a coluna quando a estação não tenha valor em um determinado horario, observe na imagem:

 

TELA14.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

dizer por fora não é fácil mas acredito que precisa tratar a coisa pra botar cada uma no seu lugar. acredito que a montagem de uma tabela é coisa do tipo

$tab = '<table><tr><th>NOME</th><th>IDADE</th></tr>';
    while(..){
        $tab .= '<tr><td>'. $row['nome'] . '</td><td>' . $row['idade'] . '</td></tr>';
    }
$tab .= '</table>';

echo $tab;

 

só um exemplo pra montar a tabela dentro dum laço com os dados vindo banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Tudo bem pessoal?
       
      No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
      Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
      O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
       
      $banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
      $banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
      while($busca= mysqli_fetch_array($banner)){
          print $busca['cidade'].'<br>';
      };
       
      Alguém consegue me ajudar?
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.