Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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.
Me manda o SQL que eu faço o select.
>
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
Seria mais ou menos assim certo:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img709.imageshack.us/img709/876/34810227.jpg&key=6ede27c22fc16d83032d7ae50763b9b35efad6948a085f53b166395f4846374c" alt="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
}Abraços Walker
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);$select.= "<option value=\"1\">".ucfirst(strftime("%B", strtotime($Rs18["data"]))). "/" .date("Y", strtotime($Rs18["data"]))."</option>";
}Se resolveu é o que importa /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/clap.gif&key=ab7a79d2320a1ded436b2ab0fea47e116ade502c5a2c7167044566e6dce34a83" alt="clap.gif" />
então você quer ordenar e não agrupar.
utilize
order by
e para buscar entre duas datas utilize
between