我正在尝试为我的代码提供结构,我遇到了一个问题。 我正在循环一个sql查询响应,并且我正在尝试检索其他相关元素的每个元素。它在我的控制器中工作没有问题,但是当我试图在视图中重复时,我总是得到相关元素的相同值
我的控制器:
<?php
include_once('class/guide.class.php');
$bdd = new DBHandler();
$req = guide::getGuides($bdd,0,5);
foreach ($req as $results => $poi)
{
$req[$results]['id'] = htmlspecialchars($poi['id']);;
$req[$results]['name'] = nl2br(htmlspecialchars($poi['name']));
$guide = new guide($results['name'],$bdd);
$guidePois = $guide->getGuidePois($poi['id']);
foreach ($guidePois as $res => $re)
{
echo $guidePois[$res]['id'];
echo $guidePois[$res]['name'];
$guidePois[$res]['id'] = htmlspecialchars($re['id']);
$guidePois[$res]['name'] = nl2br(htmlspecialchars($re['name']));
}
}
include_once('listing.php');
在这里,你看到我回显相关元素列表的ids /名称并且效果很好,输出对于第一个列表的每个元素都是正确的。
当我在我看来这样做时:
<?php
foreach($req as $poi)
{
?>
<div class="news">
<h3>
<?php echo $poi['id']; ?>
<em>: <?php echo $poi['name']; ?></em>
</h3>
<?php foreach($guidePois as $re)
{
?>
<h4>
<?php echo $re['id']; ?>:
<?php echo $re['name']; ?>
</h4>
<?php
}
?>
</div>
<?php
}
?>
不知何故,第一个列表输出是好元素,但对于第二个列表,我总是得到第一个项目的相关元素。
你有什么想法吗?
非常感谢你的帮助
答案 0 :(得分:1)
这是因为你只设置:
$guidePois = $guide->getGuidePois($poi['id']);
一旦进入控制器。
如果您希望它在视图中工作,您需要在结束</h3>
后立即插入此代码
<?php $guidePois = $guide->getGuidePois($poi['id']); ?>
这样$ guidePois在每次迭代中都会获得一个新值。
完整视图代码:
<?php
foreach($req as $poi)
{
?>
<div class="news">
<h3>
<?php echo $poi['id']; ?>
<em>: <?php echo $poi['name']; ?></em>
</h3>
<?php
$guidePois = $guide->getGuidePois($poi['id']);
foreach($guidePois as $re)
{
?>
<h4>
<?php echo $re['id']; ?>:
<?php echo $re['name']; ?>
</h4>
<?php
}
?>
</div>
<?php
}
?>