Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Trabalhando com Datas no PHP - #2 Construindo um sistema de locação veicular

13/05/2019

No vídeo de hoje continuaremos a última aula trabalhando com datas no PHP. Para isso realizaremos a criaçao de um sistema de locação veícular.

Formulário de locação veícular

No nosso HTML vamos criar um formulário simples com a data de entrada e de saída e os horários de entrada e saída:

<!doctype html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Car Location</title>
</head>

<body>
    <form name="formLocation" id="formLocation" action="controllers/controllerLocation.php" method="post">
        Entry date: <input type="date" name="entryDate" id="entryDate" required> - <input type="time" name="entryTime" id="entryTime" required><br>
        Departure date: <input type="date" name="departureDate" id="departureDate" required> - <input type="time" name="departureTime" id="departureTime" required><br>
        <input type="submit" value="Rent">
    </form>
</body>
</html>

Controller

Os dados do formulário serão recepcionados no controllerLocation. Nesse controller também faremos a instância da ClassDate.

<?php
include ("../classes/ClassDate.php");

$entryDate=filter_input(INPUT_POST,'entryDate',FILTER_SANITIZE_STRING);
$entryTime=filter_input(INPUT_POST,'entryTime',FILTER_SANITIZE_STRING);
$entryFinal=$entryDate.' '.$entryTime;

$departureDate=filter_input(INPUT_POST,'departureDate',FILTER_SANITIZE_STRING);
$departureTime=filter_input(INPUT_POST,'departureTime',FILTER_SANITIZE_STRING);
$departureFinal=$departureDate.' '.$departureTime;

$objDate=new ClassDate($entryFinal,$departureFinal);
echo $objDate->getLocation();

Repare que no código acima nós criamos uma variável Final pra concatenar a data e o horário vindos do formulário no formato YYYY-mm-dd HH:ii

ClassDate

Por fim, vamos criar a nossa ClassDate que fará a verificação dos horários e datas e exibirá para o usuário o valor final.

<?php
class ClassDate{
    private $entryDate;
    private $departureDate;
    private $dateDiff;
    #Prices
    private $yearValue=15000;
    private $monthValue=1800;
    private $dayValue=60;
    private $hourValue=5;

    #Construct
    public function __construct($entryFinal,$departureFinal)
    {
        $this->entryFinal=new DateTime($entryFinal, new DateTimeZone("America/Sao_Paulo"));
        $this->departureFinal=new DateTime($departureFinal, new DateTimeZone("America/Sao_Paulo"));
        $this->dateDiff=$this->entryFinal->diff($this->departureFinal);
    }

    #Get location
    public function getLocation()
    {
        $finalValue=0;
        $msg="";

        if($this->dateDiff->y > 0){
            $finalValue+=$this->dateDiff->y * $this->yearValue;
            $msg.=" ".$this->dateDiff->y." years";
        }

        if($this->dateDiff->m > 0){
            $finalValue+=$this->dateDiff->m * $this->monthValue;
            $msg.=" ".$this->dateDiff->m." month";
        }

        if($this->dateDiff->d > 0){
            $finalValue+=$this->dateDiff->d * $this->dayValue;
            $msg.=" ".$this->dateDiff->d." days";
        }

        if($this->dateDiff->h > 0){
            $finalValue+=$this->dateDiff->h * $this->hourValue;
            $msg.=" ".$this->dateDiff->h." hours";
        }

        if($this->dateDiff->i > 30){
            $finalValue+=$this->hourValue;
            $msg.=" ".$this->dateDiff->i." minutes";
        }

        return "
            <h1>Diária</h1><hr>
            Você selecionou o período de {$msg} <br>
            Você deverá pagar: <br>
            <strong>{$finalValue}</strong>,00
        ";
    }
}

Sucesso nos códigos e na vida!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Trabalhando com Datas no PHP - #1 Entendendo a classe DateTime
No tutorial de hoje trabalharemos com a manipulação de datas no PHP. Iremos ver a forma procedural e orientada a objetos.
Saiba mais!
Trabalhando com Datas no PHP - #3 Construindo um sistema de mensalidades
Nessa vídeo-aula vamos trabalhar com um sistema de controle de mensalidades com verificação diária e envio de mensagens via email utilizando CRON.
Saiba mais!
PHP
PHP é uma das principais linguagens de programação utilizada nas plataformas web. Isso porque além de ser uma linguagem leve, o PHP é robusto.
Saiba mais!