Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Barros_90473

[Resolvido] Tabela dinâmica PHP

Recommended Posts

Bom dia senhores,

 

tenho uma tabela com os seguintes campos,

 

 

data, pdv, hora_entrada, hora_saida.

 

 

com a minha consulta atual os dados são exibidos assim:

 

data pdv hora_entrada hora_saida

 

20/01/2012 Extra mercado 08:00:01 09:30:00

21/01/2012 Shopping centro 08:00:01 09:34:00

 

e assim por diante....

 

 

como posso fazer para os dados serem exibidos dessa forma:

 

 

data Extra mercado shopping centro

 

20/01/2012 08:00:01 - 09:30:00 08:00:01 - 09:34:00

21/01/2012 08:00:01 - 09:30:00 08:00:01 - 09:34:00

 

 

acho que seria mais uma forma de gerar colunas como no excel em tabel dinâmica, mas não estou me acertando aqui, poderiam de ajudar?

 

Att.

 

Eduardo Barros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem a sua dúvida. Você quer "encurtar" a sua consulta, é isso? :huh:

 

Se sim, basta remover os campos na hora da impressão no PHP - o que não torna nada mais ou menos dinâmico (vide título).

 

E ah, veja só:

Ao criar seu tópico, seja claro na sua dúvida e mantenha somente uma dúvida por tópico.

Via Orientações para uma boa participação

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, também não entendi! Mas a princípio... Você quer reorganizar a saída dos dados?

 

:ermm:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não é PHP, mas sim HTML.

 

Seu código tabular deve ficar assim:

<table>
  <tbody>
     <tr>
        <th>Data</th>
        <th>Extra</th>
        <th>Mercado</th>
        <th>Shopping</th>
        <th>Centro</th>
     </tr>
     <tr>
        <td>Linha Data</td>
        <td>Linha Extra</td>
        <td>Linha Mercado</td>
        <td>Linha Shopping</td>
        <td>Linha Centro</td>
     </tr>
  </tbody>
</table>

 

Mas lembre-se que as linhas são dinâmicas, portanto, fique atento com o seu loop. Por exemplo:

<table>
  <tbody>
     <tr>
        <th>Data</th>
        <th>Extra</th>
        <th>Mercado</th>
        <th>Shopping</th>
        <th>Centro</th>
     </tr>
     <?php foreach( $query as $resultados ): ?>
     <tr>
        <td>Linha Data</td>
        <td>Linha Extra</td>
        <td>Linha Mercado</td>
        <td>Linha Shopping</td>
        <td>Linha Centro</td>
     </tr>
     <?php endforech; ?>
  </tbody>
</table>

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é a consulta:

 

 

$sql = "SELECT * FROM registro_visita"; $res = mysql_query($sql) or die (mysql_error());  while($row= mysql_fetch_array($res)){  $pdv 		= $row['pdv']; 
$entrada 	= $row['entrada']; 
$saida 		= $row['saida']; 
$data_reg 	= $row['data_reg'];

echo"

<tr>
<td>$data_reg</td>
<td>$pdv</td>
<td>$entrada - $saida</td></tr>";



 

 

essa é a saída:

 

2012-01-30 Extra Alto da XV 11:06:30 - 11:06:50

2012-01-30 Loja FNAC 11:07:34 - 11:07:46

2012-01-30 Park Shopping Barigui 11:07:53 - 11:07:58

2012-01-30 Shopping Cidade 11:08:26 - 11:08:36

2012-01-30 Shopping Total 11:08:48 - 11:09:01

 

eu gostaria de mostrar o PDV como rótulo da coluna agrupando por data e exibir abaixo de cada um seu respectivos valores de entra e saida(horário).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué, e qual a dificuldade? Ordene a consulta pela data de forma acrescente e faça:

 

<table>
  <tbody>
     <?php foreach( $query as $resultados ): ?>
     <tr>
        <th>Data</th>
        <th><?php echo $resultados['pdv']; ?></th>
        <th>Mercado</th>
        <th>Shopping</th>
        <th>Centro</th>
     </tr>
     <tr>
        <td>Linha Data</td>
        <td>Linha Extra</td>
        <td>Linha Mercado</td>
        <td>Linha Shopping</td>
        <td>Linha Centro</td>
     </tr>
     <?php endforech; ?>
  </tbody>
</table>

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que isso resolve...

Exemplo simples, mas acredito que é isso que você está buscando.

 

<?php 

date_default_timezone_set('America/Sao_Paulo');

$cn = mysql_connect('127.0.0.1','root','',true);
mysql_select_db('enquete', $cn);

$sql = ' SELECT *
FROM registro_visita
ORDER BY datavisita, entrada';

$results = array();
$locais  = array();

$res = mysql_query($sql, $cn);

while($row = mysql_fetch_assoc($res)){
$results[$row['datavisita']][$row['nomelocal']] = $row;
if(!in_array($row['nomelocal'], $locais)){
	$locais[] = $row['nomelocal'];
}
}

mysql_free_result($res);
mysql_close($cn);

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Consulta</title>
</head>
<body>
<table border="1">
  <tbody>
     <tr>
        <th>Data</th>
       <?php 
        foreach($locais as $local){
        	echo '<th>', $local, '</th>';
        }
        ?>
     </tr>
     <?php foreach($results as $data => $row): ?>
     <tr>
        <td><?php echo date('d/m/Y', strtotime($data)); ?></td>
        <?php 
        foreach($locais as $local){
        	if(array_key_exists($local, $row)){
        		echo '<td align="center">', $row[$local]['entrada'], ' - ', $row[$local]['saida'], '</td>';
        	} else {
        		echo '<td align="center">---</td>';
        	}
        }
        ?>
     </tr>
     <?php endforeach; ?>
  </tbody>
</table>
</body>
</html>

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o mesmo que enviei no post.

Quando há uma nova data mas a mesma empresa, ele não cria uma nova coluna, e sim uma nova linha.

 

exemplo_tabela.png

 

Envie o CREATE TABLE desta tabela que você está usando para ficar mais fácil de identificar.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue:

 

CREATE TABLE IF NOT EXISTS `registro_visita` (   `id_reg` int(11) NOT NULL AUTO_INCREMENT,   `data_reg` date DEFAULT NULL,   `pdv` varchar(600) DEFAULT NULL,   `entrada` time DEFAULT NULL,   `ip` varchar(600) DEFAULT NULL,   `saida` time DEFAULT NULL,   PRIMARY KEY (`id_reg`) ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

É praticamente a mesma coisa que a minha. Só mudam os nomes dos campos.

Viu a imagem que coloquei de exemplo?

É assim que sua tabela aparece?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como você colocar uma imagem de exemplo do que está ocorrendo e, se possível for, um dump com a amostra de dados que está ocasionando o problema?

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

opaaaa.....desculpe fiz besteira aqui, o meu está exatamente como o seu agora, fiz uma pequena besteira aqui, esta 100% funcional, muitíssimo obrigado.

 

Salvou meu dia, agora possa dar continuidade ao meu projeto, tenha uma ótima semana amigo!

 

tópico resolvido hufersil...

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.