2011-11-15 8 views
0

私は以下のようなチェックボックスのリストを持っています。数字、416,419などはページ番号を表します。それらは2組のフィールド用であり、一方は「likebutton」であり、他方は「sendbutton」である。いいね!ボタンやsendbuttonフィールドの両方のためにこれらのチェックボックスにチェックを受けるとき、私はそれぞれの行を更新することができる午前れる私は何を達成しようとしていますチェックボックスの値に基づいてMySQLにYesまたはNoを挿入します。

<input type="checkbox" name="likebutton[]" value="416" /> 
<input type="checkbox" name="likebutton[]" value="417" /> 
<input type="checkbox" name="likebutton[]" value="418" /> 
<input type="checkbox" name="likebutton[]" value="419" /> 
...more checkboxes 
<input type="checkbox" name="sendbutton[]" value="416" /> 
<input type="checkbox" name="sendbutton[]" value="417" /> 
<input type="checkbox" name="sendbutton[]" value="418" /> 
<input type="checkbox" name="sendbutton[]" value="419" /> 
...more checkboxes 

はい(チェック)またはNoのいずれかのデータを持つ(ページ)(チェックなし) MySQLで。現在、私のmysqlクエリは以下のようになります。これは、foreach関数が1つしかなく、1つまたは複数のチェックボックスにチェックを入れても、以下のようにコードを残すか、すべてチェックしないとforeach関数のエラーが発生する場合にのみ機能します。

foreach($_POST["likebutton"] as $pagenumberL) 
$YesNoL = isset($_POST["likebutton"]) ? 'Yes' : 'No'; 
mysql_query("UPDATE pages SET likebutton='".$YesNoL."' WHERE page_id='".$pagenumberL."'"); 

foreach($_POST["sendbutton"] as $pagenumberS) 
$YesNoS = isset($_POST["sendbutton"]) ? 'Yes' : 'No'; 
mysql_query("UPDATE pages SET sendbutton='".$YesNoS."' WHERE page_id='".$pagenumberS."'"); 

どのように進むべきかに関する私の問題やより良い提案はありますか?

+0

が含まれ、名前によってあなたの特定のケースで

$field = isset($_POST['field_name']) ? $_POST['field_name'] : false; $dbFlag = $field ? 'Yes' : 'No'; 

を値を確認することができます待つ。なぜあなたはHTML名でかっこを使用していますか? – user978122

+0

良い質問ですが、もともと私はを持っていましたが、それは私の望むように機能しませんでした。私はそれらをそこに残したことを認識しませんでした。 – 100d

答えて

3

チェックボックスの問題点は、チェックされていないものはデータを送信しないということです。

これを回避するための標準的なトリックがある...

<input type="hidden" name="field_name" value="0"> 
<input type="checkbox" name="field_name" value="1"> 

チェックボックスをチェックすると、それは後の文書に表示されて、その値が送信されます。チェックを外すと、非表示の入力値が送信されます。

あなたは、単に入力された名前でpage_id、例えば

<input type="hidden" name="likebutton[416]" value="0"> 
<input type="checkbox" name="likebutton[416]" value="1"> 

そしてPHP

foreach ($_POST['likebutton'] as $pageId => $likeFlag) { 
    $dbFlag = $likeFlag ? 'Yes' : 'No'; 

    // update DB 
} 
+0

あなたの2番目の例は、私が一緒に行ったものです。助けと説明をくれてありがとう。 – 100d

関連する問題