【问题标题】:PHP 5.3 Notice: Undefined index in HTML SelectPHP 5.3 注意:HTML Select 中未定义的索引
【发布时间】:2013-06-15 17:38:44
【问题描述】:

下面的代码在 php 5.3 下生成一个注意:未定义索引: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>

【问题讨论】:

  • 只是提示:对于开发,请始终使用error_reporting(E_ALL) - 使用较旧的 PHP 版本 E_ALL | E_NOTICE - 这将为您节省很多精神疾病

标签: php html select post


【解决方案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

请记住,三元组比 if 语句更快。 您还使用 selected 属性和 selected="selected" 属性,这意味着您混合了严格和不严格的 html。

【讨论】:

  • 起来!函数 isSelected 总是返回 -> “selected”!调用者集的真假无关。
  • 我必须说我怀疑三元结构总是比标准 if 结构快。即使它们更快,标准 PHP 应用程序也不是纳秒计数的应用程序(如果您通过循环迭代数千次,则为微秒)
【解决方案2】:

改变

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

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

【讨论】:

  • 测试了两种解决方案。两者都很完美。非常感谢你们,abimelex 和 nauphal。
猜你喜欢
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 2013-03-20
  • 1970-01-01
  • 2011-05-26
  • 2016-04-28
  • 1970-01-01
相关资源
最近更新 更多