具有相同值的不同变量会相互影响

时间:2018-12-22 21:59:35

标签: php codeigniter datetime variables

问题: 关于日期时间是否有一些奇怪的事情会影响变量的赋值?

情况: 从控制器中,我传递了一个变量$ startDate,并在视图中将其分配给不同的变量$ day1,$ day2等。我在$ day1上经历了一个循环,并使用$ day1修改了一天以将$ day1递增1 ->修改(“ +1天”)

$ day2循环(在else部分中)不会触发,因为$ startDate的值太高。但是,它的值应与修改前的$ day1相同。

代码:

控制器

    public function appointmentSearch()
{
    $counselor = $this->session->userdata('idUser');

    if($this->input->post('SearchAppointments'))
    {
        $fromDate = $_POST['fromDate'];
        $fromTimeSlot = $this->Admin_model->TimeConversion($_POST['fromTime']);
        $toDate = $_POST['toDate'];
        $toTimeSlot = $this->Admin_model->TimeConversion($_POST['toTime']);

        $theStart = new DateTime($fromDate);
        $theEnd = new DateTime($toDate);
        $difference = $theEnd->diff($theStart);
        $dayCount = $difference->d;
        $timeCount = (int)$toTimeSlot-(int)$fromTimeSlot;

        $data['schedule'] = true;
        $data['days'] = $dayCount;
        $data['slots'] = $timeCount;
        $data['dayStart'] = $theStart;
        $data['dayEnd'] = $theEnd;
        $data['slotStart'] = $fromTimeSlot;
        $data['slotEnd'] = $toTimeSlot;

        $data['r1Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,1);  
        $data['r2Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,2);
        $data['r3Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,3);
        $data['r4Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,4);
        $data['r5Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,5);
        $data['r6Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,6);
        $data['r7Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,7);
        $data['r8Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,8);
        $data['r9Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,9);
        $data['r10Data'] = $this->Admin_model->GetOpenApptTimes($fromDate,$fromTimeSlot,$toDate,$toTimeSlot,10);

        $this->load->view('admin/scheduler',$data);
    }

}

视图:

        <?php 
        if($schedule == true)
        { //if false we have search results
            //classes for the form
            $attributes = array('class' => 'row');
            //normal attributtes for the time slots if they are blacked out
            $subAttUnav = array('class' => 'btn btn-secondary btn-sm');
            // if the used time slot is someone they can ask to move
            $subAttMove = array('class' => 'btn btn-secondary btn-sm', 'style' => 'background:darkgrey;');
            // it's wide open
            $subAttOpen = array('class' => 'btn btn-secondary btn-sm');

            if(count($r1Data) >= 1)
            { //room 1 has appoints scheduled during the time frame queried
                echo '<div class="row" style="width:70%;margin:0 auto;"><h3 class="highlight">Room 1</h3>';
                $day1 = $dayStart;
                while($day1 <= $dayEnd)
                {
                    $day1format = $day1->format('Y-m-d-H-i-s');
                    $dayArray = explode('-',$day1format);
                    for($i = 0;$i <= $slots; $i++)
                    {
                        $timeslot = $slotStart + $i;
                        $label = 'Book: ' . $timeslot . ':00 on ' . $dayArray[1] . '/' . $dayArray[2] . ' ';

                        foreach($r1Data as $index)
                        {
                            $row = explode('-',$index);
                            //var_dump($row);
                            $thisDay = $dayArray[0] . '/' . $dayArray[1] . '/' . $dayArray[2];
                            //echo '$thisDay =' . $thisDay . '</br>';
                            $apptDay = $row[6] . '/' . $row[7] . '/' . $row[8];
                            //echo '$apptDay =' . $apptDay . '</br>';
                            //echo '$timeslot =' . $timeslot . '</br>';
                            //echo '$row[9] =' . $row[9] . '</br>';

                           if($thisDay == $apptDay && $timeslot == (int)$row[9])
                            { // the appointment date and timeslot matches current slide
                                echo '<div class="btn btn-secondary btn-sm m-1" style="background:black;" title="Time unavailable">' . $label . '</div>'; 
                            }
                            else
                            { 
                                echo form_open('AdminForms/booking/' . $dayArray[0] . '/' . $dayArray[1] . '/' . $dayArray[2] . '/' . $timeslot . '/1', $attributes);
                                echo form_submit("Book",$label,$subAttOpen);
                                echo form_close();
                            }
                        }
                    }
                    $placeholder = $day1->modify('+1 day');
                    $day1 = $placeholder;
                }
                echo '</div><!-- End of Room 1 data -->';
            }
            else
            { // no results on query the time frame is wide open
                echo '<div class="row" style="width:70%;margin:0 auto;"><h3 class="highlight">Room 1</h3>';
                $day1 = $dayStart;

                while($day1 <= $dayEnd)
                {
                    $day1format = $day1->format('Y-m-d-H-i-s');
                    $dayArray = explode('-',$day1format);
                    for($i = 0;$i <= $slots; $i++)
                    {
                        $timeslot = $slotStart + $i;
                        $label = 'Book: ' . $timeslot . ':00 on ' . $dayArray[1] . '/' . $dayArray[2] . ' ';
                        echo form_open('AdminForms/booking/' . $dayArray[0] . '/' . $dayArray[1] . '/' . $dayArray[2] . '/' . $timeslot . '/1', $attributes);
                        echo form_submit("Book",$label,$subAttOpen);
                        echo form_close();
                    }
                    $placeholder = $day1->modify('+1 day');
                    $day1 = $placeholder;

                }
                echo '</div><!-- End of Room 1 data -->';
                var_dump($dayStart);
            }

            if(count($r2Data) >= 1)
            { //room 1 has appoints scheduled during the time frame queried
                echo '<div class="row" style="width:70%;margin:0 auto;"><h3 class="highlight">Room 2</h3>';
                $day2 = $dayStart;

                while($day2 <= $dayEnd)
                {
                    $day2format = $day2->format('Y-m-d-H-i-s');
                    $day2Array = explode('-',$day2format);
                    for($i = 0;$i <= $slots; $i++)
                    {
                        $timeslot = $slotStart + $i;
                        $label = 'Book: ' . $timeslot . ':00 on ' . $day2Array[1] . '/' . $day2Array[2] . ' ';

                        foreach($r2Data as $index)
                        {
                            $row = explode('-',$index);
                            //var_dump($row);
                            $thisDay = $day2Array[0] . '/' . $day2Array[1] . '/' . $day2Array[2];
                            //echo '$thisDay =' . $thisDay . '</br>';
                            $apptDay = $row[6] . '/' . $row[7] . '/' . $row[8];
                            //echo '$apptDay =' . $apptDay . '</br>';
                            //echo '$timeslot =' . $timeslot . '</br>';
                            //echo '$row[9] =' . $row[9] . '</br>';

                           if($thisDay == $apptDay && $timeslot == (int)$row[9])
                            { // the appointment date and timeslot matches current slide
                                echo '<div class="btn btn-secondary btn-sm m-1" style="background:black;" title="Time unavailable">' . $label . '</div>'; 
                            }
                            else
                            { 
                                echo form_open('AdminForms/booking/' . $day2Array[0] . '/' . $day2Array[1] . '/' . $day2Array[2] . '/' . $timeslot . '/1', $attributes);
                                echo form_submit("Book",$label,$subAttOpen);
                                echo form_close();
                            }
                        }
                    }
                    $placeholder2 = $day2->modify('+1 day');
                    $day2 = $placeholder2;
                }
                echo '</div<!-- End of Room 2 data -->';
            }
            else
            { // no results on query the time frame is wide open
                echo '<div class="row" style="width:70%;margin:0 auto;"><h3 class="highlight">Room 2</h3>';
                $day2 = $startDate;
                while($day2 <= $dayEnd)
                {
                    $day2format = $day2->format('Y-m-d-H-i-s');
                    $day2Array = explode('-',$day2format);
                    for($i = 0;$i <= $slots; $i++)
                    {
                        $timeslot = $slotStart + $i;
                        $label = 'Book: ' . $timeslot . ':00 on ' . $day2Array[1] . '/' . $day2Array[2] . ' ';
                        echo form_open('AdminForms/booking/' . $day2Array[0] . '/' . $day2Array[1] . '/' . $day2Array[2] . '/' . $timeslot . '/1', $attributes);
                        echo form_submit("Book",$label,$subAttOpen);
                        echo form_close();
                    }
                    $placeholder2 = $day2->modify('+1 day');
                    $day2 = $placeholder2;
                }
                echo '</div><!-- End of Room 2 data -->';
            }

0 个答案:

没有答案
相关问题