Вставьте все даты между двумя датами в базу данных Mysql с противоположными данными - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь вставить строки в БД между двумя датами.

Вот моя таблица

enter image description here

Пользовательзаполнит краткую форму с указанием даты начала и окончания, а также значения для первой недели (0 или 1)

$Start=$_GET['Start'];
$End=$_GET['End'];
$WorkDays=$_GET['WorkDays'];

$WorkDays равно либо 0, либо 1 (0 - понедельник, вторник, вторник и 1 -чт, пт, сб)

Я могу вставить штраф за первую неделю, используя следующее:

$mon=$Start;              
$tue=date('Y-m-d', strtotime($Start. ' + 1 days'));
$wed=date('Y-m-d', strtotime($Start. ' + 2 days'));
$thu=date('Y-m-d', strtotime($Start. ' + 3 days'));
$fri=date('Y-m-d', strtotime($Start. ' + 4 days'));
$sat=date('Y-m-d', strtotime($Start. ' + 5 days'));

if($WorkDays==1){$monWork=1; $tueWork=1; $wedWork=1; $thuWork=0; $friWork=0; $satWork=0; }
if($WorkDays==2){$monWork=0; $tueWork=0; $wedWork=0; $thuWork=1; $friWork=1; $satWork=1; }      

Тогда у меня есть запросы на вставку для каждого дня понедельника-субботы.

Затем мне нужен один и тот же сценарий для просмотра всех дат между началом и концом и вставки в один и тот же БД, но каждый день должен иметь значение oposite дня последних недель.

EG

Неделя 1: пн = 1, вт = 1, ср = 1, чт = 0, пт = 0, сб = 0
неделя 2: пн = 0, вт =0, ср = 0, чт = 1, пт = 1, сб = 1

Вот что я пробовал:

//Get the date 1 after the start date as first week already inserted
   $SevenDays=date('Y-m-d', strtotime($Start. ' + 7 days'));  
    $startTime = strtotime( $SevenDays);
    $endTime = strtotime( $End );

//Loop through each day between the start and end date
    for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) { 
    $given_date =  date( 'Y-m-d', $i );
    $given_date_day =  date( 'l', $i );

//Select the same day the week before
    $result1512=mysql_query("SELECT * FROM RosteredPatternHours where PatternID='$PatternID' and WorkingDate='$SevenDaysGiven'")or die('Error 84' . mysql_error());
        for ($ii = 1; $ii <= mysql_num_rows($result1512); $ii++) {
        $row = mysql_fetch_array($result1512);  
        $Day = $row ['Day'];
        $Working = $row ['Working'];

//Set Working to opposite of last week
        if($Working==1){$WorkingDay=0;}
        if($Working==0){$WorkingDay=1;}

Затем я добавляю свой запрос на вставку.

Это, кажется, добавляет только одну неделю, а не все дни между началом и концом

...