提交表单后保留选定的值

我有选择菜单,该菜单从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>";

}?>

但这不起作用,可能是我在回声内部使用了回声。请纠正我。



莫回无
浏览 163回答 2
2回答

阿波罗的战车

您可以使用此代码。尽管我尚未测试代码,但让我与您分享我的逻辑,以使您更好地理解它。我添加了一个条件,即如果提交了表单,$_POST['toolchain']则它应显示选中的表单,否则应以常规方式显示它。<?php$filename = 'select.txt';$eachlines = file($filename, FILE_IGNORE_NEW_LINES);if(isset($_POST['toolchain']){&nbsp;?>&nbsp; <form action="#" method="post">&nbsp; <select id="toolchain" name="toolchain" onchange='this.form.submit()'>&nbsp; &nbsp; <option selected value="<?php echo $_POST['toolchain']; ?>"><?php echo $_POST['toolchain']; ?></option>&nbsp; &nbsp; &nbsp;<?php foreach($eachlines as $lines){&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if($lines!=$_POST['toolchain'])&nbsp; &nbsp; &nbsp; &nbsp; echo "<option value='".$lines."'>$lines</option>";&nbsp; &nbsp; &nbsp;}?>&nbsp; </select>&nbsp;</form>&nbsp;<?php }else{?><form action="#" method="post">&nbsp;<select id="toolchain" name="toolchain" onchange='this.form.submit()'>&nbsp; &nbsp; &nbsp;<option selected value="base">Please Select</option>&nbsp; &nbsp; &nbsp; <?php foreach($eachlines as $lines){&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<option value='".$lines."'>$lines</option>";&nbsp; &nbsp; &nbsp; }?>&nbsp;</select></form>&nbsp;<?php }&nbsp;?>这是正常但漫长的方式。您还可以在表单内部添加条件。如果提交表单意味着if(isset($_POST['toolchain']))您可以option对$_POST['toolchain']内部foreach循环进行更新,则将条件放入表单中。如果您因为我未测试代码而遇到任何错误,请进行更新&nbsp; &nbsp; <?php$filename = 'select.txt';$eachlines = file($filename, FILE_IGNORE_NEW_LINES);?><form action="#" method="post">&nbsp;<select id="toolchain" name="toolchain" onchange='this.form.submit()'>&nbsp; &nbsp;<?php if(isset($_POST['toolchain']))&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; ?>&nbsp; &nbsp; &nbsp; &nbsp; <option value="base">Please Select</option>&nbsp; &nbsp; &nbsp; &nbsp; <?php foreach($eachlines as $lines){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($_POST['toolchain']==$lines))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<option selected value='".$lines."'>$lines</option>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<option value='".$lines."'>$lines</option>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;}&nbsp; &nbsp;else {&nbsp; &nbsp;?>&nbsp; &nbsp; &nbsp;<option selected value="base">Please Select</option>&nbsp; &nbsp; &nbsp; <?php foreach($eachlines as $lines){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<option value='".$lines."'>$lines</option>";&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; ?>&nbsp;</select></form>

陪伴而非守候

像这样更改代码<?php foreach($eachlines as $lines){&nbsp;&nbsp; &nbsp; echo '<option value="'.$lines.'" '.($_POST['$lines'] ? $_POST['$lines'] :"").'>'.$lines.'</option>';}?>
打开App,查看更多内容
随时随地看视频慕课网APP