Ir para conteúdo

POWERED BY:

Arquivado

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

alvarogtc

[Resolvido] Buscar e agrupar por mes

Recommended Posts

Pessoal estou com uma dificuldade em fazer o seguinte:

 

Tenho uma tabela tabblog

 

dentro tenho o seguinte Blog_Data (YYYY-mm-dd)

 

oque quero fazer é um select q verifique todos os posts e agrupe pelo mes q seria algo talvez como : MONTH(Blog_Data)

 

gerando um select pelos meses, digamos que tenha postagens apenas em setembro, outubro e dezembro de 2010 e marco de 2011

 

no select teria apenas setembro/2010 outubro/2010 e dezembro/2010 e por fim marco/2011

 

dai pra frente eu sei fazer q seria retornar os resultados do mes selecionado.

 

Se alguem puder dar uma força de como fazer...

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao é isso q quero amigo

 

eu tenho

 

varios posts no mes de setembro, outubro etc

 

quero fazer um select q verificar em qual mes foi feito as postagens e qual ano

 

ai faco um select que retorna mes/ano (apenas que tiverem postagens) pra dair em diante

 

fazer uma busca baseada no mes selecionado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me manda o SQL que eu faço o select.

 


CREATE TABLE IF NOT EXISTS `tabblog` (
 `Blog_Id` int(11) NOT NULL AUTO_INCREMENT,
 `Blog_Nome` varchar(100)NOT NULL,
 `Blog_Data` date NOT NULL,
 `Blog_Status` int(25) NOT NULL,
 PRIMARY KEY (`Blog_Id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=8 ;

 

Ate onde pesquisei seria algo que comecaria assim

 

$Sql = "SELECT DISTINCT(MONTH(Blog_Data)) AS Blog_Mes FROM tabblog WHERE Blog_Status = 1";

 

so que dai pra frente ja simulei dezenas de formas e nao consegui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria mais ou menos assim certo:

 

34810227.jpg

 

 

A query é essa:

 

 

SELECT
tabblog.Blog_Id,
tabblog.Blog_Nome,
tabblog.Blog_Data,
tabblog.Blog_Status,
COUNT(tabblog.Blog_Id) AS total,
DATE_FORMAT(tabblog.Blog_Data, '%M/%Y') AS `data`
FROM
tabblog
GROUP BY Blog_Data

 

 

Você vai ver que ele vai trazer em inglês, ai tu muda pelo PHP.

 

 

<?php
setlocale(LC_ALL, 'pt_BR'); //Seto a lingua padrão. É bom isso caso tu queira fazer em 3 linguas ou mais.
while($rss - mysql_fetch_array($sql)){
?>
<?=ucwords(strftime("%M/%Y", strtotime($rss['data'])))?> (<?=$rss['total']?>)
<?php
}
setlocale(LC_ALL, 0); //Fecho o setlocale para não dar conflito com o restante da página.
?>

 

 

Abraços Walker

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta retornado a quantidade certinho e tudo, o unico problema q apresentou foi

 

fazendo assim: ucwords(strftime("%M/%Y", strtotime($rss['data']))) ta retornado 00/1969

 

agora se chamo so $rss['data'] ai retorna january/2011 etc em ingles mesmo usando setlocate...

 

Ai resolvi assim

 


$Sql18 = "SELECT
tabblog.*,
COUNT(tabblog.Blog_Id) AS total,
tabblog.Blog_Data AS data
FROM
tabblog
GROUP BY Blog_Data";

$Query18 = mysql_query($Sql18, $Conn);
while($Rs18 = mysql_fetch_array($Query18)){
$select.= "<option value=\"1\">".ucfirst(strftime("%B", strtotime($Rs18["data"]))). "/" .date("Y", strtotime($Rs18["data"]))."</option>";	
}

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.