2016-05-03 5 views
2

私は多くの繰り返し行を持つフォームラップテーブルを持っています。表の目的は、ユーザーアカウントの編集を許可することです。各行は次のようになります。html/phpで送信をスコープすることはできますか?

<tr> 
    <td><input type="text" name="username" value="$row->username" /></td>"; 
    <td><input type="text" name="fname" value="$row->fname" /></td> 
    <td><input type="text" name="lname" value="$row->lname" /></td> 
    <td><input type="email" name="email" value="$row->email" /></td> 
    <td><button type="submit" class="btn btn-primary" name="edituserbutton" value="$row->id" >Edit</button>"; 
</tr> 

この表を作成します。私は各入力要素の名前を行番号 に変更することができます。これにより、それらは一意になります。 name="username##"ここで、## = $row->id
しかし、投稿が何とか行にスコープできるかどうか疑問に思っていました。私はこれが可能である。この

$id = $_POST['edituserbutton']; 
$user_name = $_POST['username'.$id]; 

のようにキーを構築することを避けるために をしようとしていますか?

また、データの表示や編集に関しては、これは一般的にどのように行われていますか?

===========更新

ここに私がしたことがあります。よく働く。すべてのいただきありがとうございます:

$(document).ready(function() { 
    $('button[name=edituserbutton]').click(function(e) { 
    e.preventDefault(); 
    var buttonvalue = $(this).attr("value"); 
    alert("button value is " + buttonvalue); 
     // .. business here 

     return; 
    }) 
}); 
+2

これはJavascriptで行うことができます。ボタンを 'onclick'イベントにしてからDOMを歩いて、その行内のすべてのフォーム要素をつかみます。次に、AJAXを使用してデータを送信します。これを行う方法の例がたくさんあります。 – Machavity

+0

PHPは入力値から配列を作成できます。 http://stackoverflow.com/questions/1543950/php-request-as-arrayとhttp://us.php.net/manual/en/faq.html.php#faq.html.arrays – JimmyB

+0

@Machavityのコメント正直言ってベストプラクティスです。最適なユーザーエクスペリエンスも提供します。 – MonkeyZeus

答えて

0
<tr> 
    <td><input type="text" name="username[$row->id]" value="$row->username" /></td>"; 
    <td><input type="text" name="fname[$row->id]" value="$row->fname" /></td> 
    <td><input type="text" name="lname[$row->id]" value="$row->lname" /></td> 
    <td><input type="email" name="email[$row->id]" value="$row->email" /></td> 
    <td><button type="submit" class="btn btn-primary" name="edituserbutton" value="$row->id">Edit</button>"; 
</tr> 

その後、PHP

に は
$id = $_POST['edituserbutton']; 
$newUserName = $_POST['username'][$id]; 

あなたはまた、冗長データの多くを提出しないようにしたい場合は、それぞれの行にその上のフォームを作成したいと思います自分のように

<tr> 
<form action="..."> 
    <td><input type="text" name="username" value="$row->username" /></td> 
    <td><input type="text" name="fname" value="$row->fname" /></td> 
    <td><input type="text" name="lname" value="$row->lname" /></td> 
    <td><input type="email" name="email" value="$row->email" /></td> 
    <td> 
     <button type="submit" class="btn btn-primary" name="edituserbutton">Edit</button> 
     <input type="hidden" name="rowId" value="$row->id"/> 
    </td> 
</form> 
</tr> 
+0

あなたはそれもこのようにすることができます、これは '$ row-> id [username]'を使うのに非常に便利です。キーは 'id'となり、キーの下ではそのIDに関するすべての情報.. –

+1

While私はあなたの努力のための小道具を与える、この答えはスケーラブルではない(あなたはフォーム全体を提出しなければならないと彼は100行を示している場合、これは長いパースされる)、実際には質問に答えることはありませんフォーム全体を1行だけ提出する) – Machavity

+0

@Machavityあなたはそれが効率的でないという点で正しいです。しかし、私がそれを読んだとき、OPはデータの一部のみを提出したいと述べていませんでした。 - そのために、彼は各行を独自の形にするだけです。 – JimmyB

関連する問題