2017-03-07 125 views
1

感謝您花時間審查我的問題。我應該說我不是一個專家的PHP開發人員,但我知道足夠危險!PHP日曆Foreach循環不按預期方式工作

我目前正在設置PHP日曆,如果您願意,可以在特定日期顯示「事件」。

我已經修改了下面的代碼:http://www.codesend.com/view/84dba4acad5998d6fd4119c0c758dc52/

目前,我能夠得到foreach循環都要經過天,顯示自舉模式對話框按鈕每個工作日的數據是存在的。在使用print_r &預標籤進行調試時,我可以看到每個日期的值都正確顯示,但由於某種原因,它會在所有日期內複製我的數據,而不是將每天的數據放在正確的日期。

我試過在當前的foreach循環內做一個額外的foreach循環,這似乎不工作,或者我沒有正確地做。

在屏幕截圖中,您會看到「No」&這兩天的「待定」。但是,當我點擊查看請求時,它只顯示凱利的待處理記錄。 (注意,這3條記錄,在最高層是我的測試記錄,它表明,他們應該被分配到的日期)

我的代碼問題所在塊如下

http://imgur.com/a/hBTu4

foreach($events[$event_day] as $event => $value) { 

    $calendar.= '<div class="event">'; 

    //Debugging 
    $calendar.= '<pre>'. $value['status'] .'</pre>'; 

    $status = trim($value['status']);  



    //if ($inc < 1){ 
    $calendar.= '<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal"> 
     View Requests 
    </button>'; 
    //} 
    $calendar.='<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
     <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
      <h4 class="modal-title" id="myModalLabel" style="text-align:center;">Agent Requests for - </h4> 
      </div> 
      <div class="modal-body"><div class="row"><div class="col-md-4" style="border-right:1px solid gainsboro;min-height:250px;text-align:center;"><span class="label label-success" style="font-size:14px;">Approved</span><hr/>'; 

    if ($status == 'Yes') { 
     $calendar.= '<li>'.$value['title'] .' ' .$value['title2'].'</li>'; 
    } 
    $calendar.='</div><div class="col-md-4" style="border-right:1px solid gainsboro;min-height:250px;text-align:center;"><span class="label label-danger" style="font-size:14px;">Denied</span><hr/>'; 
    if ($status == 'No') { 
     $calendar.= '<li>'.$value['title'] .' ' .$value['title2'].'</li>'; 
    } 
    $calendar.='</div><div class="col-md-4" style="text-align:center;"><span class="label label-warning" style="font-size:14px;">Pending</span><hr/>'; 
    if ($status == 'Pending') { 
     $calendar.= '<li>'.$value['title'] .' ' .$value['title2'].'</li>'; 
    } 
    $calendar.='</div></div></div> 
      <div class="modal-footer"> 
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
      </div> 
     </div> 
     </div> 
    </div>'; 


    //End Event Div 
    $calendar.= '</div>'; 


    } 

在此先感謝您花時間看看這個!

+0

抱歉,我沒有看過你的問題正確,我會刪除我的答案 –

回答

0

你只看到第一個原因是因爲你的模式選擇器使用id屬性#myModal這應該是唯一的,所以停止尋找它找到的第一個之後。由於你在foreach循環中輸出模態內容,所以所有的div都有相同的id。

有很多方法可以解決這個問題,但我建議使用唯一的ID選擇器。您尚未提供任何示例數據來處理,但我會猜測並假設您有一個eventId或類似的事件數據對象。如果你沒有一個唯一的ID,那麼你可能會逃避使用事件名稱或其他東西,但是你應該在其中放入一個ID--特別是當你從你設計的數據庫中提取時。

下面是一些縮寫僞代碼:

foreach($events[$event_day] as $event => $value) { 
    // ... 

    // get some sort of uniquely identifying data attribute from the event 
    $eventId = trim($value['eventId']); 

    // ... 

    // uniquely select the modal content div with a distinct id 
    $calendar.= ' 
     <button 
      data-target="#myModal-' . $eventId . '" 
      type="button" 
      class="btn btn-primary btn-sm" 
      data-toggle="modal" 
     > 
     View Requests 
     </button>'; 

    // ... 

    // use this unique id when generating your modal content 
    $calendar.=' 
     <div 
      id="myModal-' . $eventId . '" 
      class="modal fade" 
      tabindex="-1" 
      role="dialog" 
      aria-labelledby="myModalLabel" 
     >'; 

    // ... 
} 
0

感謝傑夫!我注意到,在我把所有東西全部清除並且一步一步地重建它之後不久。另外,我的操作順序略有偏差。

解決方法:

1)設置ID形式的(否則它不知道看哪個天感謝傑夫)

2)重新排序模態元素不應該被重複的!在foreach循環之外。

以下是更正代碼:

$calendar.= '<div class="event">'; 

if(isset($events[$event_day])) { 
      //Display Button if Data Present on Day 
      $calendar.= '<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal-'.$list_day.'">View Requests</button>'; 

      //Build Modal & Table Headers 
      $calendar.='<div class="modal fade" id="myModal-'.$list_day.'" tabindex="-1" role="dialog" aria-labelledby="myModalLabel-'.$list_day.'"> 
           <div class="modal-dialog" role="document"> 
            <div class="modal-content"> 
            <div class="modal-header"> 
             <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
             <h4 class="modal-title" id="myModalLabel-'.$list_day.'" style="text-align:center;">Agent Requests for - '.$event_day.'</h4> 
            </div> 
            <div class="modal-body"> 
             <div class="row"> 
             <table class="table table-striped"> 
              <thead> 
               <tr> 
                <th style="text-align:center;"><i class="fa fa-cog" aria-hidden="true"></i></th> 
                <th>Agent Name</th> 
                <th>Status</th> 
                <th>Hours</th> 

               </tr> 
              </thead> 
              <tbody>'; 


      foreach($events[$event_day] as $event) { 

       //Start Table Row 
       $calendar.='<tr>'; 

        //Edit Button 
        $calendar.='<td style="text-align:center;"><a title="Edit Record" class="btn btn-default" href="edit-time.php?id='.$event['number'].'"><em class="fa fa-pencil"></em></a>'; 

        //Status Indicator 
        $calendar.= '<td>'.$event['title'] .' ' .$event['title2'].'</td><td>'; 
         if ($event['status'] == 'Yes'){  
         $calendar.= '<span class="label label-success" style="font-size:14px;">Approved</span>'; 
         } 
         if ($event['status'] == 'No'){  
         $calendar.= '<span class="label label-danger" style="font-size:14px;">Denied</span>'; 
         } 
         if ($event['status'] == 'Pending'){  
         $calendar.= '<span class="label label-warning" style="font-size:14px;">Pending</span>'; 
         } 

        //Hours 
        $calendar.= '<td>'.$event['hours'].'</td>'; 


       //End Table Row  
       $calendar.='</tr>'; 

       } 
      //End Table Body & End Modal 
      $calendar.='</tr></tbody></table></div></div> 
         <div class="modal-footer"> 
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
         </div> 
        </div> 
        </div> 
       </div>'; 
     } 
     else { 
      //No Data 
      $calendar.= str_repeat('<p>&nbsp;</p>',2); 
     } 

    //End Event Div 
    $calendar.= '</div>'; 

希望這可以幫助其他人!

最佳, 將

相關問題