Ir para conteúdo

POWERED BY:

Arquivado

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

-=Placyo=-

[Resolvido] exibi resultados separados

Recommended Posts

Olá pessoal, :thumbsup:

 

Estou precisando de uma ajudinha, já pesquisei bastante mais não consegui achar algo que de

 

certo no meu caso.

 

A questão e a seguinte:

 

Tabela do banco de dados: tbl_mensagens

-----------------------------------------

cod - titulo - texto - mes - ano

-----------------------------------------

1 - Titulo1 - Mensagem1 - jan - 2010

2 - Titulo2 - Mensagem2 - fev - 2010

3 - Titulo3 - Mensagem3 - mar - 2010

4 - Titulo4 - Mensagem4 - jan - 2011

5 - Titulo5 - Mensagem5 - fev - 2011

6 - Titulo6 - Mensagem6 - mar - 2011

7 - Titulo7 - Mensagem7 - jan - 2012

8 - Titulo8 - Mensagem8 - fev - 2012

9 - Titulo9 - Mensagem9 - mar - 2012

 

 

Como pretendo mostrar:

-----------------------------------------

2012

Mensagem9

Mensagem8

Mensagem7

 

2011

Mensagem6

Mensagem5

Mensagem4

 

2010

Mensagem3

Mensagem2

Mensagem1

 

 

Tem mensagens desde 1997 ate hoje, sendo postado todos os meses.

 

Comecei assim, mais claro só mostra as mensagens:

 

$sql = "SELECT cod, titulo, ano, mes FROM tbl_mensagens ORDER BY ano DESC";
$resultado = mysql_query($sql) or print("Erro ao listar textos.<br />$sql<br />Erro MySQL:".mysql_error($sql)."<br />");

$linhas = mysql_num_rows($resultado);

if ($linhas > 0) {
while ($registro = mysql_fetch_row($resultado)) {
	$tit = $registro[1];
	echo $tit. "<br /><br />";
}
}

 

Quem puder me dar uma forcinha ai eu agradeço muito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu acho que a melhor forma de fazer isso é colocando um if dentro do seu while.

 

Cria uma variavel fora do while pra armezar o ano e dentro do while você verifica se o ano da linha é diferente do seu ano armazenado. Se o ano for diferente da linha anterior você pula a linha e monta o "cabecalho" novamente, caso contrario somente printa....

 

Algo +/- assim:

 

       $ano = "";
while ($registro = mysql_fetch_row($resultado)) {

               if($ano != $registro[2]){

        	    echo "<br /><br />";                     
                   echo $registro[2];
               } 

               echo $registro[1] . <br />;
	$ano = $registro[2];



}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma opção seria você fazer varios joins passando a mesma tabela ou mesmo fazer um while com várias querys.

 

Cada query no where teria o ano desejado.

 

 

$sql = "SELECT cod, titulo, ano, mes FROM tbl_mensagens WHERE ano='2012' ";

 

para o while você poderia fazer um select pegando todos os anos como abaixo.

 

$sql = "SELECT ano FROM tbl_mensagens ORDER BY ano DESC";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oba!!!

 

Deu certinho "spdio" caramba nem acreditei quando vi, serio mesmo, ficou perfeito!

 

"Joabel Luis Kasper" muito obrigado também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom cara!

 

A forma como o Joabel informou também pode ser usada mas no meu ponto de vista ela é muito trabalhosa e de dificil manutenção, você acessa muito o banco, enfim.

 

Qualquer coisa posta ai.

 

Abraço

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.