2011-01-26 3 views
0

두 개의 이전 질문을 taking info put into a form and using it to populate a page에하고, 하나는 redirect you to a page when you submit the form을 기반으로합니다 양식에서 선택한 항목을 드롭 다운합니다. 이제는 두 가지가 동일한 형태로 작동하기 위해이 두 가지가 필요합니다.양식을 작성해야합니다. 드롭 다운에서 선택한 페이지로 이동 한 다음 양식의 다른 정보를 사용하여 선택한 페이지를 채 웁니다.

양식에서 정보를 복용하고 다음 페이지를 populae하는 데 사용하기위한 코드는 다음과 같습니다

<?php 
$firstname = $_GET['personsName']; 
echo "My Name is" .$firstname; 
?> 

그리고 그 형태는 다음과 같을 것이다 :

<form action="letter.php" method="get"> 
<input type="text" name="personsName"></input> 
<input type="submit" value="submit"> 
</form> 

코드를를 선택 페이지는 다음과 같습니다 :

$pages = array('Page 1' => 'page1.php', 'Page 2' => 'page2.php', 'Page 3' => 'page3.php'); 

if (array_key_exists($_POST['dropdown-name'], $pages)) { 
header("Location: " . $pages[$_POST['dropdown-name']]); 
} else { 
echo "Error processing form"; // submitted form value wasn't in your array, perhaps a hack attempt 
} 

이 두 가지 모두 동일한 양식에서 작동해야합니다. 그것을 알아 낸다. 내가 시도한 것은 :

<form action="<?=$pages?>" method="POST"> 
<input type="text" name="name" /><br /> 
<select name="letter"> 

<option value="Page 1"> 
Page 1 
</option> 

<option value="Page 2"> 
Page 2 
</option> 

<option value="Page 3"> 
Page 3 
</option> 

</select> 
<input type="submit" value"Print" /> 
</form> 

분명히 잘못되었습니다. 정보를 입력하고, 선택한 페이지로 리디렉션 한 다음, 양식에 입력 된 다른 정보로 페이지를 채우려면이 양식이 필요합니다. 문제는 내가 이미 가지고있는 해답을 얻는 방법을 모른다. 그 모든 도움에 감사드립니다!

현재 코드는 이것이다 :

<script type="text/javascript"> 
$(function UpdateFormAction(){ 
alert('Launched event handler'); 
var form = document.getElementById('MyForm'); 
var list = document.getElementById('PageList'); 
alert('List item numer ' + list.selectedIndex); 
var desiredAction = list.options[list.selectedIndex].value 
alert('Desired action set to ' + desiredAction); 
form.action = desiredAction; 
}); 
</script> 

양식이다 : 당신은 당신이 리디렉션을 수행 할 때 서버에 전송되는 데이터를 잃고

<form id="MyForm" action="letter.php" method="POST"> 
<input type="text" name="name" /><br /> 
<select id="PageList" name="letter" onchange="UpdateFormAction();"> 

<option value="letter.php">Page 1</option> 
<option value="letter2.php">Page 2</option> 
<option value="letter3.php">Page 3</option> 
</select> 
<input type="submit" value"Print" /> 
</form> 

답변

2

. 쿠키 또는 유사한 (단순 뭔가 많은 오버 헤드)

  • 스토어 A의 데이터 서버 측을 사용하여 클라이언트에서

    • 저장 데이터 :

      기본적으로, 당신은 3 가지 옵션이 있어요 세션 또는 이와 유사한 (더 많은 오버 헤드)

    • 은 당신이 리디렉션하고있는 URL을 통해 데이터를 전달 ...

    그래서 같은 :

    if (array_key_exists($_POST['dropdown-name'], $pages)) { 
        header("Location: " . $pages[$_POST['dropdown-name']] . "?personsName=" urlencode($_POST['name'])); 
    } else { 
        //Blah 
    } 
    

    간단한 예를 들어 답하는 것 같습니다. 많은 데이터가 있거나 더 복잡한 경우 위에 다른 2 옵션 중 하나를 사용하는 것을 고려하십시오.

    주의 : 변수 name을 호출 한 양식에서 수신 한 패킷에 personsName - URL에서 매핑을 확인하십시오.

    자바 스크립트 솔루션 (테스트) :

    <html> 
        <head> 
         <title>SO Demo</title> 
        </head> 
        <body> 
    
        <script type="text/javascript"> 
         function UpdateFormAction(){ 
          var form = document.getElementById('MyForm'); 
          var list = document.getElementById('PageList'); 
          var desiredAction = list.options[list.selectedIndex].value 
          form.action = desiredAction; 
          document.getElementById('Target').innerHTML = 'Form action set to: ' + desiredAction; 
         } 
        </script> 
    
        <form id="MyForm" action="letter.php" method="POST"> 
         Name: <input type="text" name="name" /><br /> 
         Page: <select id="PageList" name="letter" onchange="UpdateFormAction();"> 
          <option value="letter.php">Page 1</option> 
          <option value="letter2.php">Page 2</option> 
          <option value="letter3.php">Page 3</option> 
         </select> 
         <input type="submit" value="Print" /><br/> 
         <span id="Target">Form action unmodified</span> 
        </form> 
        </body> 
    </html> 
    
  • +0

    실제 형태에서 나는 리디렉션 된 페이지를 채우는 정보 10 개를 받고있을 것입니다. 이 방법을 사용하는 것이 너무 많습니까? – Zach

    +0

    URL 길이에 제한이 있습니다 (IE6의 경우 1024 자 이상, 모든 최신 브라우저의 경우 4096 이상). 따라서 데이터가 무엇인지에 따라 달라집니다. 간단한 입력 필드는 괜찮지 만 큰 텍스트 영역이 문제가 될 수 있습니다. – Basic

    +0

    아 물론 물론 간단한 자바 스크립트를 사용하여 드롭 다운이 변경되면 양식의 '액션'이 해당 페이지로 변경되므로 중간에 PHP 단계가없고 원하는 페이지. – Basic

    관련 문제