2011-08-02 155 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) {....