Ir para conteúdo

Arquivado

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

TeixeiraRamos

tabel registros horizontal e vertical

Recommended Posts

Vou tentar explicar o que já estou tentando há dias e não estou tendo êxito.

Os dados são hipotéticos pois do contrário ficaria mais difícil para entender.

Tenho um banco de dados em MySQL, funcionando corretamente, a pagina em ASP.

Meu problema arrumar os registros na tabela não é problema com ASP ou MySQL.

 

Vamos supor um campo chamado de "mes_calendario" que gera os registros  Jan,  Fev,  Mar, ... Dez

Em seguida tem os campos chamados:

setor_a

setor_b

setor_c

setor_d

setor_e

setor_f

setor_g

setor_h 

setor_i

setor_j

setor_k

setor_l

setor_m

setor_n

setor_o

Cada um setor acima pode conter um valor de 0 a n. em um determinado dia de um mês.

A tabela está em ordem de mês.

Quando uso a SQL:

SUM(setor_a) AS t_setor_a

Ele soma todos os valores  "setor_a" daquele mês que foi cadastrado e assim sucessivamente para os os outros setores.

Considerando que os setores estão na linha horizontal da tabela, esteticamente fica muito ruim e inviabilizar a criação da tabela.

Observe esse exemplo que não é viável considerando a quantidade de dados horizontalmente: 

| Mês/Setor | setor_a | setor_b | setor_c | ............................................................

|      Jan        |     1        |     0        |     2        |.............................................................

|      Fev        |      0       |     5        |     7        |.............................................................

|      Mar       |      0       |     2        |   10        |............................................................

|      Abr        |      8       |     5        |     4        |...............................................

Essa estrutura da tabela que abre com todos os registros, mas não é viável.

<table width="100%" border="1" cellpadding="1" cellspacing="0">
       	<thead>
       		<tr bgcolor="#999999" >
       			<td>Mês/Setor</td>
       			<td>Setor_a</td>
       			<td>Setor_b</td>
       			<td>Setor_c</td>
              .
              .
              .
              .
              .
              .
              .
              .
              .
              .
       		<tr>	
  	
  	     
     <% 
     if not rs.eof then
     	do while not rs.eof	       		
     %>  	       		
       	<tr>
       		<td><%=rs("mes_calendario")%></td>
       		<td><%=rs("t_setor_a")%></td>
       		<td><%=rs("t_setor_b")%></td>
       		<td><%=rs("t_setor_c")%></td>
              .
              .
              .
              .
              .
              .
              .
              .
              .
              .
              .
              .
              .
              .
       	</tr>
     <% 
     	rs.MoveNext
     	Loop
          end if	
     %> 
      

 

 

Acontece que não é isso que desejo, tenho que inverter os registros mostrados na tabela, ou seja, na vertical ficar  "Setor/Mês" e na horizontal os meses, gerando a tabela:

| Setor/Mês | Jan | Fev | Mar | Abr |

|    setor_a   |     1  |   0   |    0   |   8   |

|    setor_b   |    0   |  5    |   2    |   5   |

|    setor_c   |    2   |  7    |  10   |   4   |

 

Com isso a tabela não ficaria na horizontal tão grande, ou seja, com uma coluna com título "Setor/Mês" mais 12 colunas, total 13 colunas ao invés de 15 conforme meu exemplo, mas na realidade meu banco tem mais "setores" sendo inviável construir horizontalmente. 

Observação: Não desejaria dividir a tabela em duas.

 

Como estou criando e não estou acertando

 

 

<table border="1">
 <thead>
<%
	If not rsteste.eof then
		do while not rsteste.eof	
%>
<tr>
  <th>Setor/Mês</th>
  	  <td><%=rsteste("mes_calendario")%></td>
</tr>

<tr>	
  <th>Setor a</th>
     <td><%=rsteste("t_setor_a")%></td>
  <th>Setor b</th>	      
     <td><%=rsteste("t_setor_b")%></td>
  <th>Setor c</th>	      
     <td><%=rsteste("t_setor_c")%></td> 	  
</tr>	
<%
   rsteste.MoveNext
    Loop
   end if 	
%>
   
  </thead>
</table>

Desculpe o tamanho da postagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os meses não são hipotéticos certo? Você realmente terá 12 colunas definidas?

Esses setores (setor_a, setor_b, setor_c...) que no caso vão ser linhas, tem uma quantidade definida ou são variáveis? O nome de cada setor é fixo ou também é variável?

Dependendo das suas respostas, poderia sugerir que armazenasse o resultado do bd em um array e utilizasse um contador para popular a tabela.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os meses são fixos as quantidades, conforme informei, podem variar de 1 a n números as produções dentro dos setores.

Vamos imaginar que esses sejam a produção em um dia de uma setor_a ou setor_b de uma fábrica.

A tabela abre normalmente porém esteticamente não fica legal ter na linha horizontal umas 20 colunas.

Desculpe, mas não gostaria de criar array, pois o banco já faz tudo.

Gostaria de vencer esse obstáculo de inverter o que tenho na horizontal para vertical.

De qualquer forma obrigado pela atenção e sugestão.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim a quantidade de setores e o nome são fixos.

Vamos supor que temos que controlar a produção de 20 setores de uma fabrica.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meio complicado o que quer... Mas com números de colunas e linhas definido, pode encontrar um caminho...

A sugestão do Array foi simplesmente para facilitar seu trabalho além de economizar recursos do servidor, evitando muitas conexões e acessos ao banco, já que todas as informações de apenas uma consulta estariam no Array.

Depois para imprimir os registros, teria que ser uma espécie de loop sobre loop com algum contador para criar as TDs, já que essas serão criadas dinamicamente, não tenho receita pronta, mas a lógica seria essa.

 

Outra opção que me veio a mente rapidamente e que pode te atender [gambi detected]:

Você cria a tabela já com toda a estrutura de colunas e linhas, defina um tamanho e altura fixo para as células (td) e preencha os títulos horizontais (mês) e verticais (setores);

As células que serão populadas com valores do banco, mescla tudo (linhas e colunas) transformando em apenas uma grande célula (td);

Dentro desta grande célula, imprima o resultado do banco em uma lista (ul) e não em tabela;

Por padrão, a lista de itens (li) serão empilhados (exatamente como quer), então o que anteriormente seria uma linha de tabela horizontal, agora é um bloco de lista vertical;

Para que os blocos (ul) representando colunas fiquem lado a lado, defina um css como "float:left";

Para ficar tudo com a cara da tabela, deixe o bloco (ul) alinhado ao top e left zerando margin e padding e defina o tamanho dos itens (li) com o mesmo tamanho e altura da célula da tabela (títulos) e acrescente uma borda idem tabela.

Vai ficar tudo parecendo uma tabela única, só não sei se te atende (relatórios, impressão,etc...)

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, meu amigo,

Eu sei que seria complicado até para explicar.

Mas sabe o que veio depois que postei?

Você sabe que em SQL usar "Views" é muito bom e não tem contra indicações, conf. o livro de "Luis Damas SQL - Structured Query Language" - "Relações virtuais (views) - que não têm existência própria, pois derivam e estão associadas às Relações Base com objetivo de proporcionar a criação de "Janelas" parciais sobre o esquema de banco de dados."

Com isso, dentro do exemplo meu, fiz o seguinte.

a) criei uma views pedindo para contar e somar o necessário;

b) depois fui fazendo o seguinte na SQL:

 

SUM(IF((tb_x.mes_calendario = 'Jan'),
tb_x.setor_a,0)) AS t_setor_a_jan,

SUM(IF((tb_x.mes_calendario = 'Fev'),
tb_x.setor_a,0)) AS t_setor_a_fev,

SUM(IF((tb_x.mes_calendario = 'Mar'),
tb_x.setor_a,0)) AS t_setor_a_mar,
.
.
.
SUM(IF((tb_x.mes_calendario = 'Dez'),
tb_x.setor.setor_a,0)) AS t_setor_a_dez

FROM......
.
.
.

Com isso na horizontal ficam só os meses de Jan a Dez e abaixo na vertical vou indicando os "t_setor_a_jan" ....

A tabela na horizontal fica com 13 colunas e na vertical umas 32 linhas dos setores.

Valeu!!!

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por babylon
      Olá galera tudo bem?
      Deixa eu perguntar, estava mexendo no meu site e queria adicionar em html essa tabela porem esta dando erro pois fica assim:
       

      Porem gostaria que ficasse assim:

      Segue o código da tabela:
      <center><table border="0">
          <tr>
      <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Bicicleta<br> <font color="#0092df">..</font>Track Bikes<br> <font color="#0092df">..</font>Aro 29 TKS</b></a></span><br><br><font size="5"><center><span style="background-color: #A1CD44">DE:</span></font> <br><font size="5"><s>R$ 1.999,99</center></font></s> </td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itembicicleta.jpg"><br><font size="5"><center><span style="background-color: #A1CD44">COM - 60%:</span></font> <br><font size="5">1.199,99</font></center></a></td>
             <td><font color="#ffffff">....</font></td>
              <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Monitor 24"<br> <font color="#0092df">..</font>Samsung<font color="#0092df">aa.aa</font><br> <font color="#0092df">..</font>1ms 144hz</b></a></span></center></td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itemmonitor.jpg"></a></td>
          </tr>
          </table></center>
      O que estaria errado, pois não sei como colocar nessa tabela outro fundo de outra cor, veja que usei td bgcolor="#0092df" para o azul escuro mas não sei como usaria pro "#e4f1fb" para o fundo ficar de azul claro em baixo bem como não ficou correto em altura o "DE:" com o "COM - 60%:".
      Bom é isso, obg.


    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por MarceloEBM
      Baixei a tabela do melhorenvio e adaptei para o formato da webcontinental que eles disponibilizam, enviei para o gerente de conta e ele disse que rodou, não atualizou e não tem nenhuma mensagem de erro pra me passar.
       
      Posso estar fazendo errado, alguém tem alguma experiencia com esta tabela de frete?
    • Por Jack Oliveira
      Ola pessoal boa noite preciso salvar umas coisas no banco de dados usando ao clicar no botão que esteja aparecendo sem que recarregue a página
       
      Seria isso aqui
       
      HTML do botão
      <div class="btn-group"> <a href="javascript:void(0)" class="rate-btn toggole-contnet"> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> Sim </a> <a href="javascript:void(0)" class="rate-btn toggole-contnet"> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> Não </a> </div> No PHP para salvar no banco esta da seguinte forma.
      <?php if(isset($_POST['AvaliComentario'])) { // Se o cookie ainda não foi setado $cookie = isset($_COOKIE["avali_comentario_".$Comentario['id']]) ? $_COOKIE["avali_comentario_".$Comentario['id']] : null; if (!isset($cookie)) { $Adicionar = array( 'comentario_id' => $Comentario['id'], 'up' => post('up'), 'down' => post('down') ); $Query = DBCreate('avali_comentario', $Adicionar); // Se for um sucesso a query if ($Query) { // Seta um cookie setcookie("avali_comentario_".$Comentario['id']."", true, time()+60*60*24*6004); // Retorna false, ou seja, sucesso echo false; Redireciona(''.$URLSHARE.''); }else{ //AbreAlerta("Erro! Ouve um erro ao ".$dados['titulo']."!"); //Redireciona(''.$URLSHARE.''); } }else{ //Sweet('Atenção!!!', 'Você já deu sua Curtida para '.$dados['titulo'].'!', 'warning', 'Fechar'); //AbreAlerta("Ops! Você já deu sua Curtida para ".$dados['titulo']."!"); //Redireciona(''.$URLSHARE.''); } } Só preciso para quando clicar uns dos botão ele salvar sem precisar carregar a página...
       
      Se ter um forma diferente para fazer fico grato pelas dicas que puderem dar ai..
       
       
    • Por Sapinn
      Tenho uma tabela e gostaria de multiplicar a quantidade de produtos para a compra com o valor unitário e gerar o valor total e colocar em outra td, alguém sabe como fazer isso???
       
       <table class="table-default">                 <thead>                     <th>Produto</th>                     <th>Quant</th>                     <th>Valor Unit.</th>                     <th>Valor Total</th>                     <th>Alterar</th>                     <th>Excluir</th>                 </thead>                 <tbody>                     <tr>                         <td>Placa Mãe</td>                         <td class="quant_produto">1</td>                         <td class="valor_produto">100,00</td>                         <td class="total-produto"></td>                         <td><a href=""><i class="bi bi-pencil-fill"></i></a></td>                         <td><a href=""><i class="bi bi-trash-fill"></i></a></td>                     </tr>                                         <tr>                         <td>Memoria Ram DDr3</td>                         <td class="quant_produto">1</td>                         <td class="valor_produto">50,00</td>                         <td class="total-produto"></td>                         <td><a href=""><i class="bi bi-pencil-fill"></i></a></td>                         <td><a href=""><i class="bi bi-trash-fill"></i></a></td>                     </tr>                     <tr>                         <td>Memoria Ram DDr3</td>                         <td class="quant_produto">1</td>                         <td class="valor_produto">50,00</td>                         <td class="total-produto"></td>                         <td><a href=""><i class="bi bi-pencil-fill"></i></a></td>                         <td><a href=""><i class="bi bi-trash-fill"></i></a></td>                     </tr>                 </tbody>             </table>  
×

Informação importante

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