2011-03-09 42 views
0

我希望能夠根據用戶選擇的選項更改我的網站背景的顏色。在PHP中調用和聲明一個選擇框!

我有我的選擇框下面的代碼:3

<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和粉紅色?

這是我試過的代碼(失敗和完整的猜測):

<?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,點擊發送,然後顏色會改變。 希望這可以幫助更多。我忘記添加之前,我想要一個發送按鈕不得不被點擊,然後所有的巧妙的東西發生。 感謝

+2

您的問題是使用'isset()'。它只返回一個布爾狀態,而不是值。你可以用一個開關或像'array(「1」=>「red」,「2」=> ...)這樣的映射來簡化該操作。' – mario 2011-03-09 17:10:34

+0

請參閱更新 – RSM 2011-03-09 17:15:17

+0

該選擇是否包含在一個窗體中,方法設置爲POST?顯而易見的問題,但我不得不要求...... – Endophage 2011-03-09 17:20:41

回答

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

請參閱更新 – RSM 2011-03-09 17:15:58

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

雙方應該工作,待我所做的任何錯誤。

+0

多數民衆贊成在輝煌。你可以給一點解釋這是如何工作的? – RSM 2011-03-09 17:09:14

+0

這是行不通的,我點擊2或3並沒有任何反應 – RSM 2011-03-09 17:10:44

+0

那麼它使用'三元'如果沒有post數據,它默認這個變量,所以沒有未定義的索引錯誤,switch語句應該是自我解釋的,它接受變量並對它進行測試這種情況是否與它進入它的情況相同,直到休息時間爆發。希望數組方法更加自我解釋。但請注意,這不會持久。如果你想要它,你將需要看看'會議'或'餅乾' – 2011-03-09 17:11:00

1

你的PHP代碼只有當變量「CHANGE_DATE」通過POST方法來自查詢字符串的作品...

你需要設置在飛行的顏色嗎?或發送表單後?

+0

我會通過JavaScript做到這一點,然後將選項保存在cookie中,這樣下一頁將使用「新」顏色。 – jackJoe 2011-03-09 17:16:47

+0

請參閱更新 – RSM 2011-03-09 17:18:36

1

你問題在於你使用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>"; 
} 
+0

請參閱更新 – RSM 2011-03-09 17:16:55

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

請參閱更新 – RSM 2011-03-09 17:18:01

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