对于每个内部其他每个视图MVC PHP

时间:2016-10-20 15:20:37

标签: php model-view-controller foreach

我正在尝试为我的代码提供结构,我遇到了一个问题。 我正在循环一个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
}
?>

不知何故,第一个列表输出是好元素,但对于第二个列表,我总是得到第一个项目的相关元素。

你有什么想法吗?

非常感谢你的帮助

1 个答案:

答案 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
}
?>