开发者

Calling and Declaring a select box in PHP!

I want to be able to change the color of my websites background depending on which option the user chooses.

I have this code for my select box:

&开发者_如何学编程lt;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>

Using PHP, how would i get it so that it simply changed to red for 1, green for 2 and pink for 3?

This is the code I have tried (unsuccessfully and complete guesswork):

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

?>

Any suggestions? methods? links?

UPDATE: I have tried all methods and none seem to work guys. It must be something I am doing wrong. What i want is when the user chooses and option ie 1,2 or 3 and clicks send, then the color will change. Hope this helps more. I forgot to add before that I want a send button to have to be clicked then all the clever stuff happens. Thanks


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


Use a switch:

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

switch ($color) {
    default:
    case 1:
           echo "pink";
    break;
    case 2: 
           echo "orange";
    break;
}

Should do what you want. Plenty of other ways to do it with arrays etc. Just the way I chose to show you :)

EDIT: Array Method

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

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

Both should work, pending any errors I made.


your PHP code only works if the variable "change_date" comes from a query string via a POST method...

Do you need to set the color on the fly? or after sending a form?


You're problem is in your use of isset. This function simple returns a boolean value, not the value of the field. Try the below:

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


Another way could be, if you dont wanna use switch statement ,

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


Try a value map array, and as pointed out in one of the other answers it might be GET instead of POST, so I'm using $_REQUEST as example:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜