web-dev-qa-db-ja.com

テーブル内の特定の行についてデータベースのチェックボックス値を更新する

私は人々がコースにサインアップするためのカスタムプラグインを書きました。データはフロントエンドフォームで送信され、データベース内のカスタムテーブルに保存されます。 「course_completed」列があり、これはデフォルトで0に設定されている(チェックされていない/ false)ブール値です。

それから私はコースに登録した人々のデータベースからデータを取得するテーブルを持っています。コースが終了したら、管理者はコースを修了した人を確認して[保存]をクリックできます。チェックボックスが人のためにチェックされると、データベースの "completed_course"の値が1に変更される方法を見つけるのに苦労しています。

バックエンドのテーブルにデータベースデータを表示するコード:

<tbody class="alternate">
            <?php
                global $wpdb;
                $table_name = $wpdb->prefix . 'crm';
              $result = $wpdb->get_results ("SELECT * FROM $table_name");
            ?>
            <?php foreach ($result as $field):  ?>
            <tr>
                <td><?php esc_attr_e( $field->id, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->time, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->first_name, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->last_name, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->email, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->phone, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->postcode, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->city, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->address, 'wp_admin_style')?></td>
            <td><?php esc_attr_e( $field->course, 'wp_admin_style')?></td>
            <td><input type="checkbox" name="course_completed" value="1" <?php checked( $field->course_completed, 1 ); ?> /></td>
            </tr>
            <?php endforeach; ?>
        </tbody>

私がAJAX、テーブル内のフォーム、または何か他のものを使用することになっているかどうかわからない。

mysql backend table 

1
lukeliasi

始めるための大まかな答え.

ループ内で、行のレコード番号( 'IDnumber'というフィールド、unique、auto)を使用してaの名前を付けます。

隠された<input>は次のようなもののIDを持つべきです

<input hidden name='idnumber' value='<?php echo $row[idnumber];?>'>

これにより、その入力フィールドの値がそのレコードのレコード番号になります。 (<input>ステートメントは、PHPブロックの外側にある必要があります。)

隠し入力項目の値( 'idnumber')を使用して、更新するレコードを決定するには$_POST値を使用します。これは、フォーム内の他の値で更新するレコード番号です。

ループは<form>ブロック(ループの外側)で囲む必要があります。

1
Rick Hellewell