繁体   English   中英

PHP-记住输入选择选项

[英]PHP - remember input selection option

我正在尝试翻译我写给PHP / HMTL的Java“计算器”。 为了使它起作用,必须记住初始选择。 我知道我需要使用$ _POST ['subject']来获取$ cc,但是这给我带来了问题。

我尝试了多个版本,但我担心缺少一些基础知识。 有谁能够向正确的方向推动我?

没有记住选项的代码:

<form action="" method="post">

    <legend>Make a selection below</legend>
    <br>
    Field of interest:<br>
    <select name="subject">
        <?php
        $subjectarray = array("Please select a subject", "Wavelenght", "Radioactive Decay");

        foreach ($subjectarray as $cc => $subject) {

            echo '<option value="' . $cc . '">' . $subject . '</option>';
        }
        ?>
    </select>

使用记住选项版本的代码(显然不起作用);

    foreach ($subjectarray as $cc => $subject) {

                echo '<option value="' . $cc . '"
if ($_POST['subject'] == $cc) echo 'selected="selected"';>' . $subject . '</option>';

            }

再试一次

foreach ($subjectarray as $cc => $subject) {

            echo "<option value=\"{$cc}\"";
            echo ($_GET['subject'] == $cc) ? 'selected="selected"' :"";
            echo ">" . $subject . "</option>";
        }

怎么样:

<select name="subject">
    <?php
    foreach(["Please select a subject", "Wavelenght", "Radioactive Decay"] as $i => $val) {
    $sel = empty($_POST['subject']) || $_POST['subject'] != $i ? null : 'selected';
    ?>
    <option <?= $sel ?> value="<?= $i ?>"><?= $val ?></option>
    <?php } ?>
</select>

第二种选择是使用$_GET而您在表单中使用POST 它永远都行不通。

第一个看起来会抛出错误... PHP中不是有效的语法。 在PHP中, ifechoprint内则没有。

我想做的是(重写您的foreach):

    foreach ($subjectarray as $cc => $subject) {

        $selected = $_POST['subject'] == $cc ? ' selected="selected"' : '';

        echo '<option value="' . $cc . '"'. $selected .'>' . $subject . '</option>';
    }

注意:-您必须使用$ _POST ['subject'],因为在表单标签中method ='POST'。

您需要遍历所有选项。

创建一个包含所有下拉选项的数组,循环遍历,然后与$ _POST []中存储的内容进行比较,然后将所选属性放到要选择的属性上。

<form action="" method="post">

    <legend>Make a selection below</legend>
    <br>Field of interest:<br>
    <select name="subject">
        <?php
        $subjectarray = array("Please select a subject", "Wavelenght", "Radioactive Decay");

        foreach ($subjectarray as $cc => $subject) {

            if ($_POST['subject'] == $cc) {
                $selected = 'selected';
                } else {
                $selected = '';
                }
   echo '<option value="' . $cc . '" '.$selected.'>' . $subject . '</option>';
        }
        ?>
    </select>
</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM