Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一页面上使用多个选择下拉菜单更新多个php变量_Php_Forms_Submit - Fatal编程技术网

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

在同一页面上使用多个选择下拉菜单更新多个php变量,php,forms,submit,Php,Forms,Submit,我有两个php变量,它们用如下所示的默认值初始化: 我还有两个php表单,每个表单都包含一个select下拉列表。每个表单还回显select上方相应php变量的值 <?php echo '<form action="" method="post">'; echo '<label>Selected Color: </label>'; echo $SelectedColor ; echo '<br/>'; echo '<select n

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

我还有两个php表单,每个表单都包含一个select下拉列表。每个表单还回显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变量的值,所以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>';
?>



Yes@FuzzyTree这是正确的。我试图在帖子中保留这两种价值观。每次
numberSelect
colorSelect
更改时,我都会尝试发布帖子