Preciso de dicas de como fazer um filtro por data no banco de dados. Estou usando php “puro” no padrão mvc.
1- Minha tabela no banco de dados faz um backup dela mesma as 00:00 duplicando todos registros todos os dias só atualizando a coluna da data para o novo dia. Tirando a coluna da data, que é DtBase, o resto será constantemente editado.(Já possuo função para este edit)
2- Preciso de um input para informar uma data, fazer uma consulta no banco e me retornar só os registros que obter esta data.
3- Na mesma paginá que farei este input, possuo 3 tabelas html que já me retornam todos os registros do banco com um select.
4- Quero que imprima estes registros dentro das mesmas 3 tabelas só que com esse filtro dito acima da data.
Tudo isso seria para controle, por exemplo: Estou no dia 24 do mês e quero consultar essas 3 tabelas, como estavam no dia 20.
Imagem do banco de dados:
Código que tenho até agora para entenderem melhor:
Programacao.php (view):
<form method="POST" action="../controller/progPrecontrole.php">
<div class="large-12 columns">
<div class="TableCSS" >
<table>
<tr>
<td>ST</td>
<td>BITRUCK</td>
<td>Motorista</td>
<td>Data Saída</td>
<td>Origem</td>
<td>Destino</td>
<td>Previsão chegada</td>
<td>Carga/Manifesto</td>
<td>Adiantamento Fincanceiro</td>
<td>Agendas</td>
<td>Malotes</td>
<td colspan="2">Observação</td>
</tr>
<?php
foreach ($controller->ListaPorTipoB() as $objProg) {
?>
<tr>
<td>
<?php
echo ($controller->RetornarCarctere($objProg->getst()));
?>
</td>
<td><?php echo $objProg->getplaca(); ?></td>
<td><?php echo $objProg->getmot(); ?></td>
<td><?php echo $objProg->getsaida(); ?></td>
<td><?php echo $objProg->getorig(); ?></td>
<td><?php echo $objProg->getdest(); ?></td>
<td><?php echo $objProg->getprev(); ?></td>
<td><?php echo $objProg->getcarga(); ?></td>
<td><?php echo $objProg->getadfin(); ?></td>
<td><?php echo $objProg->getagen(); ?></td>
<td><?php echo $objProg->getmal(); ?></td>
<td class="t1" ><div><?php echo $objProg->getobs(); ?></div></td>
<td><a href="edita.php?id=<?php echo $objProg->getid();?>"><p>Alterar</p></a></td>
</tr>
<?php
}
?>
</table>
</div>
</form>
Funções que possuo até agora:
progDAO.php(DAO):
class ProgDAO{
private $conn;
public function __construct($connection) {
$this->conn = $connection;
}
public function ListaPorTipoB($tipo){
$results = array();
$stmt = $this->conn->prepare('SELECT * FROM GTCLogist WHERE DsTpVeiculo = ?');
$stmt->execute(array($tipo));
if($stmt) {
while($row = $stmt->fetch(PDO::FETCH_OBJ)) {
$prog = new Prog();
$prog->setid($row->ID);
$prog->setst($row->DsStatus);
$prog->setplaca($row->NrPlaca);
$prog->setmot(stripslashes($row->DsMotorista));
$prog->setsaida(date('d/m/Y', strtotime($row->DtSaida)));
$prog->setorig($row->DsOrigem);
$prog->setdest($row->DsDestino);
$prog->setprev(date('d/m/Y', strtotime($row->DtPrevChegDest)));
$prog->setcarga($row->DsCarga);
$prog->setadfin($row->DsAdFin);
$prog->setagen($row->DsAgendas);
$prog->setmal($row->DsMalote);
$prog->setobs($row->DsObservacao);
$results[] = $prog;
}
}
return $results;
}
public function ListaPorTipoT($tipo){
$results = array();
$stmt = $this->conn->prepare('SELECT * FROM GTCLogist WHERE DsTpVeiculo = ?');
$stmt->execute(array($tipo));
if($stmt) {
while($row = $stmt->fetch(PDO::FETCH_OBJ)) {
$prog = new Prog();
$prog->setid($row->ID);
$prog->setst($row->DsStatus);
$prog->setplaca($row->NrPlaca);
$prog->setmot(stripslashes($row->DsMotorista));
$prog->setsaida(date('d/m/Y', strtotime($row->DtSaida)));
$prog->setorig($row->DsOrigem);
$prog->setdest($row->DsDestino);
$prog->setprev(date('d/m/Y', strtotime($row->DtPrevChegDest)));
$prog->setcarga($row->DsCarga);
$prog->setadfin($row->DsAdFin);
$prog->setagen($row->DsAgendas);
$prog->setmal($row->DsMalote);
$prog->setobs($row->DsObservacao);
$results[] = $prog;
}
}
return $results;
}
public function ListaPorTipoC($tipo){
$results = array();
$stmt = $this->conn->prepare('SELECT * FROM GTCLogist WHERE DsTpVeiculo = ?');
$stmt->execute(array($tipo));
if($stmt) {
while($row = $stmt->fetch(PDO::FETCH_OBJ)) {
$prog = new Prog();
$prog->setid($row->ID);
$prog->setst($row->DsStatus);
$prog->setcarreta($row->CdCarreta);
$prog->setplaca($row->NrPlaca);
$prog->setmot(stripslashes($row->DsMotorista));
$prog->setsaida(date('d/m/Y', strtotime($row->DtSaida)));
$prog->setorig($row->DsOrigem);
$prog->setdest($row->DsDestino);
$prog->setprev(date('d/m/Y', strtotime($row->DtPrevChegDest)));
$prog->setcarga($row->DsCarga);
$prog->setadfin($row->DsAdFin);
$prog->setagen($row->DsAgendas);
$prog->setmal($row->DsMalote);
$prog->setobs($row->DsObservacao);
$results[] = $prog;
}
}
return $results;
}
public function editar(Prog $prog){
$this->conn->beginTransaction();
try {
$stmt = $this->conn->prepare(
'UPDATE GTCLogist SET DsStatus = :DsStatus, DsMotorista = :DsMotorista, DtSaida = :DtSaida,
DsOrigem = :DsOrigem, DsDestino = :DsDestino, DtPrevChegDest = :DtPrevChegDest, DsCarga = :DsCarga,
DsAdFin = :DsAdFin, DsAgendas = :DsAgendas, DsMalote = :DsMalote, DsObservacao = :DsObservacao,
CdCarreta = :CdCarreta
WHERE ID = :ID'
);
$stmt->bindValue(':ID', $prog->getid(), PDO::PARAM_INT);
$stmt->bindValue(':DsStatus', $prog->getst(), PDO::PARAM_INT);
$stmt->bindValue(':DsMotorista', $prog->getmot(), PDO::PARAM_STR);
$stmt->bindValue(':DtSaida', $prog->getsaida(), PDO::PARAM_INT);
$stmt->bindValue(':DsOrigem', $prog->getorig(), PDO::PARAM_STR);
$stmt->bindValue(':DsDestino', $prog->getdest(), PDO::PARAM_STR);
$stmt->bindValue(':DtPrevChegDest', $prog->getprev(), PDO::PARAM_INT);
$stmt->bindValue(':DsCarga', $prog->getcarga(), PDO::PARAM_STR);
$stmt->bindValue(':DsAdFin', $prog->getadfin(), PDO::PARAM_INT);
$stmt->bindValue(':DsAgendas', $prog->getagen(), PDO::PARAM_STR);
$stmt->bindValue(':DsMalote', $prog->getmal(), PDO::PARAM_STR);
$stmt->bindValue(':DsObservacao', $prog->getobs(), PDO::PARAM_STR);
$stmt->bindValue(':CdCarreta', $prog->getcarreta(), PDO::PARAM_INT);
$stmt->execute();
$this->conn->commit();
}
catch(Exception $e) {
$this->conn->rollback();
}
}
public function listar($id){
$prog = new Prog();
$stmt = $this->conn->prepare(
'SELECT * FROM GTCLogist WHERE ID = :ID'
);
$stmt->bindValue(':ID', $id, PDO::PARAM_INT);
$stmt->execute();
if($stmt) {
while($row = $stmt->fetch(PDO::FETCH_OBJ)) {
$prog->setid($row->ID);
$prog->setst($row->DsStatus);
$prog->setcarreta($row->CdCarreta);
$prog->setplaca(stripslashes($row->NrPlaca));
$prog->setmot($row->DsMotorista);
$prog->setsaida(date('d/m/Y', strtotime($row->DtSaida)));
$prog->setorig($row->DsOrigem);
$prog->setdest($row->DsDestino);
$prog->setprev(date('d/m/Y', strtotime($row->DtPrevChegDest)));
$prog->setcarga($row->DsCarga);
$prog->setadfin($row->DsAdFin);
$prog->setagen($row->DsAgendas);
$prog->setmal($row->DsMalote);
$prog->setobs($row->DsObservacao);
}
}
return $prog;
}
Controller:
<?php
class Comando{
private $conn;
public function __construct($connec) {
$this->conn = $connec;
}
public function ListaPorTipoB(){
$dao = new ProgDAO($this->conn);
return $dao -> ListaPorTipoB('Bitruck');
}
public function ListaPorTipoT(){
$dao = new ProgDAO($this->conn);
return $dao -> ListaPorTipoT('Truck');
}
public function ListaPorTipoC(){
$dao = new ProgDAO($this->conn);
return $dao -> ListaPorTipoC('Cavalo Truck');
}
public function ListaData(){
$dao = new ProgDAO($this->conn);
return $dao -> ListaData();
}
public function editar(Prog $objProg){
$dao = new ProgDAO($this->conn);
return $dao -> editar($objProg);
}
public function listar($id){
$dao = new ProgDAO($this->conn);
return $dao -> listar($id);
}
public function RetornarCarctere($x){
$dao = new ProgDAO($this->conn);
return $dao -> RetornarCarctere($x);
}
}
PreController:
$id = $_POST['id'];
$DsMotorista = $_POST['mot'];
$DtSaida = $_POST['saida'];
$DsOrigem = $_POST['orig'];
$DsDestino = $_POST['dest'];
$DtPrevChegDest = $_POST['prev'];
$DsCarga = $_POST['carga'];
$DsAdFin = $_POST['adfin'];
$DsAgendas = $_POST['agen'];
$DsMalote = $_POST['mal'];
$DsObservacao = $_POST['obs'];
$CdCarreta = $_POST['carreta'];
$DsStatus = $_POST['st'];
$DtBase = $_POST['data'];
$selecionado = $_REQUEST['st'];
$objProg = new Prog();
$objProg->setid($id);
$objProg->setmot($DsMotorista);
$objProg->setsaida($DtSaida);
$objProg->setorig($DsOrigem);
$objProg->setdest($DsDestino);
$objProg->setprev($DtPrevChegDest);
$objProg->setcarga($DsCarga);
$objProg->setadfin($DsAdFin);
$objProg->setagen($DsAgendas);
$objProg->setmal($DsMalote);
$objProg->setobs($DsObservacao);
$objProg->setcarreta($CdCarreta);
$objProg->setst($DsStatus);
$objProg->setdata($DtBase);
$controller = new Comando($conn);
if (!empty($id)){
$objProg->setid($id);
$controller->editar($objProg);
}
header ("location: ../view/programacao.php?id=".$id);
Não possuo muito conhecimento em PHP e estou disposto a receber ideias para melhoras. Se alguem puder ajudar, agradeço.