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

时间:2011-03-09 17:04:44

标签: 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,我如何才能获得它,只需将其更改为红色为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";
   }

?>

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

更新: 我尝试了所有的方法,似乎没有人工作。一定是我做错了。 我想要的是当用户选择和选项,即1,2或3并点击发送,然后颜色将改变。 希望这会有所帮助。我之前忘了添加,我想要点击发送按钮,然后发生所有聪明的事情。 感谢

6 个答案:

答案 0 :(得分:3)

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>";
}

答案 1 :(得分:1)

使用开关:

$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>";

两者都应该有效,等待我犯的任何错误。

答案 2 :(得分:1)

只有当变量“change_date”来自查询字符串并通过POST方法时,您的PHP代码才有效...

你需要动态设置颜色吗?或者在发送表格后?

答案 3 :(得分:1)

问题在于您使用isset。这个函数simple返回一个布尔值,而不是字段的值。试试以下内容:

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>";
}

答案 4 :(得分:1)

另一种方法是,如果你不想使用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>";
            }

答案 5 :(得分:1)

尝试一个值映射数组,正如其他一个答案所指出的,它可能是GET而不是POST,所以我使用$ _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";
   }