使用同一页面上的多个选择下拉菜单更新多个php变量

时间:2014-04-27 01:46:38

标签: php forms submit

我有两个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变量的值更改为选择的内容并在重新加载时保留该选择?

1 个答案:

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