2017-08-26 1 views
-1

Je veux empêcher le calcul des amendes lorsque le jour est samedi et dimanche ou seulement le dimanche ne comprend pas les amendes. Je pense qu'il est préférable que nous utilisions l'emprunt, la date d'échéance, et returndate pour pleinement fonctionner à partir de ma base de données Merci!Comment ne pas calculer le week-end en pénalité en utilisant php

$borrowdate = new Datetime($row['date_return']); 
$returndate = new Datetime($row['due_date']); 
$currentdate = new Datetime();   
$fines = 0; 
if($currentdate > $returndate){ 
    $days = $borrowdate->diff($returndate ?? $currentdate, true)->days; 
    echo "₱ ". $fines = $days > 0 ? intval(floor($days)) * 15 : 0; 
    $fi = $row['borrow_details_id']; 
    mysqli_query($dbcon,"update borrowdetails set fines='$fines' where borrow_details_id = '$fi'"); 
} 
+0

Utilisez w pour le jour de la semaine. 0 pour dimanche et 6 pour Sartuday – peter

+0

@peter pouvez-vous me donner un exemple de vos codes? –

+0

Vous pouvez appeler la fonction de format sur l'objet 'DateTime' en passant le drapeau ** w ** et derteminer le jour de la semaine en fonction de ce résultat. Exactement ce que fait la réponse de @vladatr – peter

Répondre

0

Vous devez compter le nombre de jours ouvrables, et ensuite calculer votre amende.

$returnDate= new DateTime('2017-08-17'); 
    $today= new DateTime('2017-08-21 00:23:44'); 

    $returnDate->setTime(0,0); 
    $today->setTime(0,0); 

    $interval = DateInterval::createFromDateString('1 day'); 
    $period = new DatePeriod($returnDate, $interval, $today); 

$weekendDays = 0; 
$totalDays = 0; 
foreach ($period as $p) { 
    $totalDays++; 
    if($p->format("w")==0 or $p->format("w")==6) $weekendDays++; //6 - saturday, 0 - sunday 
} 

echo "<p>Total days: $totalDays</p><p>Weekend days: $weekendDays </p>"; 
    $fines = ($totalDays - $weekendDays) * 15; 
    echo "₱ ". $fines; 
    $fi = $row['borrow_details_id']; 
    mysqli_query($dbcon,"update borrowdetails set fines='$fines' where borrow_details_id = '$fi'"); 
+0

Je change déjà votre retourDate dans le mien aussi le aujourd'hui le change déjà en currentdate mais les pénalités comptent encore les week-ends et je supprime aussi le} du dernier parce qu'il devient erreur –

+0

Aha ... Le problème était que le signe> et vladatr

+0

il y a quelque chose de mal http://imgur.com/a/4dZU8 –

0

faites comme ceci premier découvrir le dayofweek de la date actuelle et vérifier si son dimanche ou samedi. La valeur retournée le jour de la semaine sera en nombre. 0 signifie dimanche et à 6 pour samedi.

$borrowdate = new Datetime($row['date_return']); 
    $returndate = new Datetime($row['due_date']); 
    $currentdate = new Datetime(); 
    $dayofweek = date('w', $currentdate->getTimestamp());  
    $fines = 0; 
    if($currentdate > $returndate){ 
     if($dayofweek != 0){ 
      $days = $borrowdate->diff($returndate ?? $currentdate, true)->days; 
      echo "₱ ". $fines = $days > 0 ? intval(floor($days)) * 15 : 0; 
      $fi = $row['borrow_details_id']; 
      mysqli_query($dbcon,"update borrowdetails set fines='$fines' where borrow_details_id = '$fi'"); 
     } 



    } 

    $newquery = mysqli_query($dbcon,"select fines from borrowdetails where borrow_details_id = '$fi'"); 
    $row = mysqli_fetch_assoc($newquery); 
    echo $row['fines']; 
+0

Les commentaires ne sont pas pour des discussions étendues ou des sessions de débogage; cette conversation a été [déplacée pour discuter] (http://chat.stackoverflow.com/rooms/152930/discussion-on-answer-by-anil-shrestha-how-to-prevent-weekend-include-in-fines- nous). Si vous rencontrez des problèmes supplémentaires, modifiez la question pour inclure les informations pertinentes. –