在PHP中调用并声明一个选择框!

在PHP中调用并声明一个选择框!,php,html,css,select,Php,Html,Css,Select,我想能够改变我的网站背景颜色取决于用户选择的选项 我的选择框有以下代码: <select name="change_date" > <option value="1" id="1">1</option> <option value="2" id="2">2</option> <option value="3" id="3">3</option> </select> 使用PHP,我如何得到它,使它变为

我想能够改变我的网站背景颜色取决于用户选择的选项

我的选择框有以下代码:

<select name="change_date" >
<option value="1" id="1">1</option>
<option value="2" id="2">2</option>
<option value="3" id="3">3</option>
</select>
使用PHP,我如何得到它,使它变为红色表示1,绿色表示2,粉色表示3

这是我尝试过但未成功的代码,完全是猜测:

<?php
if(isset($_POST['change_date'])=='1' )
   {
   echo "<body style='background-color:red;'></body>";
   }else{
   echo "failed";
   }
if(isset($_POST['change_date'])=='2' )
   {
   echo "<body style='background-color:green;'></body>";
   }else{
   echo "failed";
   }
if(isset($_POST['change_date'])=='3' )
   {
   echo "<body style='background-color:pink;'></body>";
   }else{
   echo "failed";
   }

?>
有什么建议吗?方法?链接

更新: 我尝试了所有的方法,但似乎都不管用。一定是我做错了什么。 我想要的是,当用户选择和选项ie 1、2或3并单击send时,颜色就会改变。 希望这能帮助更多。我忘了添加之前,我想一个发送按钮,必须点击然后所有聪明的事情发生。 谢谢

使用开关:

$color = !empty($_POST['change_date'])?$_POST['change_date']:0;

switch ($color) {
    default:
    case 1:
           echo "pink";
    break;
    case 2: 
           echo "orange";
    break;
}
你应该做你想做的。还有很多其他方法可以使用阵列等实现此功能。正如我选择的方法所示:

编辑: 数组方法

$colors = array(1 => 'pink', 2 => 'orange');
$color = !empty($_POST['change_date'])?$_POST['change_date']:1;

echo "<body style='background-color:" . $colors[$color] . ";'></body>";

在我犯任何错误之前,两者都应该可以工作

只有当变量change\u date通过POST方法来自查询字符串时,PHP代码才起作用

if (isset($_POST['change_date']))
{
    switch ($_POST['change_date'])
    {
        case 1: $color = 'red'; break;
        case 2: $color = 'green'; break;
        case 3: $color = 'pink'; break;
        default: die('failed');
    }
    echo "<body style='background-color:$color;'></body>";
}

你需要即时设置颜色吗?或者在发送表单后?

您的问题在于您对isset的使用。此函数返回一个布尔值,而不是字段的值。请尝试以下方法:

if(isset($_POST['change_date']))
{
    switch($_POST['change_date'])
    {
        case 1:
            echo "<body style='background-color:red;'></body>";
            break;
        case 2:
            echo "<body style='background-color:green;'></body>";
            break;
        case 3:
            echo "<body style='background-color:pink;'></body>";
            break;
        default:
            echo "<body style='background-color:white;'></body>";
    }
}
else
{
    echo "<body style='background-color:white;'></body>";
}

另一种方法是,如果您不想使用switch语句

$color = isset($_POST['change_date']))?$_POST['change_date']:0;
if($color){

               if($color == 1) echo "<body style='background-color:red;'></body>";
               if($color == 2) echo "<body style='background-color:green;'></body>";
               if($color == 3) echo "<body style='background-color:pink;'></body>";
            }

尝试一个值映射数组,正如在另一个答案中指出的,它可能是GET而不是POST,因此我使用$u REQUEST作为示例:

<?php
   $colors = array(
      1 => "red",
      2 => "green",
      3 => "pink",
   );

   if ($c = $colors[ $_REQUEST["change_date"] ])
   {
       echo "<body style='background-color: $c;'>body</body>";
   }
   else {
       echo "failed";
   }

太棒了。你能解释一下它是如何工作的吗?它使用了三元运算符,作为一个简短的if。因此,如果没有post数据,它将默认使用变量,这样就不会出现未定义的索引错误。switch语句应该是自解释的。它接收变量,并根据实例测试它,如果它等于一个实例,则输入它,直到中断,然后中断。希望数组方法更容易解释。但请注意,这种情况不会持续。如果你想这样做,你需要查看会话或cookiesWell,只是要确定,你是否修改了代码以使其更正确,或者只是直接使用它复制/粘贴我的答案。因为您需要将代码添加到其中,并添加第三个案例。您的问题是isset的使用。它只返回布尔状态,而不返回值。您可以使用开关或类似array1=>red,2=>…的映射来简化这一点。select是否包装在一个表单中,并且方法设置为POST?很明显的问题,但我必须问…只是你所看到的代码,就是这样。你是否只是尝试回显post数据,以确保你实际传递和接收用于控制结构的数据?@Ryan我在这里举了一个例子:你需要通过javascript添加cookie创建互联网上的大量示例,同样在我的示例中,我将类放在一个div上,而不是您也可以更改的div上;然后你可以创建一个PHP来读取cookie是否存在,并将该类应用到正文中。我会通过javascript来完成,然后将该选项保存在cookie中,这样下一页就会使用新的颜色。