• 0
Sign in to follow this  
duduripoll

(Resolvido) Como separar consulta mysql por data?

Question

Pessoal, preciso de uma ajuda de vocês. Tenho uma tabela MYSQL com registros de clientes . Gostaria de saber como separar o resultado da consulta em grupos por data da compra (php). Exemplo:

13/03/2016:
- JOAO DA SILVA 
- MARIA DA SILVA

--------------------------------
14/03/2016
- ANTONIO DE SOUZA
- PAULO ROGERIO

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

15/03/2016:

- FLAVIO CAMPOS

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

Grato

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0
3 horas atrás, duduripoll disse:

Pessoal, preciso de uma ajuda de vocês. Tenho uma tabela MYSQL com registros de clientes . Gostaria de saber como separar o resultado da consulta em grupos por data da compra (php). Exemplo:

13/03/2016:
- JOAO DA SILVA 
- MARIA DA SILVA

--------------------------------
14/03/2016
- ANTONIO DE SOUZA
- PAULO ROGERIO

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

15/03/2016:

- FLAVIO CAMPOS

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

Grato

Salve,

Estou enferrujado para o PHP, mas olha um exemplo abaixo:

<?php
function bgcolor($index, $cor1 = '#F1F1F1', $cor2 = '#FFFFFF'){
    return ((($index % 2) == 0) ? $cor1 : $cor2);
}
function data2Br($dbDate){
    return implode ('/',  array_reverse(explode('-', $dbDate)));
}
function searchClientByDate($dbDate){
    $clientes = array();
    array_push($clientes,
        array('nome' => 'BLA, BLA, BLA')
    );
    /* arqui você coloca sua lógica para localizar seus clientes */
    return $clientes;
}
function showRel($beginDate, $endDate = null){
    echo '<table border="1" width="100%">';
    try{
        if(!$endDate){
            $endDate = date('Y-m-d');
        }
        if(strtotime($beginDate)>strtotime($endDate)){
            throw new Exception('Data de início não pode ser maior que a data de término');
        }
        $index = 0;
        do{
            echo '<tr valign="middle" bgcolor="'.bgcolor($index).'">';
            echo '<td><h3> - '.data2Br($beginDate);
            echo '</h3><br />';
            $arrClientes = searchClientByDate($beginDate);
            foreach($arrClientes as $key => $arrCliente){
                echo '<div style="text-indent: 25px;">'.$arrCliente['nome'].'</div>';
            }
            echo '</td>';
            echo '</tr>';
            if(strtotime($beginDate)<=strtotime($endDate)){
                $beginYear  = date('Y', strtotime($beginDate));
                $beginMonth = date('m', strtotime($beginDate));
                $beginDay   = date('d', strtotime($beginDate));
                $beginDate = date("Y-m-d", mktime(0, 0, 0, $beginMonth, $beginDay + 1, $beginYear));
            }
            $index++;
        }while(strtotime($beginDate)<=strtotime($endDate));
    }catch(Exception $e){
        echo '<h1>Erro : ', $e->getMessage(), '</h1>';
    }
    echo '</table>';
}

?>

 

Edited by ursolouco
Vish, nem sei mais como colocar código no fórum :(

Share this post


Link to post
Share on other sites
  • 0

Agradeço a sua atenção, mas não é esse o resultado que eu esperava. Vou tentar ser mais claro:

a tabela do meu BD esta assi:

ID | CLIENTE | DATA_COMPRA |

1 | CARLOS | 2016-01-11

2 | ANTONIO | 2016-01-11

3 | MANOEL | 2016-01-12

 

Gostaria de uma consulta onde o resultado fosse assim:

2016-01-11:

CARLOS

ANTONIO

 

2016-01-12

MANOEL

 

 

Share this post


Link to post
Share on other sites
  • 0

Manoel,

Você pode resolver da seguinte forma:

1) SELECT CLIENTE, DATA_COMPRA FROM COMPRAS ORDER BY DATA_COMPRA DESC, CLIENTE ASC

E no PHP, durante o loop, você verifica a mudança de data para abrir e fechar linha da tabela no relatório

2) SELECT DISTINCT DATA_COMPRA FROM COMPRAS ORDER BY DATA_COMPRA DESC

Durante o loop, você terá que ir novamente ao banco de dados localizar todos cliente com base na DATA do loop (internament seria +/- assim 

SELECT CLIENTE FROM COMPRAS WHERE DATA_COMPRA = $data_da_compra ORDER BY CLIENTE ASC;

[]s

<?php
error_reporting(E_ALL ^ E_DEPRECATED);
function showReport(){
    mysql_connect('localhost', 'root', '');
    mysql_select_db('test');
    $r = mysql_query('SELECT DISTINCT DATA_COMPRA FROM COMPRAS ORDER BY DATA_COMPRA DESC');
    echo '<table>';
    if($r!=null){
        while($reg = mysql_fetch_assoc($r)){
            echo '<tr>';
            echo '<td>', $reg['DATA_COMPRA'];
            $clientes = mysql_query('SELECT CLIENTE FROM COMPRAS WHERE DATA_COMPRA = "'. $reg['DATA_COMPRA'] .'" ORDER BY CLIENTE ASC;');
            if($clientes != null){
                echo '<ul>';
                while($cliente = mysql_fetch_assoc($clientes)){
                    echo '<li>'.$cliente['CLIENTE'].'</li>';
                }
                echo '</ul>';
            }
            echo '</td>';
            echo '</tr>';
        }
    }else{
        echo '<tr><td>Não existe pedido na tabela de compras</td></tr>';
    }
    echo '</table>';
    mysql_close();
}
showReport();
?>
CREATE TABLE COMPRAS(
    ID INT NOT NULL AUTO_INCREMENT,
    CLIENTE NVARCHAR(100),
    DATA_COMPRA DATE,
    CONSTRAINT PK_COMPRAS PRIMARY KEY(ID)
)

INSERT INTO COMPRAS (CLIENTE, DATA_COMPRA) VALUES('CARLOS', '2016-01-11');
INSERT INTO COMPRAS (CLIENTE, DATA_COMPRA)VALUES('ANTONIO', '2016-01-11');
INSERT INTO COMPRAS (CLIENTE, DATA_COMPRA)VALUES('MANOEL', '2016-01-12');

 

Edited by ursolouco

Share this post


Link to post
Share on other sites
  • 0

não funcionou amigo! Repetem varias vezes o mesmo registro! 

Vou dar outro exemplo: TABELA COMPRAS

ID | CLIENTE | DATA_COMPRA |

1 | CARLOS   | 2016-01-11

2 | ANTONIO | 2016-01-11

3 | MANOEL  | 2016-01-12

4 | MARIA      | 2016-01-13

5 | PAULA      | 2016-01-14

 

Gostaria de fazer a consulta por periodo (ex: 11/01/2016 a 13/01/2016) e o resultado fosse assim:

11/01/2016

CARLOS

ANTONIO

_______________

12/01/2016

MANOEL

_______________

13/01/2016

MARIA

______________

 

 

Abraço

Share this post


Link to post
Share on other sites
  • 0
INSERT INTO COMPRAS (CLIENTE, DATA_COMPRA)VALUES('MARIA', '2016-01-13');
<?php
error_reporting(E_ALL ^ E_DEPRECATED);
function showReport(){
    mysql_connect('localhost', 'root', '');
    mysql_select_db('test');
    $r = mysql_query('SELECT DISTINCT DATA_COMPRA FROM COMPRAS ORDER BY DATA_COMPRA DESC');
    echo '<table>';
    if($r!=null){
        while($reg = mysql_fetch_assoc($r)){
            echo '<tr>';
            echo '<td>', $reg['DATA_COMPRA'];
            $clientes = mysql_query('SELECT CLIENTE FROM COMPRAS WHERE DATA_COMPRA = "'. $reg['DATA_COMPRA'] .'" ORDER BY CLIENTE ASC;');
            if($clientes != null){
                echo '<ul>';
                while($cliente = mysql_fetch_assoc($clientes)){
                    echo '<li>'.$cliente['CLIENTE'].'</li>';
                }
                echo '</ul>';
            }
            echo '</td>';
            echo '</tr>';
        }
    }else{
        echo '<tr><td>Não existe pedido na tabela de compras</td></tr>';
    }
    echo '</table>';
    mysql_close();
}
showReport();
?>

[]s

[]s

Sem título.png

Edited by ursolouco

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this