2011-06-18 58 views
2

我想寫某種論壇主頁,根據別人做的工作。下面是我到目前爲止有:使用foreach顯示結果

論壇

<?php 
$crumbs = explode(",", $user['data']['depts']); 

foreach ($crumbs as &$value) { 
    $data = $db->query("SELECT * FROM tbl_depts WHERE id = '" . $value . "'"); 
    $crumb = $data->fetch_assoc(); 
    $data = $db->query("SELECT * FROM tbl_forums WHERE deptid = '" . $value . "'"); 
    $forumcount = $data->num_rows; 
    $forum = $data->fetch_assoc(); 
?> 


<div class="h3top"><?php echo $crumb['name']; ?></div> 
<div class="info2alt"> 
<?php 
    while (($row = $data->fetch_array()) !== FALSE) { 
     $forum[] = $row; 
    } 

    foreach ($forum as $row) { 

     if ($forumcount >= 1) { 
      if ($forum['lastpost'] == "") { 
       $forum['lastpost'] = "--"; 
      } 
?> 
      <div class="info4"> 
       <table width="100%" border="0" cellspacing="1" cellpadding="4"> 
        <tr> 
         <td width="55%" align="left" valign="middle" class="zebraodd"><a href="/forums/viewforum?id=<?php echo $forum['fid']; ?>"><?php echo $row['name']; ?></a></td> 
         <td width="10%">Threads: <?php echo $forum['threadcount']; ?><br />Posts: <?php echo $forum['postcount']; ?></td> 
         <td width="35%">Last Post: <?php echo $forum['lastpost']; ?></td> 
        </tr> 
       </table> 
      </div> 
<?php 
} 
?> 
     <?php if ($forumcount >= 1) { ?> 
      <div class="info3bottom"></div> 

      <?php 
     } 
    } 
    ?> 
</div> 
<?php 
} 
?> 

這是在表中的當前數據:

Table Data

現在,當我嘗試使用此代碼,我得到這個:Issue,這樣第一個被顯示很多次,但是,下一個不會出現。

我該如何解決這個問題?

回答

4

你想使用 $value['threadcount']$forum是包含所有行的數組。我不知道你會得到一些輸出...

fetch_assoc()將只從結果集中獲取單個行。你必須使用循環來填充數組:

while(($row = $data->fetch_assoc()) !== FALSE) { 
    $forum[] = $row; 
} 

,你可以在你的$forum陣列foreach循環然後循環:

foreach($forum as $row) { 
    echo htmlspecialchars($row['threadcount']); 
    // etc. 
} 

試圖解決這個爛攤子......

<?php 

$crumbs = explode(",", $user['data']['depts']); 

foreach ($crumbs as $crumb) { ?> 
    <div class="h3top"><?php echo htmlspecialchars($crumb['name']);?></div> 
<? 
} 

$result = $db->query("SELECT * FROM tbl_forums WHERE deptid = " . (int)$id . ""); 
$forumcount = $result->num_rows; 

while(($row = $data->fetch_assoc()) !== FALSE) { 
    if ($row['lastpost'] == "") { $row['lastpost'] = "--";} 
?> 
    <div class="info2alt"> 
    <div class="info4"> 
    <table width="100%" border="0" cellspacing="1" cellpadding="4"> 
    <tr> 
    <td width="55%" align="left" valign="middle" class="zebraodd"><a href="/forums/viewforum?id=<?php echo urlencode($forum['fid']); ?>"><?php echo htmlspecialchars($forum['name']); ?></a></td> 
    <td width="10%">Threads: <?php echo htmlspecialchars($forum['threadcount']); ?><br />Posts: <?php echo htmlspecialchars($forum['postcount']); ?></td> 
    <td width="35%">Last Post: <?php echo htmlspecialchars($forum['lastpost']); ?></td> 
    </tr> 
    </table> 
    </div> 

    <div class="info3bottom"></div> 
<?php 
} 
?> 
+0

使用$值給我一個序列化的字符串,然後完成:未初始化的字符串偏移:0在/ home/erp/public_html/forums/home .php在第28行。這個id,在這一點上仍然是1. – bear

+0

還是不喜歡它:允許內存大小33554432字節用盡(試圖分配32字節) – bear

+0

另外,我想如果一定要在你的外面foreach循環。在這段代碼中有不止一個東西是可疑的(例如sqli和xss) – knittl