1

以下のコードは、php 5.3 でNotice: Undefined index: waehrungbepを生成します。私はメッセージをerror_reporting(^^E_NOTICE)抑制しました。しかし、通知を抑制するのではなく、コードを修正するにはどうすればよいですか?

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

2 に答える 2

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

3 項は if ステートメントよりも高速であることに注意してください。selected 属性と selected="selected" 属性も使用します。これは、厳密な HTML と厳密でない HTML を混同していることを意味します。

于 2013-06-19T09:47:17.240 に答える