首页 > 解决方案 > 如何通过 select 和 foreach 过滤日期?

问题描述

我想知道我该怎么做才能只保留第一个选择的日期并从另一个选择中删除另一个但没有 DELETE 它就像只是将它保存在一个变量中。

我已经尝试过做一个 foreach 但我不明白该怎么做。


function generateRestaurant($pdo){
    echo "generateRestaurant()";

    $startTime = mktime(0, 0, 0, date('n'), date('j')+1, date('Y')) - ((date('N'))*3600*24);

    $dateDebut = date('Y-m-d', $startTime);

    $dateFin = date('Y-m-d');

    $query = 'SELECT * FROM events as e 
    LEFT JOIN restaurants as r ON e.restaurant_id =  r.id_restaurant
    WHERE jour >= '.$dateDebut.' AND jour <= '.$dateFin.' ';
    $prep = $pdo->prepare($query);
    $prep->execute(); 

    echo $query;
    print_r($datas);

        selectRestaurants($pdo);
}

选择餐厅功能:

function selectRestaurants($pdo){
    $query = 'SELECT * FROM restaurants as r 
    LEFT JOIN types as t ON r.type_id = t.id_type
    LEFT JOIN agences as a ON r.agence_id =  a.id_agence'; // Tous les éléments de ta table => TABLEAU
    $prep = $pdo->prepare($query);
    $prep->execute(); 

    $datas = $prep->fetchAll(PDO::FETCH_ASSOC);

    return $datas;
}

数据库:


agences : not used in this example.
events : id_event --- restaurant_id --- jour.
restaurants : id_restaurant --- nom --- type_id --- lieu --- agence_id --- horaire --- tickets.
types : not used in this example.
users : not used in this example.

我需要的是通过我的第一个选择过滤它们并删除另一个只保留我想要的日子来获得本周的餐厅。

这是一个算法,通过使用 FullCalendar 和我们在几周内已经吃过的东西来生成我们将在哪里吃饭,而不是在两天内在同一家餐厅和餐厅类型中用餐。

编辑

我没事,我的问题已经解决了。

这里的解决方案:

函数生成餐厅($pdo){

setlocale (LC_TIME, 'fr_FR.utf8','fra'); 
$startTime = mktime(0, 0, 0, date('n'), date('j')+1, date('Y')) - ((date('N'))*3600*24);

$dateDebut = date('Y-m-d', $startTime);
$dateFin = date('Y-m-d');

$query = 'SELECT * FROM events as e 
LEFT JOIN restaurants as r ON e.restaurant_id =  r.id_restaurant
WHERE e.jour >= "'.$dateDebut.'" AND e.jour <= "'.$dateFin.'" ';
$prep = $pdo->prepare($query);
$prep->execute(); 


$restaurantsSemaine = $prep->fetchAll(PDO::FETCH_ASSOC);

$restaurants = selectRestaurants($pdo);

$currentDay = strftime("%A");


foreach($restaurants as $key => $data){
    $currentIdRestaurant = $data['id_restaurant'];

    foreach($restaurantsSemaine as $restaurant){
        if($currentIdRestaurant == $restaurant['id_restaurant']){
            unset($restaurants[$key]);
        }
    }

    if($data[$currentDay] == 0 && isset($restaurants[$key])){
        unset($restaurants[$key]);
    }

}

shuffle($restaurants);

return reset($restaurants);

}

标签: phpmysql

解决方案


推荐阅读