Renne Renne - 1 month ago 11
PHP Question

PHP show date2 if date1 passed

I need help on this..

I am new in php and dummy..

$displaydate = "";

$paydate1 = "23-10-2016";
$paydate2 = "23-11-2016";
$paydate3 = "23-12-2016";
$paydate4 = "23-01-2017";
$paydate5 = "23-02-2017";
$paydate6 = "23-03-2017";




if todaydate is 23-10-2016 then $displaydate = "$paydate2" until 22-11-2016. When 23-11-2016 then $displaydate = "$paydate3" and so on.



then results
if the date is 23-10-2016 until 22-11-2016 $displaydate = "$paydate2"
if the date is 23-11-2016 until 22-12-2016 $displaydate = "$paydate3"
if the date is 23-12-2016 until 22-01-2016 $displaydate = "$paydate4"
if the date is 23-01-2016 until 22-02-2016 $displaydate = "$paydate5"
if the date is 23-02-2016 until 22-03-2016 $displaydate = "$paydate6"


please help with the code...

Thanks..

IM php DUMMY

Answer

Organize your data convenient so you can easy access it. Put your paydates it an array:

$paydate = ["23-10-2016","23-11-2016","23-12-2016","23-01-2017","23-02-2017","23-03-2017"];

UPDATED per your comment:

$payout1 = $this->data->paymentdate1; 
$payout2 = $this->data->paymentdate2; 
$payout3 = $this->data->paymentdate3; 
$payout4 = $this->data->paymentdate4; 
$payout5 = $this->data->paymentdate5; 
$payout6 = $this->data->paymentdate6; 

$paydate = [$payout1,$payout2,$payout3,$payout4,$payout5,$pa‌​yout6];

Transform the dates in an easy to sort format:

function trf_date($date)
{
    return date('Y-m-d', strtotime($date));
}
$paydate = array_map("trf_date", $paydate );

Sort the array to be sure we will get the dates in ascending order while looping.

sort($paydate);

Now loop through the array to find the first date higher then today:

foreach($paydate as $key=>$val){
   if($val > date('Y-m-d'))
     break;
}

$displaydate = ''; //initialize the output variable

//check to see if the last retrieved date meets the condition not to be in the past. 
//this is for the case all dates in the array are in the past
if(isset($paydate[$key]) && $paydate[$key] > date('Y-m-d'))
   $displaydate = $paydate[$key];
Comments