2017-09-11 5 views
0

私は動的に生成されたフォームを持っています。これは、データベーステーブル(table_one)から動的に取得されるIDです。私の目的は、このIDを別のテーブル(table_two)に送信することです。私のページでは、これらのIDがtable_oneからフェッチされていることがわかります.1,2,3,4,5と言うことができますが、これらのIDのいずれかを '2'とすると、最後のID '5'だけが送信されますto table_two。 2行目を提出すると、ID「2」が「5」ではなく提出されるように、私のコードを修正するにはどうすればよいですか?以下は私のコードです。動的生成フォームはmysqlテーブルの最後の行IDだけを提出します

HTML

<form> 
    <input type="text" id="name" name="name" value="<?php echo $name_id;?>" > 
    <button type="submit" onclick="return chk()">Edit</button> 
</form> 

JAVASCRIPT

PHP

$name = $_POST['name']; 
echo "$name"; 
+1

[IDは一意でなければなりません](http://stackoverflow.com/questions/5611963/can-multiple-different-html-elements-have-the-same-id-if-theyre-different-eleme)これらの要素と対話しようとすると[JavaScript](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)とCSSで問題が発生するためです。 –

+0

ありがとうございます。しかし、私はIDを一意にするにはどうすればいいですか? – Oponjous

+1

あなたが取ることができるアプローチはいくつかあります。要素が動的に作成されるので、おそらくIDの配列を生成し、各IDの要素を作成します。私のために働く –

答えて

1

あなたは一意の識別子を追加したり、トンを使用する必要があります。彼はDOM。あなたのケースに簡単な解決策は以下のとおりです。

HTML

<input type="text" id="name-<?php echo $name_id;?>"> 
<button type="submit" onclick="return chk(<?php echo $name_id;?>)">Edit</button> 

Javascriptを

function chk(name_id){ 
    $.ajax({ 
     type:"post", 
     url:"test.php", 
     data: { 
      id: name_id, 
      name: $('#name-'+name_id).val() 
     }, 
     cache:false, 
     success: function(html){ 
      $('#msg').html(html); 
     } 
     }); 
    return false; 
} 

そして、あなたが変更したい行のIDを渡します。サーバー上では、$ _POSTの両方の値を処理します。お役に立てれば。

btwこのAJAXシナリオでは、フォーム要素は必要ありません。

+0

本当にありがとう – Oponjous

関連する問題