Использование foreach для отображения результатов - PullRequest
2 голосов
/ 18 июня 2011

Я пытаюсь написать какую-то домашнюю страницу форума, основываясь на работе, которую сделал кто-то другой. Вот что у меня так далеко:

Форум * * 1003 <?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, такое, что первый отображается так много раз, однако следующий не появляется. Как мне это исправить?

1 Ответ

4 голосов
/ 18 июня 2011

вы хотите использовать $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
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...