как получать данные еженедельно. Только до понедельника по следующее воскресенье

Я написал программу, в которой я могу получить данные за последние 7 дней. Но я хочу, чтобы мои данные были видны за последнюю неделю, а неделя начинается с понедельника и заканчивается в воскресенье. Затем в понедельник начинается следующая неделя. Итак, я хочу, чтобы сегодня среда, и если я нажму на недельный отчет. Тогда он должен получить данные только до прошлого понедельника. Вроде (среда, вторник, понедельник), но моя система подсчитывает 7 дней. Вот мои коды.

date_default_timezone_set("EST");
$wdate = date('Y-m-d');
$wdate_to = $wdate;
$wdate_to = strtotime("-7 days", strtotime($wdate_to)); //-7 days for last week. -30 for last week
$wdate_to = date("Y-m-d", $wdate_to);


$wget_req = "SELECT * FROM `requests` WHERE `assign_date` between '$wdate_to' AND '$wdate' AND `assigned`=1";

$result = mysqli_query($dbc, $wget_req);

while ($res = mysqli_fetch_assoc($result)){
    $driver_id = $res['assigned_driver_id'];
    $req_id = $res['req_id'];
    $req_title = $res['request_title'];
    $req_price = $res['price'];
    $req_time = $res['request_time'];
    $req_date = $res['assign_date'];
    $req_desc = $res['req_desc'];
    $assigned = $res['assigned'];
    $status = $res['req_status'];
    $driver = $res['driver_name'];
$get_record = "SELECT * FROM `members` WHERE `Memberid`='$driver_id' AND `u_level`=3";
$res = mysqli_query($dbc, $get_record);
while($row = mysqli_fetch_assoc($res)){

    $status = $row['u_status'];
}
?>

                                        <tr class="gradeA">
                                            <td><b><?php echo $driver ;?></b></td>
                                            <td><?php echo $driver_id ;?></td>
                                            <td><?php echo $req_date ;?></td>
                                            <td><b><?php echo $wdate_to;?></b> &#8596; <b><?php echo $wdate ;?></b></td>
                                            <td class="center"><?php if($status == 1){echo '<a href="#" class="btn btn-danger btn-sm">Driver is not working. Deactivated</a>';}else if($status == 0){echo '<a href="#" class="btn btn-success btn-sm">Driver is Active. Working</a>';}?></td>
                                            <td class="center"> <a href="weekly_report.php?driver_id=<?php echo $driver_id ;?>" class="btn btn-primary btn-sm">View Report</a>
 </td>
                                        </tr>

<?php } ?> 

Я надеюсь скоро получить помощь


person M.BABER Zaman    schedule 23.07.2015    source источник
comment
В чем проблема с текущим кодом? Может это пригодится? stackoverflow.com/ questions / 15154655 /   -  person chris85    schedule 23.07.2015
comment
он показывает данные за последние 7 дней. Мне нужны данные до последнего понедельника, я имею в виду слабые старты с понедельника, заканчивающиеся в воскресенье. Значит, он должен получить данные до прошлого понедельника.   -  person M.BABER Zaman    schedule 23.07.2015
comment
Попробуйте ответ SQL, указанный выше   -  person chris85    schedule 23.07.2015


Ответы (4)


Попробуйте, это может вам помочь

<?php
date_default_timezone_set("EST");
$wdate = date('Y-m-d',strtotime('monday this week'));
$wdate_to = $wdate;
$wdate_to = strtotime("-7 days", strtotime($wdate_to)); //-7 days for last week. -30 for last week
$wdate_to = date("Y-m-d", $wdate_to);


$wget_req = "SELECT * FROM `requests` WHERE `assign_date` between '$wdate_to' AND '$wdate' AND `assigned`=1";

$result = mysqli_query($dbc, $wget_req);

while ($res = mysqli_fetch_assoc($result)){
    $driver_id = $res['assigned_driver_id'];
    $req_id = $res['req_id'];
    $req_title = $res['request_title'];
    $req_price = $res['price'];
    $req_time = $res['request_time'];
    $req_date = $res['assign_date'];
    $req_desc = $res['req_desc'];
    $assigned = $res['assigned'];
    $status = $res['req_status'];
    $driver = $res['driver_name'];
$get_record = "SELECT * FROM `members` WHERE `Memberid`='$driver_id' AND `u_level`=3";
$res = mysqli_query($dbc, $get_record);
while($row = mysqli_fetch_assoc($res)){

    $status = $row['u_status'];
}
?>

                                        <tr class="gradeA">
                                            <td><b><?php echo $driver ;?></b></td>
                                            <td><?php echo $driver_id ;?></td>
                                            <td><?php echo $req_date ;?></td>
                                            <td><b><?php echo $wdate_to;?></b> &#8596; <b><?php echo $wdate ;?></b></td>
                                            <td class="center"><?php if($status == 1){echo '<a href="#" class="btn btn-danger btn-sm">Driver is not working. Deactivated</a>';}else if($status == 0){echo '<a href="#" class="btn btn-success btn-sm">Driver is Active. Working</a>';}?></td>
                                            <td class="center"> <a href="weekly_report.php?driver_id=<?php echo $driver_id ;?>" class="btn btn-primary btn-sm">View Report</a>
 </td>
                                        </tr>

<?php } ?> 
person Dhinju Divakaran    schedule 23.07.2015
comment
Это сработало .. Большое спасибо, сделайте много @Dhinjy - person M.BABER Zaman; 23.07.2015

Вы можете попробовать это:

//Returns values 0-6, 0 (for Sunday) through 6 (for Saturday))
$currentDay = date('w') - 1;

//Your week start on Monday, so if today is Sunday, you need to adjust the value
if($currentDay < 0) {
    $currentDay = 6;
}
$weekStartTimestamp = time() - $currentDay * 24 * 60 * 60;
$wdate_to = date("Y-m-d", $weekStartTimestamp);
person t.h3ads    schedule 23.07.2015
comment
извините, но почему $ currentDay = 6; Это значит, что мы управляемой системой, что сегодня 6-й день недели ?? - person M.BABER Zaman; 23.07.2015
comment
Ваша неделя начинается с понедельника ($ currentDay = 0), а последний день - воскресенье ($ currentDay = 6). Итак, если сегодня воскресенье, вам придется вычесть 6 дней из текущей метки времени, чтобы получить метку времени понедельника. - person t.h3ads; 23.07.2015

Получить дату понедельника от заданной даты. Здесь моя дата - 15 июля 2015 года.

echo date("Y-m-d", strtotime("previous monday", strtotime("2015-07-15")));
person Disha V.    schedule 23.07.2015

Попробуйте этот код:

$currentDay = date('w');
$curDate = date('d-m-Y');
//$curDate = date('d-m-Y', strtotime("-1 week")); // uncomment this line if u want to get data of last week
$mon = $curDate;
if($currentDay > 1){
    $day = $currentDay-1;
    $mon = date('Y-m-d', strtotime($curDate. ' - '.$day.' days'));
}

$sat = $curDate;
if($currentDay !=7){
    $day = (6 -$currentDay);
    $sat = date('Y-m-d', strtotime($curDate. ' + '.$day.' days'));
}
echo $mon;
echo '<br>';
echo $sat;
person user3656092    schedule 23.07.2015