2014-05-09 5 views
0

항상 다른 정보를 보여주는 모달을 구현하려고합니다. 클릭하는 이름에 따라 다릅니다. 현재 그는 항상 최신 링크의 모달을 보여줍니다.foreach()와 다른 모달 diaglog 열기

다른 정보를 인쇄하고 있습니다. 각 라인을 위해 내가 링크에서 $notifications['challenge_badge_title']와 'myModal'교체하려고 특정 모달

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>"; 
} 
?> 

및 메일의 ID를 원하지만 그는 모달을 열 수 없습니다.

제목이 항상 달라서 다른 창을 열 것 같아요. 이드는 다른 단어와 함께 작동하기 때문에 "MyModal"일 필요는 없습니다.

서로 겹쳐 쓰므로 데이터를 다른 배열에 넣으려고했습니다. 그러나 그것도 내 문제를 해결하지 못할 것입니다.

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

당신은 아마도 각각의 고유 한 ID를 모달 제공해야합니다 : 오류 코드와 함께 여기에있다처럼

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

는 것 같습니다. CSS/JS 사양에서 ID를 한 번만 사용할 수 있다고 말하면 ID가 여러 번 사용될 때 제대로 작성된 Javascript 응용 프로그램이 넘어집니다.

내 솔루션 아래에 이터레이터 $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