foreach打印出每个标题,我得到了所有的手风琴,但除第一个手风琴之外的所有手风琴都是空的。我错过了什么?
$result2 = mysqli_query($con, "SELECT * FROM sections ORDER BY `order`");
$sectionnames = array();
while($row = mysqli_fetch_array($result2)) {
$sectionnames[] = $row['sectionname'];
}
$result = mysqli_query($con,"SELECT * FROM faq ORDER BY `order`");
foreach ($sectionnames as $sectionname) {
echo '<h3 id="sectionname">' . $sectionname . '</h3>';
echo '<div id="accordion">';
while($row = mysqli_fetch_array($result)) {
if ($sectionname == $row['section']) {
echo '<h3>' . $row['heading'] . '</h3>';
echo '<div>' . $row['content'] . '</div>';
}
}
echo '</div>';
}
答案 0 :(得分:1)
没有你的架构我不能确定,但看起来faq与sectionname相关。如果这是真的,就像这样:
foreach ($sectionnames as $sectionname) {
echo '<h3 id="sectionname">' . $sectionname . '</h3>';
echo '<div id="accordion">';
$result = mysqli_query($con,"SELECT * FROM faq where section = '$sectionname' ORDER BY `order`");
while($row = mysqli_fetch_array($result)) {
echo '<h3>' . $row['heading'] . '</h3>';
echo '<div>' . $row['content'] . '</div>';
}
echo '</div>';
}
答案 1 :(得分:0)
echo '<div id="accordion">';
while($row = mysqli_fetch_array($result))
这将有效地消耗查询结果中的每一行并将其放在第一个手风琴中。
对于其他所有$sectionname
,您的$result
已经用尽,因此会生成空的accordion
,因为您没有意识到任何新的查询。
答案 2 :(得分:0)
我只需要在while循环之前添加此代码
mysqli_data_seek($result, 0);