2013-06-19 59 views
1

下面的代碼在php 5.3下生成一個注意:未定義索引:waehrungbep。 與error_reporting(^^E_NOTICE)我壓制了這條消息。 但我怎樣才能修復代碼而不是壓制通知?PHP 5.3注意:HTML中未定義索引選擇

<label for="WährungBEP" class="label"></label> 
<select name="waehrungbep" id="waehrungbep" title="Waehrung w&auml;hlen." onChange="return recalc()"> 
<option value="1.22" <?php if($_POST['waehrungbep'] == "1.22") { echo "selected=\"selected\""; }; ?>selected >EUR</option> 
<option value="1" <?php if($_POST['waehrungbep'] == "1") { echo "selected=\"selected\""; }; ?>>CHF</option> 
<option value="0.95" <?php if($_POST['waehrungbep'] == "0.95") { echo "selected=\"selected\""; }; ?>>$</option> 
</select> 
+0

只是一個提示:對於開發總是使用'error_reporting(E_ALL)' - 與舊的PHP版本'E_ALL | E_NOTICE' - 這將爲您節省很多精神疾病 – Joshua

回答

1

你可以試試這個:

<?php 
    $waehrungbep = (isset($_POST['waehrungbep'])) ? $_POST['waehrungbep'] : false; 
    function isSelected($var, $val, $default=false){ 
     $select = ($var == $val || ($default && $var === false)) ? "selected=\"selected\"" : ''; 
     echo $select; 
    } 
?> 
<label for="WährungBEP" class="label"></label> 
<select name="waehrungbep" id="waehrungbep" title="Waehrung w&auml;hlen." onChange="return recalc()"> 
    <option value="1.22" <?php isSelected($waehrungbep, 1.22, true); ?>>EUR 
    </option> 
    <option value="1" <?php isSelected($waehrungbep, 1); ?>>CHF 
    </option> 
    <option value="0.95" <?php isSelected($waehrungbep, 0.95); ?>>$ 
    </option> 
</select> 

http://phpfiddle.org/main/code/esk-fz7

請記住,那ternarys比if語句更快。 你也使用selected屬性和selected =「selected」屬性,這意味着你正在混合嚴格而不是嚴格的html。

+0

感謝a'lot - 像魅力一樣工作。 – user2500308

+0

Ups!功能是選中所有人返回 - >「選中」!主叫方的真實或錯誤都不會影響其他人。 – user2500308

+0

現在很完美。謝謝 – user2500308

3

變化

if($_POST['waehrungbep'] == "1.22") 

if(isset($_POST['waehrungbep']) && $_POST['waehrungbep'] == "1.22") 
+0

測試了這兩種解決方案。兩者都是完美的。非常感謝你們,abimelex和nauphal。 – user2500308