rrh 0 Denunciar post Postado Junho 13, 2013 Ao realizar uma consulta e montar uma tabela com um loop os resultados são mostrados em linhas na vertical. É possível fazer com que os resultados sejam montados na horizontal? Exemplificando para tentar passar melhor a minha dúvida: Eu consigo o resultado assim: Estado|Marca|Total SP |VW |10 SP |FIAT |30 SP |MB |15 SP |FORD |28 Eu gostaria de fazer assim: Estado|VW|FIAT|MB|FORD SP |10|30 |15|28 Compartilhar este post Link para o post Compartilhar em outros sites
MaikeES 18 Denunciar post Postado Junho 13, 2013 Sim amigo a ordem de exibição na tela você quem escolha ao utilizar a variável. Compartilhar este post Link para o post Compartilhar em outros sites
rrh 0 Denunciar post Postado Junho 13, 2013 Obrigado pela presteza, mas como eu sou iniciante eu não entendi nada... Compartilhar este post Link para o post Compartilhar em outros sites
MaikeES 18 Denunciar post Postado Junho 13, 2013 Amigo deve ter alguma maneira mais fácil mas a única maneira que me veio a cabeça foi esta abaixo. <?php $query = mysql_query("SELECT estado FROM suaTabela"); $query2 = mysql_query("SELECT marca FROM suaTabela"); $query3 = mysql_query("SELECT total FROM suaTabela"); ?> <table> <tr> <td> estado </td> <td> <?php for($x = 1; $x < = mysql_num_rows($query); $x++){ list($estado) = mysql_fetch_array($query); echo $estado; } ?> </td> </tr> <tr> <td> Marca </td> <td> <?php for($x = 1; $x < = mysql_num_rows($query2); $x++){ list($marca) = mysql_fetch_array($query2); echo $marca; } ?> </td> </tr> </tr> <td> Total </td> <td> <?php for($x = 1; $x < = mysql_num_rows($query3); $x++){ list($total) = mysql_fetch_array($query3); echo $total; } ?> </td> </tr> </table> Mas não aconselharia você a fazer este tipo de listagem tendo em mente que irá passar da tela ao chegar uma certa quantidade de registros criando um scroll na parte inferior do browser. Compartilhar este post Link para o post Compartilhar em outros sites
rrh 0 Denunciar post Postado Junho 13, 2013 Acho que não consegui explanar bem a minha dúvida! Olha o resultado do seu código: Estado|SPSPSPSP Marca|VWFIATMBFORD Total|10301528 Eu gostaria de fazer assim:cabeçalho da tabela Estado|VW|FIAT|MB|FORD resultado da consulta SP|10|30 |15|28 resultado da consulta MG|10|30 |15|28 resultado da consulta RJ|10|30 |15|28 resultado da consulta SC|10|30 |15|28 Compartilhar este post Link para o post Compartilhar em outros sites
rrh 0 Denunciar post Postado Junho 18, 2013 Pessoal, parece que o que eu preciso se chama crosstab. Pesquisando encontrei aqui o PHP Report Maker que monta a tabela como eu preciso, mas para o resultado abaixo o programa gera vários arquivos e diretórios. Não tem uma forma mais simples de fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Junho 18, 2013 SELECT estado, SUM(IF(marca = 'FORD',total,0)) AS "Ford", SUM(IF(marca = 'FIAT',total,0)) AS "FIAT", SUM(IF(marca = 'MB',total,0)) AS "MB", SUM(IF(marca = 'VW',total,0)) AS "VW", SUM(COALESCE(total,0)) as "Total" FROM veiculos GROUP BY 1 resultado na minha tabela de testes +--------+------+------+------+------+-------+ | estado | Ford | FIAT | MB | VW | Total | +--------+------+------+------+------+-------+ | PR | 0 | 0 | 20 | 15 | 35 | | SP | 35 | 105 | 0 | 0 | 140 | +--------+------+------+------+------+-------+ @braços Compartilhar este post Link para o post Compartilhar em outros sites
rrh 0 Denunciar post Postado Junho 18, 2013 Caro hufersil, obrigado pela ajuda. Tem como também inserir uma linha de total para as colunas? Pra exibir o resultado que você postou acima você fez a consulta no console do MySQL, correto? Agora como montar essa tabela no php? Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Junho 18, 2013 SELECT estado, SUM(IF(marca = 'FORD',total,0)) AS "Ford", SUM(IF(marca = 'FIAT',total,0)) AS "FIAT", SUM(IF(marca = 'MB',total,0)) AS "MB", SUM(IF(marca = 'VW',total,0)) AS "VW", SUM(COALESCE(total,0)) as "Total" FROM veiculos GROUP BY 1 WITH ROLLUP O ROLLUP irá trazer uma linha totalizadora para cada agrupamento. Como você só está agrupando por uma coluna, a última linha do resultado virá com o valor de "Estado" = NULL e a soma de cada coluna. @braços Compartilhar este post Link para o post Compartilhar em outros sites
rrh 0 Denunciar post Postado Junho 18, 2013 E como vai ficar o código php para gerar uma tabela como é feito no phpmyadmin? [inline]while[/inline] nesse caso não vai dar certo né? Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Junho 19, 2013 claro que sim ;-) $sql = <<<SQL SELECT estado AS "ESTADO", SUM(IF(marca = 'FORD',total,0)) AS "FORD", SUM(IF(marca = 'FIAT',total,0)) AS "FIAT", SUM(IF(marca = 'MB',total,0)) AS "MB", SUM(IF(marca = 'VW',total,0)) AS "VW", SUM(COALESCE(total,0)) as "TOTAL" FROM veiculos GROUP BY 1 WITH ROLLUP SQL; $rs = mysql_query($sql) OR die(mysql_error()); // montando o header da tabela $header = array(); for($i=0, $total=mysql_num_fields($rs); $i<$total; $i++){ $header[] = mysql_field_name($rs, $i); } $header_str = '<tr><th>' . implode('</th><th>', $header) . '</th></tr>'; // montando as demais linhas da tabela $html = ''; while($row = mysql_fetch_assoc($rs)){ $html .= '<tr>'; foreach($row as $key => $value){ if($key == 'ESTADO' && is_null($value)){ $value = 'Total Geral'; } $html .= '<td>' . $value . '</td>'; } $html .= '</tr>'; } // exibindo a tabela final echo '<table>', $header_str, $html, '</table>'; Agora, os estilos da tabela é por sua conta ;-) @braços Compartilhar este post Link para o post Compartilhar em outros sites
rrh 0 Denunciar post Postado Junho 19, 2013 Deu certinho! Inclusive a substituição de NULL por Total Geral. Veja o resultado: Muitíssimol obrigado por sua ajuda, há muito tempo estava em busca desse resultado. Onde você aprendeu tanto de php? Vou estudar seu código pra ver se consigo entender como funciona a lógica. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Junho 19, 2013 Muito do que sei hoje aprendi sozinho. Estudo PHP já tem mais de 13 anos :) @braços e fique com Deus! Compartilhar este post Link para o post Compartilhar em outros sites
rrh 0 Denunciar post Postado Junho 19, 2013 Ok, então faltam 10 anos pra mim kkkkk... Mais uma vez obrigado. Grande abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Lukas Junior 1 Denunciar post Postado Outubro 14, 2014 hufersil você salvou minha vida , procurei por muito tempo mas sua resposta foi a melhor com o código menor . Compartilhar este post Link para o post Compartilhar em outros sites