2016-04-30 14 views
0

したがって、データベースから取得したデータを含むhtmlテーブルがあります。各行には、「編集」ボタンがあります。それは次のようになります。データベース内のデータを更新するために隠しフィールドを使用する

<td><form action="controller/edit" method="post"> 
    <input type="hidden" name="id" value="<?php echo $id ?>"> 
    <input type="submit" value="edit"> 
</form></td> 

そして、コントローラ/編集ページに、私は再びデータベースにアクセスします:

select * from table where id=$_POST['id'] 

をこれは、すべての罰金です。しかし、私はパフォーマンスを向上させるためにデータベースへの2回目のアクセスを避けることが薄いです。この方法

<td><form action="controller/edit" method="post"> 
    <input type="hidden" name="id" value="<?php echo $id ?>"> 
    <input type="hidden" name="name" value="<?php echo $name ?>"> 
    <input type="hidden" name="amount" value="<?php echo $amount ?>"> 
    <input type="submit" value="edit"> 
</form></td> 

行からのすべてのデータがフォームであるため、フォームは/私は再びデータベースにアクセスする必要はありません編集をコントローラに送信したときに:私はこのような何かをしようとしています。このアプローチはいいですか?それとも悪い習慣ですか?

+0

編集インターフェイスのようなものはありませんか?データベースから再度ロードするだけです。 – Scuzzy

答えて

1

あなたが言った2つ目はショートカットのようですが、脆弱である可能性があります。

隠しフィールドは簡単に改ざんできます。たとえば、ユーザーは隠しフィールドの値を操作して値を975646456456456のような乱数に変更できます。

この場合、対応する一致するレコードがない可能性があるため、データベースに誤った挿入が行われますid 975646456456456.

だから、あなたは最初のIDと一緒にIDが存在するかどうかチェックし、そのレコードをフェッチしてください。

-1

jquery.buttonを送信してみてください。たとえば、送信フォーム:

submitform(){ 
     jQuery('form id').attr('action','url'+'?id= "id from db"); 
     jQuery('form id').submit(); 
} 
関連する問題