2

複数のチェックボックスから値を取得するために、php ファイルで以下のコードを使用しています。

    if(!empty($_POST['check_list'])) {
        foreach($_POST['check_list'] as $check) {
                update_comment_meta($check, 'consider', 1);
        }


    }

問題は、このコードが明らかに$_POST['check_list']チェックされた値のみを配列に入れていることです。

update_comment_meta私の必要は、「1」の代わりに「0」を3番目のパラメーターとして配置することにより、チェックされていない値でも関数を実行することです。

詳細については、HTML フォームを生成するコードを示します。

<form action="" id="primaryPostForm" method="POST">

<?php    
         $defaults = array(
    'post_id' => $current_post); 
         $com= get_comments( $defaults );

        foreach ($com as $co) {
    if(get_comment_meta($co->comment_ID, 'consider', true)==1) {
    ?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" checked="checked">

    <?php }
    else {
    ?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" >
    <?php
    }}
</form>

いつもお世話になっております。

4

2 に答える 2

7

チェックされていない値を投稿に送信するのはそれほど簡単ではありません。より良い解決策は、投稿ページで簡単に反復できる方法でチェックボックスに名前を付けることです。

チェックボックスと一緒に非表示の入力を使用します。チェックボックスは非表示の入力よりも優先されます。

<form>
  <input type='hidden' value='0' name='check_box_con'>
  <input type='checkbox' value='1' name='check_box_con'>
</form>

送信後、両方が同じ名前であるため、check_box_con は、チェックされていない場合は隠しフィールドの値を表示し、そうでない場合はオーバーライドして元の値を表示します。

詳細については 、チェックされていないチェックボックスを投稿するを参照してください

于 2013-06-20T22:17:21.230 に答える
1

これが私が使用したソリューションです(PeeHaaのコメントに基づく):

        if(!empty($_POST['check_list'])) {
        foreach ($com as $co) {

        if (in_array($co->comment_ID,$_POST['check_list']))
        update_comment_meta($co->comment_ID, 'consider', 1);

        else 
         update_comment_meta($co->comment_ID, 'consider', 0);
        }
        }

実際、POST変数はチェックボックスでこのように機能するため、サーバー側の言語を使用して、POST経由で送信されない値を知ることが簡単な方法です。

お時間をいただきありがとうございます。

于 2013-06-22T12:22:05.327 に答える