2015-07-23 1 views
1

J'ai codé un programme dans lequel je peux obtenir des données des 7 derniers jours. Mais je veux que mes données soient visibles de La semaine dernière et la semaine commence du lundi et se termine le dimanche. Puis lundi prochain commence la semaine prochaine. Donc, je veux si aujourd'hui est mercredi et si je clique sur le rapport de la semaine. Ensuite, il devrait obtenir des données jusqu'à lundi dernier seulement. Comme (mercredi, mardi, lundi) Mais mon système compte 7 jours complets. Voici mes codes.comment obtenir des données hebdomadaires. Seulement jusqu'à lundi à dimanche prochain

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 } ?> 

j'espère obtenir de l'aide bientôt

+0

Quel est le problème avec le code actuel? Peut-être que c'est utile? http://stackoverflow.com/questions/15154655/mysql-getting-records-over-the-last-working-week – chris85

+0

il affiche les données des 7 derniers jours .. Je veux que les données jusqu'à lundi dernier que je veux dire faible commence à partir de lundi se termine dimanche. Donc, il devrait obtenir des données jusqu'à lundi dernier –

+0

Essayez SQL réponse liée ci-dessus – chris85

Répondre

0

Essayez cela, il peut vous aider à

<?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 } ?> 
+0

Cela a fonctionné .. Merci beaucoup @Dhinjy –

+0

merci @ M.BABERZaman –

0

Vous pouvez essayer ceci:

//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); 
+0

Je suis désolé mais pourquoi $ currentDay = 6; Cela signifie que nous commandons le système qu'aujourd'hui est le 6ème jour de la semaine ?? –

+0

Votre semaine commence par lundi ($ currentDay = 0) et le dernier jour est dimanche ($ currentDay = 6). Donc si aujourd'hui c'est dimanche, vous devrez soustraire 6 jours de l'horodatage actuel pour obtenir l'horodateur de lundi. – Typoheads

0

Get date de lundi de la date donnée. Voici ma date donnée est le 15 Juillet 2015.

echo date("Y-m-d", strtotime("previous monday", strtotime("2015-07-15"))); 
0

Essayez ce code:

$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;