2010-12-07 21 views
1

私は同じアクションと送信ボタンを使って1ページにフォームを生成するMySQLを持っています。フォームの数はさまざまです。それらはすべて提出されたときに同じPHPファイルを呼び出します。また、投稿時にデータを収集する1つのPHPファイルがあります。以下の例を参照してください。複数のフォームと1つのPHPレシーバー

問題は、フォームの1つが送信されるときに値が異なるフォームの異なるフィールドと混同されることです。例:form1が送信されると、PHPはform6の値を受け取ります。

各フォームが独自の値を送信する方法を確認するにはどうすればよいですか?

HTMLコード例:

<form method="POST" action="index.php?action=newhistory" name="history_1"> 
    <input type="hidden" name="id" value="1"> 
    <input type="text" name="history"> 
    <input type="submit" name="add_history" value="Submit"> 
</form> 

<form method="POST" action="index.php?action=newhistory" name="history_6"> 
    <input type="hidden" name="id" value="6"> 
    <input type="text" name="history"> 
    <input type="submit" name="add_history" value="Submit"> 
</form> 

PHPコード例:

case 'newhistory': 

    $id = $_POST['id']; 
    $history = $_POST['history']; 

    $sql = mysql_query("INSERT INTO history (id, history) VALUES('".$id."', '".$history."')", $link); 

    break; 

任意のソリューション?

+0

なぜ異なるフォームに属していますが、すべてのフィールドに同じ名前を使用していますか? –

+0

フィールドごとに変数を作成する手間を省く。また、フィールドは自動的に生成されるため、将来どのくらいの数があるかわかりません。 私はそれが理に適ったことを望みます。 –

答えて

1

<form></form>タグでカプセル化されたコンテンツを送信します。複数のフォームのaction属性が同じページを指していることは、あなたが記述した問題を作成すべきではありません。

ここに書いたコードは正常です。 HTMLコードを確認して、各フォームの要素を囲むように、<form></form>というタグがあることを確認してください。

+0

うん、私は愚かな間違いをしました、私はフォーラムを書いたフォームの代わりに...ありがとう。 –

1

送信ボタンに別の名前を付けて確認してください。

if(isset($_POST('add_history')) 
{ 
} 

if(isset($_POST('add_history1')) 
{ 
} 
+0

これは不必要な複雑さを追加しています。フォームが同一である限り、私は処理ロジックを分離することに何の意味も見ません。少なくとも質問の中でこれをする理由はない。 –

0

1つのフォームでsubmitを押すと、ブラウザはこのフォームから値のみを送信することになっています。 form1が提出されると、PHPはform6の値を受け取りません。おそらく、フォームタグを適切に閉じたり、JavaScriptをワイルドにしたりしていない可能性があります。

関連する問題