2011-01-26 17 views
0

私はtaking info put into a form and using it to populate a pageの前の2つの質問をしており、1つはredirect you to a page when you submit the formフォームのドロップダウンで選択した内容の今私は同じフォームのために働くために、これらの2つのことが必要です。フォームを入力してドロップダウンで選択したページに移動し、フォームの他の情報を使用して選択したページを入力します

フォームから情報を取って、次のページを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

あなたがリダイレクトを行うときにサーバーに送信されたデータを失っています。クッキーまたは類似の(シンプルなもののために多くのオーバーヘッド)

  • ストア内のデータ・サーバ側を使用して、クライアント上の

    • ストアデータ:

      基本的には、3つのオプションを持っていますセッションまたは同様(それ以上のオーバーヘッド)

    • あなたがにリダイレクトしているURLを介してデータを渡す...

    だから、のようなもの:

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

    あなたの単純な例の中で最も良い答えと思われます。たくさんのデータがある場合や複雑な場合は、上記の他の2つのオプションのいずれかを使用することを検討してください。

    NB:変数nameを受信したフォームで、それをpersonsNameと呼びました。 URLの一方から他方へのマッピングに注意してください。

    Javascriptのソリューション(テスト):

    <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

    ああもちろん、単純なjavascriptを使用すると、ドロップダウンが変更されたときに、フォームの 'action'が適切なページに変わるので、途中にPHPのステップがなく、所望のページ。 – Basic

    関連する問題