我希望能够根据用户选择的选项更改网站背景的颜色。
我的选择框有这个代码:
<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并点击发送,然后颜色将改变。 希望这会有所帮助。我之前忘了添加,我想要点击发送按钮,然后发生所有聪明的事情。 感谢
答案 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";
}