【问题标题】:Using PHP $_POST to remember a option in a select box?使用 PHP $_POST 记住选择框中的选项?
【发布时间】:2011-12-19 11:13:25
【问题描述】:

我有一个 POST 到 selft 的表单,以便用户可以执行您在购物车中可以找到的操作。

例如增加数量,选择邮资类型。

我的问题是我的表单选择元素称为“postage”,每当表单重新加载时,它就会忘记选择的内容。

我所有的其他字段都使用这个来记住它们的值:

<input type="text" name="postcode" value="<?php echo $_POST['postcode']; ?> " />

如何使用 $_POST 值自动选择用户完成的选择字段中的选项?

我试过这个:

<select name="postage" selected="<?php echo $_POST['postage']; ?>" >

还有这个

<select name="postage" value="<?php echo $_POST['postage']; ?>" >

谢谢

【问题讨论】:

    标签: php html forms


    【解决方案1】:

    你几乎明白了。当且仅当$postage 的值等于元素。所以:

    <select name="postage">
    <option value="foo" 
        <?php if ($_POST['postage'] == "foo") echo 'selected="selected" '; ?>
     >
    </select>
    

    请注意,这违反了DRY principle,因为您现在在其中出现了两次字符串"foo",因此它是重构的主要候选者。一个好的方法是将值/文本对保存在一个数组中,并使用foreach 对其进行迭代以生成&lt;option&gt; 标签。

    【讨论】:

    • 谢谢,我正在使用 HTML5。但是,我将听取您的建议,以保持 HTML 的安全默认值以实现兼容性:)
    【解决方案2】:

    您需要遍历所有选项。

    创建一个包含所有下拉选项的数组,循环遍历该数组,然后与 post 中存储的内容进行比较。

    例如:

    <?php
    $aDropd = array("apple","orange","banana");
    echo "<select>";
    foreach($aDropd as $sOption){
      $sSel = ($sOption == $_POST['postage'])? "Selected='selected'":"";
      echo "<option   $sSel>$sOption</option>";
    }
    echo "</select>";
    

    【讨论】:

      【解决方案3】:

      不,它根本不工作..你需要为此设置某种循环。

      For Example : foreach($record => $values){
                         if($values == $_POST['postage']){
                             $selected = "selected='selected' ";
                            }else{
                             $selected = "";
                            }
                   }
      
      <input name="postage" value="1" <?=$selected?> >
      

      已编辑:

                            if($_POST['postage'] == 1){
                                 $selected1 = "selected='selected' ";
                                }else if($_POST['postage'] == 2){
                                 $selected2 = "selected='selected' ";
                                } and so on..........
      
      
      
          <select name="postage">
           <option value="1" <?=$selected1;?> />
           <option value="2" <?=$selected2;?> />
          </select>
      

      我认为这可能对你有帮助..你可以问我是否还有其他需要...

      谢谢。

      【讨论】:

      • 谢谢,但这不适用于我的设计,因为我的选项值在一个单独的文件中,我将其包含在我的页面中
      • 它仍然工作良好..您只需要手动检查所有值而无需循环..简单。 :) 查看编辑后的答案..
      【解决方案4】:

      selected的值应该被选中

      <select name="postage" value="1" <?php echo (($_POST['postage'] == 1)?'selected="selected"':''); ?> >
      

      【讨论】:

        【解决方案5】:

        您的 html 语法错误。正确的html写法是这样的:

        <select>
        <option value ="<?php echo $_POST['postage']; ?>" selected="selected"></option>
        </select>
        

        【讨论】:

          【解决方案6】:

          你也可以缩短:

          <select>
          <option value ="<?=$_POST['postage']; ?>" selected="selected"></option>
          </select>
          

          【讨论】:

            【解决方案7】:
            <select name="foo">
            <option value="1" <?php echo strcmp($_POST['foo'],"1")==0?"selected=\"selected\"":"" ?>>option1</option>
            <option value="2" <?php echo strcmp($_POST['foo'],"2")==0?"selected=\"selected\"":"" ?>>option2</option>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-10-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多