2012-04-11 10 views
2

OKみんな、データベース駆動フォームの複数の送信ボタン

REMOVEまたはPUSHボタンとともにデータベーステーブルの内容を表示しようとしています。 REMOVEボタンは、データベースから前記項目を除去する。 PUSHボタンはアイテムを別のデータベースにプッシュし、次に変数をtrueに設定することでアイテムをFLAGします。

データベース内の各項目をエコーする接続とwhileループがREMOVEボタンとPUSHボタンとともに表示されます。エコーは、次のようになります。

echo '<form method='post' name='$ID' action='$_PHP_SELF'> 
    <tr> 
     <td width='5%' align='center'>$ID</td> 
     <td width='75%'>$content</td> 
     <td width='10%' align='center'><input type='submit' name='remove' id='remove' value='REMOVE'></td> 
     <td width='10%' align='center'><input type='submit' name='push' id='push' value='PUSH'></td> 
    </tr> 
</form>'; 

私はに実行している問題は、私はシンプルなフォームのいずれかプッシュして確認するか、その特定の項目を削除するコードを提出設定する方法です。もし私が何十ものデータベースエントリを期待しているために/ ElseやSwitch文が動作しない場合は、送信コードそのものも動的であるようにしたい。

私はで始まっ:

if(isset($_POST['push'])){ 
echo "PUSH ".$ID." TO DATABASE"; 
} 

if(isset($_POST['remove'])){ 
echo "REMOVE ".$ID." FROM DATABASE"; 
} 

が、これらの両方は、最後の$ ID変数を戻ってきています。

ありがとうございます。

答えて

2

簡単な解決策は、HTML出力を2つの形式に変更し、1つずつ送信することです。あなたはあなたのPHPをまったく同じに保つことができます。

EDIT:以下のように、その中のIDで隠しデータフィールドを追加し、プッシュ動的にボタンのIDを取得するために:

<tr> 
    <td width='5%' align='center'>$ID</td> 
    <td width='75%'>$content</td> 
    <td width='10%' align='center'> 
     <form method='post' action='$_PHP_SELF'> 
      <input type='hidden' value='$ID' name='id'> 
      <input type='submit' name='remove' id='remove' value='REMOVE'> 
      </form> 
    </td> 
    <td width='10%' align='center'> 
     <form method='post' name='$ID' action='$_PHP_SELF'> 
      <input type='hidden' value='$ID' name='id'> 
      <input type='submit' name='push' id='push' value='PUSH'> 
     </form> 
    </td> 
</tr> 

次に、あなたのPHPは次のよ​​うになります。

$ID=mysql_real_escape_string($_POST['id']); //Encapsulate in this function to prevent bad IDs causing SQL injections. 
if(isset($_POST['push'])){ 
echo "PUSH ".$ID." TO DATABASE"; 
} 

if(isset($_POST['remove'])){ 
echo "REMOVE ".$ID." FROM DATABASE"; 
} 
+0

これはすべてうまくできていますが、$ _POST ['push']や$ _POST ['remove']関数をどのように動的に書くのですか? – Murphy1976

+1

私は、参照されたIDを動的に識別する方法の説明を追加するために投稿を編集しました。 – Death

+0

HUZZAH !!!!!!!!! – Murphy1976

2

それぞれの関連する行を、独自の2つのプッシュボタンで独自のフォームにします。彼らはすべて同じページに投稿できます。また、フォーム名ではなく、隠しフィールド(およびサーバー側を検証)にIDを保持します。

+0

上記のecho文とあなたが示唆していることの違いは何ですか?私はすでに書いたエコーステートメントが各行に独自のフォームを作ったと思った..... – Murphy1976

+0

一つのこととして、$ IDを隠しフィールドとして使うことをお勧めします。これはPOSTリクエストで返されます。また、あなたの全体のフォームが各行ごとに繰り返されていることは確かではありませんでした。 – dotancohen

0

チェックボックスシステムとPHPプロセッサの作成については、このチュートリアルに従ってください。 Php Checkboxes

2つの方法のいずれかを実行できます。 1つのリンクで複数のアイテムを一度に削除できるようにしたい場合は、このようにすることができます。

チェックボックスには、必要な数の行を選択します。次に、 "REMOVE"または "PUSH"ボタンを押して、各行を処理して別のページに送ります。

もう1つの方法は、一度に1つの行を削除またはプッシュする各行の横にREMOVEおよびPUSHボタンを置くことです。私は最初のアプローチをお勧めします。あなたがそのガイドに従うなら、それはかなりまっすぐ進む。

関連する問題