2012-04-18 10 views
0

次のコードで2つの別々のforeachループが実行されています。最後には、2行目のforeachループの直後に$ row-> websiteURLが出力されます。問題は$ row-> websiteURLが最初のループの一部です。CodeIgniterは別のコードを実行した後にforeachループを続ける

A PHPエラー重大度

を発生しました:未定義のプロパティ:はstdClass :: $ websiteURL

ファイル名

メッセージに注意してください:私は、コードを実行したときにだから私は、次のエラーを取得しますビュー/ projects.php

行番号:135

"ターゲット=" _ブランク」>

2番目のforeachが完了した後、最初のforeachループを続けるのはどうですか?

<table style="width: 41%"> 
<?php $query = $this->db->query("SELECT * FROM projects ORDER BY idprojects DESC"); 
     foreach ($query->result() as $row) { ?> 
    <tr> 
     <td style="height: 15px"> 
     <div class="auto-style2"> 
      <em><span class="auto-style1"><?=$row->projectName?></span></div> 
     <table cellpadding="5" style="width: 535px; height: 66;"> 
      <tr> 
       <td class="box1" style="height: 49px; width: 800px;"> 
     <table cellpadding="0" cellspacing="0" style="width: 466px; height: 185px"> 
      <!-- MSTableType="layout" --> 
      <tr> 
       <td valign="top" style="width: 225px"> 
      <em> 
     <table style="width: 100%"> 
      <tr class="box1"> 
       <td class="innerbox" style="height: 88px"><em><span class="text1">Project name</span>: 
       <span class="underlined-link"><?=$row->projectName?></span><br> 
       <span class="text1">Description</span>: <?=$row->projectDesc?><br><span class="text1">Start 
       date</span>: <?=$row->startDate?><br><span class="text1">Finised date</span>: 
       <?=$row->finishedDate?><br><span class="text1">Created for</span>: 
       <?=$row->createdFor?><br><span class="text1">Contributers</span>: 
       <span class="underlined-link"><?=$row->contributors?></span></em></td> 
      </tr> 
     </table> 
     </em></td> 
       <td style="width: 12px">&nbsp;</td> 
       <td valign="top" style="height: 185px; width: 229px"> 
      <em> 
<?php   $query = $this->db->query("SELECT * FROM screenshots ORDER BY idscreenshot DESC"); 
       foreach ($query->result() as $row) { ?> 
       <img alt="" src="<?=$row->screenshotURI?>" width="231" height="187"></em>&nbsp;</td> 
      </tr> 
<?php } ?> 
     </table> 
       <br> 
       <a style="text-decoration:none" href="<?=$row->websiteURL?>" target="_blank"><div class="link1"> 
        View This Product</div></a> 
       </td> 
      </tr> 
     </table> 
     </em></td> 
    </tr> 
<?php } ?> 
     </table> 
+0

まず、ビューの中でdbのクエリを実行していますか?これはモデルで行う必要があります。もう一度私に教えてください。 –

答えて

1

次のような第二のforeachであなたの変数を変更する必要があります。

$query = $this->db->query("SELECT * FROM screenshots ORDER BY idscreenshot DESC"); 
       foreach ($query->result() as $row2) { ?> 
       <img alt="" src="<?=$row2->screenshotURI?>" width="231" height="187"></em>&nbsp;</td> 

$行変数がスコープ内にまだあり、それは、このための最初のクエリで見ています。内側のforeachループを実行している場合は、foreachと同じ「アイテム」変数に名前を付けることはできません。

ので、より多くのポイントへ:

戻る大きな問題に
foreach($arr as $row): 
    foreach($arr as $row2): 
     //do something 
    endforeach; 
endforeach; 

。ビュー内のデータを照会するべきではありません。データはモデルで操作されます。コントローラはモデルをロードし、モデルを使用して情報を取得し、情報をビューに渡します。 MVCの初心者であるかどうかを理解することは難しい概念です。この作業が完了したら、これらのクエリをモデル内の独自の関数に移動し、そのように情報を取得することに焦点を当てます。

+0

私はそれを忘れてしまった。ありがとう。そして、私は通常、自分のものをコントローラに入れます。私はモデルを台無しにしない。それはより多くの時間を要し、私は通常、時間制約に苦しんでいます。そして、ほとんどの人は、ビュー内のビューを扱うデータを配置するためにここに私に言っています。だから私はちょうどその習慣に入った。 –

+1

私は個人的には聞いていません。あなたのサイトがまともなサイズになったら、ビューにデータが本当に必要です。多くのビューがあり、18回使用された1つのクエリに1つの変更を加える必要がある場合、モデル内の1つの場所ではなく、すべての場所に変更を加える必要があります。しかし、あなたのために何が働いても、笑。 –

関連する問題