2011-03-09 4 views
0

사용자가 선택한 옵션에 따라 웹 사이트 배경색을 변경할 수 있기를 원합니다. 3 2 녹색 단순히 1 빨간색으로 변경하도록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를 사용하여, 어떻게 내가 그것을 얻을 것, 핑크 :

나는이 내 선택 상자에 대한 코드가?

이있는 내가 시도 코드 (실패하고 완전한 추측) :

<?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

+0

업데이트 – RSM

+0

을 참조하십시오. 게시하다? 명백한 질문이지만 나는 물어야 만한다. ... – Endophage

답변

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

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

모두 작동합니다 : 다른 방법도 다양 배열 등 내가 당신을 보여주기 위해 선택 그냥 방법 :

편집이 함께 할 수 있습니다. 변수 "CHANGE_DATE"는 POST 메소드를 통해 쿼리 문자열에서 오는 경우

+0

이게 어떻게 작동하는지 조금 설명 할 수 있습니까? – RSM

+0

2 나 3을 클릭하면 아무 일도 일어나지 않습니다. – RSM

+0

글쎄요,'ternary' 연산자가 짧은 if 역할을합니다. 그래서 거기에 게시물 데이터가없는 경우 변수를 기본값으로 정의되지 않은 인덱스 오류가 없습니다. 스위치 문을 자체 설명합니다. 변수를 받아서 테스트합니다 그 다음에 틈이 생길 때까지 그것을 입력하는 경우와 동일하다. 바라건대 배열 방법은 더 자명하다. 그러나 이것은 영구하지 않습니다. 원한다면'sessions' 또는'cookies'를 들여다 볼 필요가 있습니다. –

1

당신의 PHP 코드는

는 즉석에서 색상을 설정해야합니까 ... 작동? 또는 양식을 보낸 후?

+0

을 참조하십시오. 자바 스크립트를 통해이를 수행 한 다음 쿠키에 옵션을 저장하면 다음 페이지에서 "새로운"색상이 사용됩니다. – jackJoe

+0

업데이트 참조 – RSM

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

1

당신은 싶어 사용 스위치 문을 해달라고하면 또 다른 방법은, 수,

$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

1

값 맵 배열을 시도하고 다른 답변 중 하나로 지적이있을 수 있습니다 POST 대신 GET을하면 $ _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"; 
    }