在同一页面上使用多个select下拉菜单更新多个php变量


Update multiple php variables using multiple select drop downs on the same page

我有两个php变量,它们用下面显示的默认值初始化:

<?php $SelectedColor = ' no color selected'; $SelectedNumber = ' no number selected'; ?>

我还有两个php表单,每个表单都包含一个select下拉列表。每个表单还将相应php变量的值回显到select上方。

<?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变量的值更改为所选值,并保持重新加载时的选择?

如果我正确理解你的意思,你是想在页面发布后保留你的选择吗?如果是的话,试试这个。没有经过测试,但它应该能满足你的大部分需求。更新为自我发布并在下拉更改时提交。

<?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>';
?>