2013-11-26 2 views
0

안녕하세요 저는 선택한 값을 얻고 선택했을 때 처리하려고합니다. (단지php get select 옵션 및 텍스트 입력

switch($_POST['rec']){ 
case '1': 
    $rec1 = "rec1.txt"; 
    $fh = fopen($rec1, 'a') or die("can't open file"); 
    $romString = $_GET['name']; 
    fwrite($fh, $romString); 
    fclose($fh); 
    print() 
break; 
case '2': 
    // do Something 
break; 
case '3': 
    // do Something 
break; 
default: 
    print("Not working ;("); 
} 

텍스트 상자와 내가 이것을 사용 드롭 다운을보고 모든 것을하지 않고 그것은 일 : 또한

<form name="recAdd" method="GET" action="add.php"> 
    <select name="rec"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
    </select><br> 
    <input type="text" name="name" /> 
    <input type="submit" value="Submit" /> 
</form> 

PHP (은 add.php) 텍스트 상자가 (인쇄 단지 온도는) 것을 인쇄 할) 파일을 작성하는 등, 괜찮다고하면 다음

$recAll = "recAll.txt"; 
$fh = fopen($recAll, 'a') or die("can't open file"); 
$stringData = "New Stuff 1\n"; 
fwrite($fh, $stringData); 
$stringData = "New Stuff 2\n"; 
fwrite($fh, $stringData); 
fclose($fh); 
+0

Stackoverflow를 사용하면 123이 표시됩니다. - Theraot를 편집 해 주셔서 감사합니다. – user1043816

+2

GET 및 POST를 용도에 맞게 혼합하고 있습니까? 그리고 ... 너의 질문은 또 뭐야? 어떤 요청 방법이 사용되었는지 확실하지 않으면 $ _SERVER [ 'REQUEST_METHOD']를 시도해보십시오. – Theraot

+0

@Theraot 답변으로 게시해야합니다. –

답변

2

일반인이 요청했기 때문에! 이것은 내 대답을 전체 대답으로 확장 한 것입니다 :

$_GET$_POST을 모두 사용하고 있습니다. 이것은 일반적이지 않습니다. 의도적으로이 작업을 수행하고 있습니까? 내 추측은 : 아니오. 당신이 당신의 HTML에서 볼 경우

당신은이 :

<form name="recAdd" method="GET" action="add.php"> 

이는 GET 될 것입니다 브라우저에서 요청을 의미합니다. 당신은 POST로 변경할 수 있습니다 중 하나

<form name="recAdd" method="POST" action="add.php"> 

PHP (은 add.php) :

switch($_POST['rec']){ 
case '1': 
    $rec1 = "rec1.txt"; 
    $fh = fopen($rec1, 'a') or die("can't open file"); 
    $romString = $_POST['name']; //<--- 
    fwrite($fh, $romString); 
    fclose($fh); 
    print 'something'; //<<--- fixed syntax, btw: I would use echo 
break; 
case '2': 
    // do Something 
break; 
case '3': 
    // do Something 
break; 
default: 
    print("Not working ;("); 
} 

참고 :이 변화에 테스트 한 노력하고 있습니다.

아니면 모든 GET로 변경


switch($_GET['rec']){ //<----- 
case '1': 
    $rec1 = "rec1.txt"; 
    $fh = fopen($rec1, 'a') or die("can't open file"); 
    $romString = $_GET['name']; 
    fwrite($fh, $romString); 
    fclose($fh); 
    print 'something'; //<<--- fixed syntax, btw: I would use echo 
break; 
case '2': 
    // do Something 
break; 
case '3': 
    // do Something 
break; 
default: 
    print("Not working ;("); 
} 
웹 서버 (즉, 아파치) 대상 폴더에 쓸 수있는 권한이 있는지 확인합니다 (I는 POST로 유지하는 것이 좋습니다). 이로 인해 작업이 성공하지 못할 수 있습니다.

PHP의 오류 메시지를 켜면 상황에 대한 통찰력을 얻을 수 있습니다. 당신이 가진 현재의 PHP 스크립트를 수행 할 수 있습니다

error_reporting(E_ALL | E_STRICT); 

참고 : error_reporting at php.net


당신은 당신과 같이 $_SERVER['REQUEST_METHOD']을 시도 할 수 있습니다 사용 된 것을 요청 방법이 확실하지 않은 경우 :

if ($_SERVER['REQUEST_METHOD'] === 'POST') 
{ 
    //Ok we got a POST, probably from a FORM, read from $_POST. 
    var_dump($_PSOT); //Use this to see what info we got! 
} 
else 
{ 
    //You could assume you got a GET 
    var_dump($_GET); //Use this to see what info we got! 
} 

참고 : $_SERVER at php.net

또한 PHP Session managementPost-Redirect-Get에 관심이 있으실 것입니다.그것으로 당신이 할 수 있습니다 :

if ($_SERVER['REQUEST_METHOD'] === 'POST') 
{ 
    //Ok we got a POST, probably from a FORM, read from $_POST. 
    var_dump($_PSOT); //Use this to see what info we got! 
    //Do stuff... 
    //Write results to session 
    session_start(); 
    $_SESSION['stuff'] = $something; 
    //redirect: 
    header('Location: add.php', true, 303); 
    //The redirection will cause the browser to request with GET 
    //The results of the operation are in the session variable 
    exit(); 
} 
else 
{ 
    //You could assume you got a GET 
    var_dump($_GET); //Use this to see what info we got! 
    //Get stuff from session 
    session_start(); 
    if (array_key_exists('stuff', $_SESSION)) 
    { 
     $something = $_SESSION['stuff']; 
     //we got stuff 
     //later use present the results of the operation to the user. 
    } 
    //clear stuff from session: 
    unset($_SESSION['stuff']); 
} 

참고 : 귀하의 양식은 add.php 할 데이터를 전송하기 위해 get 메소드를 사용 $_SESSION at php.net

+0

매우 유익하지만 여전히 파일에 쓰지 않는다. – user1043816

+0

@ user1043816 내 개인 서버에서 .. 나는 그것이 언론의 문제라고 확신한다. 대상 폴더에 쓸 수있는 권한이있는 사용자에게 웹 서버가 실행되고 있는지 확인하십시오. – Theraot

+0

아 답니다. 답변을 타이핑하는 동안 오타를 만들었습니다. 정보 및 링크에 감사드립니다! :) – user1043816

0

변경을 ... 볼 수

<form name="recAdd" method="POST" action="add.php"> 

$romString = $_POST['name']; 
+0

여전히 파일에 쓰지 않았다. – user1043816

0

. 그러나 rec 값을 검색하려면 $_POST을 사용하고 있습니다.

방법 1 : <form name="recAdd" method="POST" action="add.php">-

변경 <form name="recAdd" method="GET" action="add.php"> 당신이이 문제를 해결할 수있는 방법은 두 가지가 있습니다. $romString = $_GET['name'];에서 $romString = $_POST['name'];으로 변경하십시오.

방법 2 :

변경 switch($_GET['rec']){switch($_POST['rec']){. 양식의 메소드가 get 인 경우에도 작동합니다.

방법 3 :

변경 switch($_REQUEST['rec']){-switch($_POST['rec']){. 이는 양식의 방법이 무엇이든 관계없이 작동합니다. $_REQUEST$_POST$_GET의 값을 모두 포함합니다.

나는이 솔루션을 가장 바람직한 것으로부터 가장 낮은 것으로 순서대로 나열했습니다. $ _GET와 $ _POST를 혼합하는 것은 일반적으로 최적의 솔루션이 아닙니다.

+0

유익한 위와 동일 하나 파일에 쓰지 않습니다. – user1043816