2014-06-23 6 views
0

저는 클라이언트 용 클라이언트 - 서버 응용 프로그램에서 작업하고 있습니다. DB에 몇 개의 열을 추가하라는 요청을 받았습니다. 이 문제를 처리하기 위해 PHP 끝점이 업데이트되었습니다. 제가 실행중인 문제는 모든 클라이언트 응용 프로그램이 즉시 업데이트되는 것은 아니기 때문에 추가 매개 변수를 어떻게 선택적으로 만들 수 있습니까? 나는 PHP에 아주 익숙하다. 그래서 내가 이해할 수 없다면 사과한다.선택적 매개 변수 - POST 요청 (PHP)

EDIT : 데이터에는 세 개의 선택적 멤버가 포함되지 않을 수도 있습니다. 그래서 그 데이터가 구성원 devicemake, devicemodel 또는 networktype을 가지고 있는지 확인해야합니다. 항목의 경우에 대해 false/true를 반환 -

switch(strtolower($_SERVER['REQUEST_METHOD'])) 
{ 
    case 'get': 
     echo"this is a get request"; 
     $data = $_GET; 
     print_r($data); 
     $problem = $data['problem']; 
     $environment = $data['environment']; 
     $latitude = $data['latitude']; 
     $longitude = $data['longitude']; 
     $devicemake = ($data['devicemake'] ? $data['devicemake'] : null); // optional 
     $devicemodel = ($data['devicemodel'] ? $data['devicemodel'] : null); //optional 
     $networktype = ($data['networktype'] ? $data['networktype'] : null); // optional 
     $additionalinfo = $data['additionalinfo']; 

     break; 
    case 'post': 
     echo "this is a post request"; 
     print_r($HTTP_POST_VARS); 
     $postvars = $HTTP_POST_VARS; 
     $data = json_decode($postvars); 

     $problem = $data->problem; 
     $environment = $data->environment; 
     $latitude = $data->latitude; 
     $longitude = $data->longitude; 
     $devicemake = ($data->devicemake ? $data->devicemake : null); //optional 
     $devicemodel = ($data->devicemodel ? $data->devicemodel : null); //optional 
     $networktype = ($data->networktype ? $data->networktype : null); //optional 
     $additionalinfo = $data->additionalinfo; 

     break; 
} 
+1

'isset ($ data [ 'devicemake'])'로 테스트해야합니다. – colburton

답변

0
$additionalinfo = isset($data['additionalinfo']) ? $data['additionalinfo'] : "not set"; 

은 무엇 위의 기본적 isset();

isset()가 말하는 정확히 않는 문 '의 경우'에서 실행됩니다 않습니다

샘플 코드가

괄호 안에 '설정 됨'또는 '초기화 됨'

"not set"은 se가 아닌 경우 원하는대로 수행됩니다 t

편집 (if 문을 경우의 else{} 부분은) 단지 미안 옵션 비트를 보았다 - 나는 그 장면을 보지 못한 나는이 편집 위의 설명의 나머지를 떠나

$devicemake = isset($data->devicemake) ? $data->devicemake : null; //optional 
    $devicemodel = isset($data->devicemodel) ? $data->devicemodel : null; //optional 
    $networktype = isset($data->networktype) ? $data->networktype : null; 

다른 사람에게 유용 할 수 있습니다.

+0

그게 작동하지 않았다, 나는 500 HTTP 오류가 계속. – czifro