根据周期间隔,一天和现有日期生成日期

I have a database with different workdates, and I have to make a calculation that generates more dates based on a weekinterval (stored in the database) and the (in the database stored) days on which the workdays occur. What my code does now is the following:

  • Read the first two workdates -> Calculate the weeks inbetween and save the week interval
  • Read all the workdates -> fill in the days on which a workdate occurs and save it in a contract.
  • Generate workdates for the next year, based on the week interval.

The point is: for each week with a week interval of 1, more days of the week should be saved as a workdate. I've used this code to do this, but it doesn't work.

// Get the last workdate's actdate.
$workdate_date = $linked_workdate['Workdate']['workdate_actdate'];
// Calculate the new workdate's date
$date = date("Y-m-d", strtotime($workdate_date . "+" . $interval . " week"));

// If 'Monday' is filled in for this contract, calculate on which day the 
// Monday after the last interval is. Same for each day, obviously.
// The days are boolean.
if ($contract['Contract']['contract_maandag'] = 1){ 
    $date = date("Y-m-d", strtotime($date, "next Monday"));
}
if ($contract['Contract']['contract_dinsdag'] = 1){
    $date = date("Y-m-d", strtotime($date, "next Tuesday"));           
}
// After this, save $date in the database, but that works. 

Here is the error that i get: strtotime() expects parameter 2 to be long, string given

I'm quite stuck right now, so help is appreciated!

if ($contract['Contract']['contract_maandag'] = 1){ 
if ($contract['Contract']['contract_dinsdag'] = 1){

This won't work. You're doing an assignment (=), so it's always true. But you want a comparison (===). It is recommended to do always (except required otherwise) to use strict (===) comparison.

Well, the = doesn't seem to be the problem, since the error is about the part that's after the comparison. Try

strtotime("$date next Monday");