如何检查两个日期之间是否已经收取租金

时间:2019-05-21 14:52:01

标签: php mysql sql

我正在尝试比较两个日期,分别是开始租金和结束租金的日期,但要使用一个数据库,其中一些车辆可能已经在这些日期租用了

我已经有一个阻止用户在两个日期之间预订汽车的代码,但之后仍然被阻止

if( empty($content) ){
        extract($_POST); // here i extract my _post
        if( !empty($idmembre) ){

            $vehicule = execReq( "SELECT * FROM vehicule WHERE idvehicule=:idvehicule", array(
                'idvehicule' => $idvehicule
            ));
            $infoVehicule = $vehicule->fetch();
            $agence = $infoVehicule['agences_idagences'];
            $timestamp1 = strtotime($date_heure_depart);
            $timestamp2 = strtotime($date_heure_fin); // here i create two timestamps to compare with what i have en my database
            $date_deja_prise = execReq( "SELECT * FROM commande WHERE vehicule_idvehicule=:idvehicule", array(
                'idvehicule' => $idvehicule
            ));
            while( $date = $date_deja_prise->fetch() ){
                if( !empty($date) ){ // here if one vehicle has a date of rent it checks evry one to check if the date is taken
                    $date_debut = strtotime($date['date_heure_depart']);
                    $date_fin = strtotime($date['date_heure_fin']);
                    if( ($date_debut <= $timestamp1 || $timestamp2 <= $date_fin) ){
                        $content .= '<div class="alert alert-danger">Le véhicule '.$infoVehicule['titre'].' est déjà louer du '.$date['date_heure_depart'].' au '.$date['date_heure_fin'].' inclu</div>';
                    }
                }
            }
            if( empty($content) ){
                $nb_de_jour_timestamp = $timestamp2 - $timestamp1;
                $nb_de_jour = $nb_de_jour_timestamp/86400;
                $prix_journalier = $nb_de_jour * $infoVehicule['prix_journalier'];
                execReq( "INSERT INTO commande VALUES(NULL, $idmembre, $idvehicule, $agence, :date_heure_depart, :date_heure_fin, $prix_journalier, now())", array(
                    'date_heure_depart' => date("Y-m-d", $timestamp1),
                    'date_heure_fin' => date("Y-m-d", $timestamp2)
                ));
                $content = '<div class="alert alert-success">Votre reservation a été effectué !</div>';
            }
        } else {
            $content .= '<div class="alert alert-danger">Pour passer une commande vous devez créer un compte <a href="" data-toggle="modal" data-target="#inscription">cliquez ici</a> pour vous en créer un</div>';
        }
    }

所以基本上可以在我的phpmyadmin页面上创建一行预订汽车的时间段,此后,如果我尝试预订另一辆汽车,但所有日期都不一样

1 个答案:

答案 0 :(得分:0)

我认为您的问题是此行if( ($date_debut <= $timestamp1 || $timestamp2 <= $date_fin) ){。您仅在检查新的开始时间是否小于现有的开始时间,以及新的结束时间是否大于现有的时间。您需要检查开始日期或结束日期是否在现有日期之间。

if( ($date_debut <= $timestamp2 && $timestamp1 <= $date_fin) ){