web-dev-qa-db-ja.com

PHPスクリプトへのHTMLフォーム送信

HTMLフォームを作成しています。結果をPHPスクリプトに表示したい。

<form action="chk_kw.php" method="post"> <br />
    <select> name="website_string" 
        <option value="" selected="selected"></option>
    <option VALUE="abc"> ABC</option>
    <option VALUE="def"> def</option>
        <option VALUE="hij"> hij/option>   
    </select>
    <input type="submit" name="website_string"  >
</form>

問題は、PHPに渡される値を取得できないことです。値を使用する場合:

<INPUT TYPE="submit" name="website_string" value="selected" >

常に引用符で囲まれたテキストを渡します。この場合 "selected"。オプションから文字列の1つを渡すにはどうすればよいですか?

17
Joe

これを試して:

<form method="post" action="check.php">
    <select name="website_string">
        <option value="" selected="selected"></option>
        <option VALUE="abc"> ABC</option>
        <option VALUE="def"> def</option>
        <option VALUE="hij"> hij</option>
    </select>
    <input TYPE="submit" name="submit" />
</form>

選択コントロールと送信ボタンの両方に同じname属性があったため、最後に使用したのはクリックしたときに送信ボタンでした。その他のすべての構文エラーは別です。

check.php

<?php
    echo $_POST['website_string'];
?>

生の$_POSTデータの使用に関する免責事項。 アプリケーションロジックで実際に使用するものはすべてサニタイズします

39
jondavidjohn
_<form method="POST" action="chk_kw.php">
    <select name="website_string"> 
        <option selected="selected"></option>
        <option value="abc">abc</option>
        <option value="def">def</option>
        <option value="hij">hij</option>   
    </select>
    <input type="submit">
</form>
_


  • フォームがより複雑になると、print_r($_POST);を使用してphpスクリプトの上部を簡単に確認できます。それぞれの要素名で送信されているものが表示されます。
  • 問題の要素の送信された値を取得するには、次のようにします。

    _$website_string = $_POST['website_string'];_

5
Babiker

PHPでは、選択入力ではなく送信ボタンの値を取得しているようです。GETを使用している場合は、$_GET['website_string']またはPOSTは$_POST['website_string']

次のHTMLが必要になるでしょう。

<select name="website_string">
  <option value="" selected="selected"></option>
  <option value="abc">ABC</option>
  <option value="def">def</option>
  <option value="hij">hij</option>   
</select>
<input type="submit" />

いくつかのPHPは次のようになります。

<?php

$website_string = $_POST['website_string']; // or $_GET['website_string'];

?>
3
Kyle

実際のフォームでは、結果を同じページに投稿するだけであれば、おそらく大丈夫でしょう。次のようなものを試してください:

<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?> method="POST>
0
TonyPall

構文エラー(name属性の前に選択ボックスを閉じた)を修正したと仮定すると、送信ボタンと同じ名前を選択ボックスに使用しています。選択ボックスに別の名前を付けます。

0
Derek H

ここに私が見つけたものがあります

  1. form name
  2. 使う default select option、 例えば...

    <option value="-1" selected>Please Select</option>

フォームが送信された場合、JavaScriptを使用して送信プロセスを停止することも、サーバーで実装および検証できます。

  1. サポートされているHTML5属性を使用してみてください。

この入力

<input type="submit">

あるべき

<input name="Submit" type="submit" value="Submit">

失敗するフォームを使用するときはいつでも、ボタン名submitと名前をSubmitとして呼び出すことの違いによる失敗です。

フォームが設​​定されていない場合、フォームがWebホストで失敗するため、フォームのenctype属性も設定する必要があります。

0
Mark Giblin