2011-08-02 166 views
0

以下代碼僅抓取PHP while循環中最後一個結果的值。任何/所有的幫助非常感謝。謝謝!jquery只返回php while循環的最後結果

PHP/HTML/JS:

 <section id="info"> 
      <?php 
       $user = $session->username; 
       $q = sprintf("SELECT * FROM mail WHERE UserTo = '%s' ORDER BY SentDate DESC", 
         mysql_real_escape_string($user)); 
       $getMail = mysql_query($q, $link) or die(mysql_error()); 

       if(mysql_num_rows($getMail) == 0) { 
        echo "<p>you have no mail</p>"; 
       } 
       else { 
       ?> 
      <form id="inbox" class="mail"> 
       <fieldset> 
        <ul> 
         <li style="border: 2px solid purple; width: 100%;"> 
          <span style="width: 8%; margin-left: 13%;">Status</span> 
          <span style="width: 15%;">From</span> 
          <span style="width: 45%;">Subject</span> 
          <span style="width: 16%;">Time</span> 
         </li> 
       <?php 
         while($mail = mysql_fetch_object($getMail)) { 
          $status   =  $mail->status; 
          $mailId  =  $mail->mail_id; 
          $from   =  $mail->UserFrom; 
          $subject  =  $mail->Subject; 
          $received  =  $mail->SentDate; 
          $theMessage =  $mail->Message; 
         ?> 
         <li class="outerDiv" style="border: 2px dotted purple;"> 
          <button style="display: inline;" class="viewButton">View</button> 
          <button style="display: inline;">Delete</button> 
          <?php 
          echo "<span>" . $mail_id . "</span>"; 
          echo "<span style="display: inline-block; width: 8%; border: 1px solid red;'>" . $status . "</span>"; 
          echo "<span style='display: inline-block; width: 15%; border: 1px solid red;'>" . $from . "</span>"; 
          echo "<span style='display: inline-block; width: 45%; border: 1px solid red;'>" . $subject . "</span>"; 
          echo "<span style='display: inline-block; font-size: x-small; width: 17%; border: 1px solid red;'>" . $received . "</span>";      
          ?> 
         </li> 
       <?php } 

        } ?> 
        </ul> 
       </fieldset> 
      </form> 
     </section> 
     <section id="details"> 
      <div class="theMessage" style="display: none;"><?php echo $theMessage; ?></div> 
      <script type="text/javascript"> 
       $(document).ready(function() { 
        $(".outerDiv").click(function(e) { 
         if($(e.target).is(".viewButton")) { 
         $(".theMessage").fadeIn(1000); 
         } 
        }); 
        return false; 
       }); 
      </script> 
     </section> 
+0

我不認爲這個問題與HTML或jQuery有任何關係。請僅放置相關代碼,以便其他人能夠輕鬆理解並回答您的問題。 – Starx

+0

等等究竟是什麼問題? – kaveman

+0

你的代碼是正確的,據我所見,只是可以肯定的是,在使用'while'循環之前,嘗試查看輸出mysql_num_rows($ getMail)'它必須是一個.... – Starx

回答

0

當你說 「抓住最後的結果的價值,」 我猜你在談論以下行?

<div class="theMessage" style="display: none;"><?php echo $theMessage; ?></div> 

這就是while()外循環,所以是的,$theMessage將只保留在循環中的最後一個值。

看到你是如何開始else塊內的<form>但關閉</form>else塊之外,我猜你結束你的whileif-else太早。

0

首先,您的代碼中有語法錯誤。 轉義雙引號或爲HTML使用單引號。

0

您使用的是什麼JavaScript庫?看起來可能是JQuery?

如果您希望您的選擇器返回一個數組,那麼您需要使用迭代器來處理每個元素。嘗試每個迭代函數:http://api.jquery.com/each/

$('.outerDiv').each(function() { 
    this.click(function(e) {....