2013-08-23 67 views
1

我在我的視圖文件中遇到了else語句的問題。Yii - if&else if語句在視圖文件中出現錯誤

我使用Yii框架和我在我的視圖文件下面的代碼。

<select class="formRightPulldown" name="Post[password]">  
<?php foreach($passwordData as $password) :?> 

<option value="<?php echo $password['id'] ?>" 
    <?php if(isset($updateErrorPost) && 
      $updateErrorPost['password']==$password['id']){ 
      echo 'selected'; 
      } else if(isset($postUpdate) && 
      $postUpdate['password']==$password['id']){ 
      echo 'selected'; } ?> 
> 
    <?php echo $password['name'] ?> 
</option> 

<?php endforeach ;?> 
</select> 

我相信當「$ updateErrorPost」設置爲true時,它不應該讀取「else if」之後的代碼。

但不知何故,即使在「$ updateErrorPost」設置爲true時,它讀取後,「否則,如果」代碼,使「選擇」值添加到多個選項標籤。

有誰知道什麼導致這個問題呢?

我誤解的東西在PHP編程非常基本的???

請給我一個幫助!

感謝提前:)

+++新增+++

它結束了添加選中的值給像下面的多個選項標籤...

<select class="formRightPulldown" name="Post[password]"> 
    <option value="3">temporary</option> 
    <option value="2" selected>Subscriber</option> 
    <option value="1" selected>VIP</option> 
</select> 

在上面的代碼,當第一個if語句爲真時,第一個選定的值被添加,而當else-if語句爲真時,第二個選擇的值被添加。

爲什麼儘管if語句是真實的,其他的代碼,如果後讀取???

+0

什麼樣的錯誤你正面臨 –

+0

如果'$ updateErrorPost'設置爲TRUE;在'if'將失敗密碼校驗 – tlenss

+0

感謝您的留言!我在我的文章中添加更多細節。 – Hayato

回答

1

嘗試

<select class="formRightPulldown" name="Post[password]">  
<?php foreach($passwordData as $password) :?> 

<option value="<?php echo $password['id'] ?>" 
    <?php if(isset($updateErrorPost) && ($updateErrorPost['password']==$password['id'])) { 
      echo 'selected'; 
      } else if(isset($postUpdate) && ($postUpdate['password']==$password['id'])) { 
      echo 'selected'; 
     } 
    ?>> 
    <?php echo $password['name'] ?> 
</option> 

<?php endforeach ;?> 
</select> 
+0

哦!!!!非常感謝你!!有效! 所以,我需要的是用()包圍A == B。我學到了:) 再次感謝! – Hayato

+0

雖然這個工作,它就像重新發明輪子。 Yii [有下拉列表](http://www.yiiframework.com/doc/api/1.1/CHtml#activeDropDownList-detail)用於「徒手」使用或[用表單綁定](http://www.yiiframework.com /doc/api/1.1/CActiveForm#dropDownList-detail)(這實際上是一樣的,它只是爲了一致性)。 – 2013-08-23 13:57:58

0

我相信當「$ updateErrorPost」設置爲true時,它不應該讀取「else if」之後的代碼。

不一定 - 這將幫助你找到 - 因爲你有&& $updateErrorPost['password']==$password['id']那裏,然後} else if {...將其是否工作正常運行,如果$updateErrorPost['password'] != $password['id']

儘量使2分隔if { }else有一整套的條件,看看在哪裏你有邏輯錯誤。

+0

啊,實際上,「$ updateErrorPost ['password'] == $ password ['id']」也是如此。 – Hayato

0

我想你想要做這樣的事情:

foreach($passwordData as $password) { 
    $selected = ""; 
    if((isset($updateErrorPost) && $updateErrorPost['password']==$password['id']) || 
     (isset($postUpdate) && $postUpdate['password']==$password['id']) 
    ){ 
     $selected = "selected"; 
    } 
    echo "<option value='{$password['id']}' {$selected}>"; 
    echo $password['name']; 
    echo "</option>"; 
} 

另外,還要確保$updateErrorPost$postUpdate陣列['password']鍵每次都有。否則,你應該用數組鍵來做isset()。例如isset($updateErrorPost['password'])和另一個。

更新時間:如果您想在任何的2個條件等於true呼應準確selected的話,它應該是正確的。

+0

>確保$ updateErrorPost和$ postUpdate數組每次都有['password']鍵 是的,我只是確保兩個都有'密碼'鍵。 – Hayato

+0

@Hayato您是否嘗試過我建議的代碼?你的問題還在嗎? – hallaji

+0

很抱歉,我想我沒有提供足夠的信息。 我在帖子中顯示的代碼實際上在「foreach」中。 <?php foreach($ passwordData as $ password):?> 因此,我無法嘗試您的代碼,因爲它是。 – Hayato