2012-04-18 80 views
0

我有2個獨立的foreach循環在下面的代碼中執行。最後,我有$ row-> websiteURL在第二個foreach循環後輸出。問題是$ row-> websiteURL是第一個循環的一部分。所以,我得到以下錯誤,當我運行代碼:CodeIgniter繼續運行一個foreach循環後

一個PHP錯誤遇到

嚴重性:注意

消息:未定義的屬性:stdClass的:: $ websiteURL

文件名:視圖/ projects.php

行號:135

「目標=」 _空白「>

如何繼續第二個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

首先,你爲什麼要在你的視圖中查詢數據庫?這應該在模型中完成。給我一秒鐘,我一步一步通過這一點。 – 2012-04-18 21:57:19

回答

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> 

的$ row變量仍然是在範圍和它看起來在這第一個查詢。如果你正在做一個內部的foreach循環,你不能將「item」變量命名爲outter foreach。

所以更重要的一點:

foreach($arr as $row): 
    foreach($arr as $row2): 
     //do something 
    endforeach; 
endforeach; 

回到更大的問題。您不應該在視圖中查詢數據。數據在模型中被操縱。控制器加載模型,使用模型獲取信息,然後將信息傳遞給視圖。如果你是MVC的新手,這可能是一個困難的概念。一旦你完成了這個工作,就把注意力放在你的模型中把這些查詢轉換成它們自己的函數,並以這種方式檢索信息。

+0

我忘了那個。謝啦。我通常把我的東西放在一個控制器中。我不會與模型混淆。它需要更多的時間,我通常在時間上的限制。而且大多數人不斷告訴我在這裏將我的數據放在視圖中處理視圖。所以我剛剛習慣了這種習慣。 – 2012-04-18 22:43:47

+1

我個人不會聽他們的。一旦你的網站開始得到體面的大小,你真的需要位於視圖中的數據。您會發現,如果您有很多視圖並需要對使用18次的一個查詢進行一次更改,那麼現在您必須在任何地方進行更改......而不僅僅是模型中的一個位置。但是,無論對你有用,哈哈。 – 2012-04-18 23:35:21