Ajuda - Busca - Membros - Calendário
Versão Completa: Agrupar registros
Fórum Script Brasil > Programação & Desenvolvimento > PHP
claytonprog
Pessoal olha eu de novo aqui:

Quero fazer uma consulta para agrupar alguns registros e exibilos por mês.

Primeiro estou tentando gerar os meses para estes registros, na tabela tá assim:

id id_cliente id_projeto data

1 1 1 2012-01-02
1 1 1 2012-01-11
1 1 1 2012-02-02
1 1 1 2012-03-02
1 1 1 2012-05-11

Está me listando os meses assim:

Janeiro
Janeiro
Feveiro
Março
Maio

Janeiro está se repetindo ( errado ) era para agrupar as datas de janeiro.


Quando deveria está listando os meses assim:

Janeiro
Feveiro
Março
Maio

Segue abaixo o código pra ver se alguém pode resolver o problema.



CODE
<div class="content-box">
                    <div class="box-body">
                        <div class="box-header clear">
                            <h2>Listagem de Arquivos</h2>
                        </div>
                        <div class="box-wrap clear">
                        
                        
                        
                       <div class="page clear">
            
            <div class="columns clear">
            
            
             <?php
                              
                                  include "../connections/conexao.php";
                        
                                  $id_projeto = $_GET["id_projeto"];
                                  $id_cliente = $_GET["id_cliente"];
                                        
                                                          
                                    $strSQL = mysql_query("SELECT * FROM upload_projetos where id_projeto='$id_projeto' and id_cliente='$id_cliente' GROUP BY data asc");
                                    
                                    
                                        while ($aux = mysql_fetch_array($strSQL)) {
                                                    
                                        $id = $aux['id'];  
                                       $_dt_not= $aux['data'];    
                                
                                list( $date, $time ) = explode( ' ', $_dt_not );
                                $data    = explode("-",$date);
                                $_dt_not = "$data[2]/$data[1]/$data[0]";
                                $dt_not = "$data[1]";
            
                                switch($dt_not) // acha o mês em português
                                {
                                  case "1":
                                    $mes_port = "Janeiro";
                                    break;
                                  case "2":
                                    $mes_port = "Fevereiro";
                                    break;
                                  case "3":
                                    $mes_port = "Março";
                                    break;
                                  case "4":
                                    $mes_port = "Abril";
                                    break;
                                  case "5":
                                    $mes_port = "Maio";
                                    break;
                                  case "6":
                                    $mes_port = "Junho";
                                    break;
                                  case "7":
                                    $mes_port = "Julho";
                                    break;
                                  case "8":
                                    $mes_port = "Agosto";
                                    break;
                                  case "9":
                                    $mes_port = "Setembro";
                                    break;
                                  case "10":
                                    $mes_port = "Outubro";
                                    break;
                                  case "11":
                                    $mes_port = "Novembro";
                                    break;
                                  case "12":
                                   $mes_port = "Dezembro";
                                   break;
                                }
                                                                    
                                                
                                                                
                              ?>
              
              <div class="col1-3">              
            
                    <div class="content-box">                    
                        <div class="box-body">                        
                            <div class="box-header clear">
                              
                            </div>
                                                  
                               <div class="box-wrap clear">
                              
                                 <div align="center"><img src="images/calendario.png" alt="" />
                                  
                                    </div>
                                 <div align="center"><a  href="ver_obra.php?id=<? echo $dt_not;?>"><?= $mes_port;?></a></div>
                              
                          </div>
                      </div>
                    
                    </div>
                  
                    
                </div>
                
                  <?php
                    }                                        
                  ?>
                
                </div>
                
            
              <div class="box-wrap clear"></div>
            
            </div>
            </div>
            <!-- end of content-box -->
                       </div>
                       <p>
                        
                    
                    
                            
                          <div class="tab-footer clear"></div>
                    
                        </div>
jissa
O group by vai agrupar datas exatas, se fosse a mesma funcionaria legal.. mas são dias diferentes. e voce quer agrupar por mes, se for...

no lugar de group by data use group by month(data)

tente assim:
SELECT *,month(data) as Mes FROM upload_projetos where id_projeto='$id_projeto' and id_cliente='$id_cliente' GROUP BY by month(data)");

para achar o mes coloque

switch($aux["Mes"])
claytonprog
Funcionou perfeitamente! valeu.

Agora a segunda parte:

Preciso que quando fo r clicado no link:

<div align="center"><a href="ver_obra.php?id=<? echo $dt_not;?>"><?= $mes_port;?></a></div>

chamar a página ver_obra.php

Nessa página deverá listar as imagens das obras referente ao mês selecionado.

Preciso montar a SQL

A tabela está assim:

tabela: projetos

id
id_cliente
foto
data
descricao


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

tabela: upload_projetos

id
id_projeto
id_cliente
titulo
foto
data

Como ficaria a SQL sendo que preciso agrupar as imagens pelo : $id_projeto, $id_cliente e o mês selecionado.
jissa
se for para listar todos os uploads para o projeto de um cliente dentro do mes seria simples

SELECT * FROM upload_projetos
where id_projeto='$id_projeto' and id_cliente='$id_cliente' and month(data) ='$Mes'


Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.