我有两个php变量,使用下面显示的默认值进行初始化:
<?php
$SelectedColor = ' no color selected';
$SelectedNumber = ' no number selected';
?>
我还有两个php表单,每个表单包含一个select下拉列表。每个表单还回显了选择上方各自的php变量值。
<?php
echo '<form action="" method="post">';
echo '<label>Selected Color: </label>';
echo $SelectedColor ;
echo '<br/>';
echo '<select name="colorSelect">';
echo '<option value="red">red</option>';
echo '<option value="blue">blue</option>';
echo '<option value="yellow">yellow</option>';
echo '</select>';
echo '</form>';
?>
<br/>
<?php
echo '<form action="" method="post">';
echo '<label>Selected Number: </label>';
echo $SelectedNumber ;
echo '<br/>';
echo '<select name="numberSelect" >';
echo '<option value="1">One</option>';
echo '<option value="2">Two</option>';
echo '<option value="3">Three</option>';
echo '</select>';
echo '</form>';
?>
由于此代码现在是php变量的值永远不会改变,所以无论选择菜单的选择是什么,它们都只是打印它们的默认值。
没有使用AJAX,有没有办法在更改下拉列表时选择提交相应的表单重新加载页面,将php变量的值更改为选择的内容并在重新加载时保留该选择?
答案 0 :(得分:1)
如果我理解正确,您会在页面发布后尝试保留您的选择吗?如果是这样的话。没有经过测试,但它应该可以满足您的需要。更新为发布到自己并提交下拉更改。
<?php
//read in selected value
$SelectedColor = $_POST['colorSelect'] ? $_POST['colorSelect'] : ' no color selected';
$SelectedNumber = $_POST['numberSelect'] ? $_POST['numberSelect'] : ' no number selected';
echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<label>Selected Color: </label>';
echo $SelectedColor ;
echo '<br/>';
echo '<select onchange="this.form.submit()" name="colorSelect">';
$color_options = array('red','blue','yellow');
foreach($color_options as $option) {
//retain selected value
$selected = ($option == $SelectedColor) ? 'SELECTED' : '';
echo "<option $selected value='$option'>$option</option>";
}
echo '</select>';
echo '</form>';
?>
<br/>
<?php
$number_options = array(1 => 'one', 2 => 'two', 3 => 'three');
echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
echo '<label>Selected Number: </label>';
//if a number was posted get the corresponding string
echo is_numeric($SelectedNumber) ? $number_options[$SelectedNumber] : $SelectedNumber;
echo '<br/>';
echo '<select onchange="this.form.submit()" name="numberSelect" >';
foreach($number_options as $option => $value) {
//retain selected value
$selected = ($value == $SelectedNumber) ? 'SELECTED' : '';
echo "<option $selected value='$value'>$option</option>";
}
echo '</select>';
echo '</form>';
?>