【问题标题】:Update multiple php variables using multiple select drop downs on the same page使用同一页面上的多个选择下拉列表更新多个 php 变量
【发布时间】:2014-04-27 01:46:37
【问题描述】:

我有两个使用默认值初始化的 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 变量的值更改为所选内容,并在重新加载时保持该选择?

【问题讨论】:

    标签: php forms submit


    【解决方案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>';
    ?>
    

    【讨论】:

    • 是的@FuzzyTree 是正确的。我试图在帖子中保留这两个值。我也尝试在每次numberSelectcolorSelect 更改时发布
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2020-01-23
    • 1970-01-01
    • 2013-06-15
    • 2013-05-01
    • 2016-01-17
    • 2015-07-19
    相关资源
    最近更新 更多