2014-05-09 18 views
0

我試圖實現一種顯示始終不同信息的模式。這取決於你點擊的名字。此時他總是展示最新鏈接的模式。使用foreach打開不同的模態診斷()

這裏我打印出不同的信息。對於每一行,我想一個特定的模式

PHP

foreach ($badgesNotifications as $notifications) { 

    echo "<p>Congratulations! You've earned the <a href='#' data-reveal-id='myModal'>" . $notifications['challenge_badge_title'] ." badge</a></p>"; 
    echo "<div id='myModal' class='reveal-modal' data-reveal> 
      <h2>" . $notifications['challenge_title'] . "</h2> 
      <p class='lead'>Your couch. It is mine.</p> 
      <p>" . $notifications['challenge_description'] . " </p> 
      <a class='close-reveal-modal'>&#215;</a> 
     </div>"; 
} 
?> 

我試圖在鏈接與$notifications['challenge_badge_title']替換「myModal」和郵件的ID,但後來他是不開放的模式。

標題總是不同,所以我認爲他會打開另一個窗口。該ID不必是「MyModal」所必需的,因爲它可以與其他單詞結合使用。

我也嘗試把數據放在不同的數組中,因爲它們是互相覆蓋的。但這也不能解決我的問題。

public function BadgeNotifications($user_id) 
    { 
     $db = new Db(); 

     $select = "SELECT 

          c.challenge_id, 
          c.challenge_title, 
          c.challenge_target, 
          c.challenge_description, 
          c.challenge_badge_img, 
          c.challenge_badge_title, 
          p.challenge_id, 
          p.user_id, 
          p.challenge_progress 


         FROM (tblchallenges c INNER JOIN tblchallenges_progress p ON c.challenge_id = p.challenge_id) WHERE p.user_id = " . $user_id . " "; 


    $result = $db->conn->query($select); 
     $result_count = mysqli_num_rows($result); 
     $result_array = array(); 


     for($i = 0; $i < $result_count; $i++) 
      { 
       $result_data = mysqli_fetch_assoc($result); 
       $result_array[$i]["challenge_id"] = $result_data["challenge_id"]; 
       $result_array[$i]["challenge_title"] = $result_data["challenge_title"]; 
       $result_array[$i]["challenge_description"] = $result_data["challenge_description"]; 
       $result_array[$i]["challenge_badge_title"] = $result_data["challenge_badge_title"]; 
      } 
     return $result_array; 

    } 
+1

什麼運行你的模態對話框?你使用Javascript嗎?快速瀏覽不會顯示您的PHP代碼的基本問題,但僅僅回顯某個班級不會給您一個模式窗口。 – freshnode

+0

我正在使用基金會http://foundation.zurb.com/docs/components/reveal.html中的模版。它爲每個通知提供一個模式窗口,但信息始終是最後通知的信息 – Lisa

回答

1

它看起來像這裏有一個錯誤與您的代碼:

echo "<div id='myModal' class='reveal-modal' data-reveal>"; 

你或許應該給每個模式的唯一ID。正確編寫Javascript應用程序時,由於CSS/JS規範說您只能使用一次ID,所以在使用ID不止一次時會出現這種情況。

我在下面的解決方案中引入了迭代器$i,您可以使用它來使每個回顯元素都是唯一的。

您會注意到模式ID現在在其末尾有一個數字(myModal0,myModal1等)。

foreach ($badgesNotifications as $i => $notifications) 
          { 

            echo "<p>Congratulations! You've earned the <a href='#' data-reveal-id='myModa" . $i . "l'>" . $notifications['challenge_badge_title'] ." badge</a></p>"; 

            echo "<div id='myModal" . $i . "' class='reveal-modal' data-reveal> 
             <h2>" . $notifications['challenge_title'] . "</h2> 
             <p class='lead'>Your couch. It is mine.</p> 
             <p>" . $notifications['challenge_description'] . " </p> 
              <a class='close-reveal-modal'>&#215;</a> 

             </div>"; 
          } 

          ?> 
+0

我想做類似的事情,所以感謝解決方案。當我不止一次地使用id時,我不知道js會摔倒! – Lisa