0

我需要在成员资料中添加“最后一个成员主题”,以便它显示成员写的最后 5 个主题。

我使用了这段代码:

$last_topic = mysql_query("SELECT * FROM " .prefix. "TOPICS WHERE T_AUTHOR = '".$ProMemberID."' ORDER BY T_DATE DESC LIMIT 5") or die (mysql_error());
 $result = mysql_num_rows($last_topic);
if ($result > 0){
$rslast = mysql_fetch_array($last_topic);
$topic_id = $rslast['TOPIC_ID'];
$topic_subject = $rslast['T_SUBJECT'];
$topic_mes = $rslast['T_MESSAGE'];
$t_ret = $rslast['T_ENUM'];
$i=0;
   while ($i < $result){

echo '<tr>
  <td colSpan="2" align="center" class="userdetails_data" width="100%">
  <table border="0" width="100%">
   <tr>
   <td>

  <font style="font-size: 9pt" face="Arial"><a href="index.php?mode=t&t='.$topic_id.'">
  '.$topic_subject.'</a> 
    </td>
    <td  class="editedby" width="130">
    <font face="Arial" style="font-size: 9pt"> Edited 
    : 
    '.$t_ret.'</font></td>
   </tr>
  </table>
  </td>
 </tr> 
 ';  



    ++$i;

  }

}else {
echo '<tr><td colSpan="2" align="center" class="userdetails_data" width="100%">
  <span lang="ar-eg">
  <font color="#FF0000" style="font-size: 9pt" face="Arial">This member has no topics yet! </font></span></td></tr>';
}

它有效,但在 5 行中显示相同的主题??!!

任何解决方案?

4

2 回答 2

1

这是因为您正在分配 $rslast 一次,然后在循环中使用此变量,

试试这个

                $last_topic = mysql_query("SELECT * FROM " .prefix. "TOPICS WHERE T_AUTHOR = '".$ProMemberID."' ORDER BY T_DATE DESC LIMIT 5") or die (mysql_error());
            $result = mysql_num_rows($last_topic);
            if ($result > 0){
                while($rslast = mysql_fetch_array($last_topic)) {


            $topic_id = $rslast['TOPIC_ID'];
            $topic_subject = $rslast['T_SUBJECT'];
            $topic_mes = $rslast['T_MESSAGE'];
            $t_ret = $rslast['T_ENUM'];
            echo '<tr>
              <td colSpan="2" align="center" class="userdetails_data" width="100%">
              <table border="0" width="100%">
               <tr>
               <td>

              <font style="font-size: 9pt" face="Arial"><a href="index.php?mode=t&t='.$topic_id.'">
              '.$topic_subject.'</a> 
                </td>
                <td  class="editedby" width="130">
                <font face="Arial" style="font-size: 9pt"> Edited 
                : 
                '.$t_ret.'</font></td>
               </tr>
              </table>
              </td>
             </tr> 
             ';  


            }

            }else {
            echo '<tr><td colSpan="2" align="center" class="userdetails_data" width="100%">
              <span lang="ar-eg">
              <font color="#FF0000" style="font-size: 9pt" face="Arial">This member has no topics yet! </font></span></td></tr>';
            }
于 2012-11-23T12:41:22.090 回答
0

您将获得相同的值,因为您的$resultvar 具有来自查询的总行数,在这种情况下为 5,而您将值保存到 variable $rslast,而不是使用 while 循环,以便您可以循环数组值。

$last_topic = mysql_query("SELECT * FROM " .prefix. "TOPICS WHERE T_AUTHOR = '".$ProMemberID."' ORDER BY T_DATE DESC LIMIT 5") or die (mysql_error());
$result = mysql_num_rows($last_topic);

if ($result > 0){
   while($rslast = mysql_fetch_array($last_topic,MYSQL_ASSOC)) {
   //^-----while Loop added to loop through arrays, ^----associative array
     $topic_id = $rslast['TOPIC_ID'];
     $topic_subject = $rslast['T_SUBJECT'];
     $topic_mes = $rslast['T_MESSAGE'];
     $t_ret = $rslast['T_ENUM'];

     echo '<tr>
     <td colSpan="2" align="center" class="userdetails_data" width="100%">
       <table border="0" width="100%">
       <tr>
       <td>

       <font style="font-size: 9pt" face="Arial"><a href="index.php?mode=t&t='.$topic_id.'">
  '.$topic_subject.'</a> 
       </td>
       <td  class="editedby" width="130">
       <font face="Arial" style="font-size: 9pt"> Edited :'.$t_ret.'</font></td>
       </tr>
      </table>
     </td>
   </tr>';        
 }}else {

echo '<tr><td colSpan="2" align="center" class="userdetails_data" width="100%">
  <span lang="ar-eg">
  <font color="#FF0000" style="font-size: 9pt" face="Arial">This member has no topics yet! </font></span></td></tr>';
}
于 2012-11-23T12:39:58.677 回答