开发者

Using foreach to display results

I'm trying to write some sort of forum homepage, based off work someone else did. Here's what I've got so far:

Forums

<?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 (开发者_如何学Go$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
 }
?>

This is the current data in the table:

Using foreach to display results

Now, when I try to use this code, I get this:

Using foreach to display results

, such that the first one is shown so many times, however, the next one does not appear.

How do I fix this?


you want to use $value['threadcount'] etc. $forum is the array containing all the rows. i wonder that you get some output at all …

fetch_assoc() will only fetch a single row from the resultset. you'd have to use a loop to fill an array:

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

you can then iterate over your $forum array with a foreach loop:

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

trying to fix this mess …

<?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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜