2016-10-20 13 views
0

私は自分のコードに構造体を与えようとしていますが、私は問題に直面しています。 私はSQLクエリの応答をループしています、そして、私は他の関連する要素を取り出そうとしています。それは問題なく私のコントローラで動作しますが、私はビューで繰り返すようにしようとしているとき、私はいつも各ビュー内の他の各ビューについてMVC PHP

私のコントローラ関連要素に同じ値を取得する:ここ

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

おそらく '$のre'が$ res''と同じものであることではないとは何か? –

+0

ここに投稿する前に、各変数を数回修正した後に間違いましたが、残念ながら<?php foreach($ guidePois $ re)を置くと、同じ問題が発生し、私の質問が編集されました! –

+0

コントローラがViewを呼び出す方法を投稿できますか?部分的なコードではデバッグが難しい。 – Cyril

答えて

1

だけ設定するためです:

$guidePois = $guide->getGuidePois($poi['id']); 

一度コントローラインチ

あなたはそれがビューで作業したい場合は、$ guidePoisが各反復で新しい値を取得しますので、右のクロージング後</h3>

<?php $guidePois = $guide->getGuidePois($poi['id']); ?> 

をこのコードを挿入する必要があります。

完全なビューコード:

<?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 
} 
?> 
+0

ありがとう、これはレッスンとして役立つはずです! –

+0

一般的な注記: なぜループ内の各サブ項目のクエリを呼び出していますか? これは、DBサーバーで指数関数的に多くのクエリを実行します。 $ req = guide :: getGuides($ bdd、0,5); また、 PHPフレームワークから利用可能なテンプレートツール、例えばLaravelのブレードテンプレート? <を使用する必要がない、よりクリーンなコードを作成します。 PHPのタグ&すべての時間をエコー... – Cyril

+0

ハイテク、あなたの答えをありがとう。私はこのプロジェクトで基本的なPHP知識をリフレッシュしようとしていましたが、今度はSymfonyを使い始めます。 –

関連する問題