为了账号安全,请及时绑定邮箱和手机立即绑定

提交表单后保留选定的值

提交表单后保留选定的值

PHP
莫回无 2021-04-28 18:21:42
我有选择菜单,该菜单从txt文件中获取值。我希望所选的值即使在提交表单后也保持选中状态。<?php$filename = 'select.txt';$eachlines = file($filename, FILE_IGNORE_NEW_LINES);?><form action="#" method="post">    <select id="toolchain" name="toolchain" onchange='this.form.submit()'>         <option selected value="base">Please Select</option>          <?php foreach($eachlines as $lines){                 echo "<option value='".$lines."'>$lines</option>";          }?>    </select></form>为了保持选择的值,我尝试了以下操作:<?php foreach($eachlines as $lines){    echo "<option value='".$lines."'" if($_POST['$lines']) echo $_POST['$lines'];">$lines</option>";}?>但这不起作用,可能是我在回声内部使用了回声。请纠正我。
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您可以使用此代码。尽管我尚未测试代码,但让我与您分享我的逻辑,以使您更好地理解它。我添加了一个条件,即如果提交了表单,$_POST['toolchain']则它应显示选中的表单,否则应以常规方式显示它。


<?php

$filename = 'select.txt';

$eachlines = file($filename, FILE_IGNORE_NEW_LINES);

if(isset($_POST['toolchain'])

{

 ?>

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

  <select id="toolchain" name="toolchain" onchange='this.form.submit()'>

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

     <?php foreach($eachlines as $lines){ 

       if($lines!=$_POST['toolchain'])

        echo "<option value='".$lines."'>$lines</option>";

     }?>

  </select>


 </form>

 <?php }

else{

?>


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

 <select id="toolchain" name="toolchain" onchange='this.form.submit()'>

     <option selected value="base">Please Select</option>

      <?php foreach($eachlines as $lines){ 

            echo "<option value='".$lines."'>$lines</option>";

      }?>

 </select>


</form>

 <?php }

 ?>

这是正常但漫长的方式。您还可以在表单内部添加条件。如果提交表单意味着if(isset($_POST['toolchain']))您可以option对$_POST['toolchain']内部foreach循环进行


更新,


则将条件放入表单中。如果您因为我未测试代码而遇到任何错误,请进行更新


    <?php

$filename = 'select.txt';

$eachlines = file($filename, FILE_IGNORE_NEW_LINES);

?>

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

 <select id="toolchain" name="toolchain" onchange='this.form.submit()'>

   <?php if(isset($_POST['toolchain']))

      {

        ?>

        <option value="base">Please Select</option>

        <?php foreach($eachlines as $lines){

            if($_POST['toolchain']==$lines))

            {

              echo "<option selected value='".$lines."'>$lines</option>";

            }

            else {

              echo "<option value='".$lines."'>$lines</option>";

            }

      }

   }

   else {


   ?>

     <option selected value="base">Please Select</option>

      <?php foreach($eachlines as $lines){

            echo "<option value='".$lines."'>$lines</option>";

      }

    }

    ?>

 </select>


</form>


查看完整回答
反对 回复 2021-05-07
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

像这样更改代码


<?php foreach($eachlines as $lines){ 

    echo '<option value="'.$lines.'" '.($_POST['$lines'] ? $_POST['$lines'] :"").'>'.$lines.'</option>';

}?>


查看完整回答
反对 回复 2021-05-07
  • 2 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信