2017-03-07 12 views
1

私の質問を確認する時間をとってくれてありがとう。私は専門のPHP開発者ではないと言って前置きするべきですが、私は危険なほど十分に知っています!PHPカレンダーForeachループが期待通りに機能しない

私は現在、特定の日に「イベント」を表示するPHPカレンダーを設定しています。私は次のコードを変更した

:現在http://www.codesend.com/view/84dba4acad5998d6fd4119c0c758dc52/

を、私は日を経ると、データが存在することを日ごとにブートストラップモーダルボックスのボタンを表示するには、foreachループを取得することができますよ。 print_r &タグを使用してデバッグすると、値が正しく表示されていることがわかりますが、何らかの理由で、各日のデータを正しい日に配置するのではなく、すべての日にデータを複製しています。

私は現在のforeachループ内で追加のforeachループを実行しようとしましたが、動作していないように見えるか正しく動作しません。

スクリーンショットでは、2日で "いいえ" & "保留中"と表示されます。しかし、私はビューのリクエストをクリックすると、KellyのPendingレコードしか表示されません。以下のように(注、非常に上部の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>'; 

希望:

は、ここで修正されたコードです!

ベスト、 は

関連する問題