我有选择菜单,该菜单从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>";
}?>
但是它不起作用,可能是我在回声内部使用了回声。请纠正我。
答案 0 :(得分:1)
您可以使用此代码。尽管我尚未测试代码,但让我与您分享我的逻辑,以使您更好地理解它。我添加了一个条件,即如果提交了表单,则它应显示选中了$_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>
答案 1 :(得分:0)
像这样更改代码
<?php foreach($eachlines as $lines){
echo '<option value="'.$lines.'" '.($_POST['$lines'] ? $_POST['$lines'] :"").'>'.$lines.'</option>';
}?>