J'ai écrit un plugin personnalisé pour que les gens puissent s'inscrire à un cours. Les données sont soumises dans un formulaire frontal et stockées dans une table personnalisée de la base de données. Il existe une colonne "course_completed" qui est un booléen dont la valeur par défaut est 0 (non vérifié/faux).
Ensuite, j'ai un tableau qui extrait les données de la base de données des personnes inscrites au cours. Une fois le cours terminé, l’administrateur devrait pouvoir vérifier qui a suivi le cours et cliquer sur Enregistrer. Je ne parviens pas à trouver un moyen pour que, une fois la case à cocher cochée pour une personne, la valeur de "completed_course" soit remplacée par 1 dans la base de données.
Code pour afficher les données de base de données dans une table sur le backend:
<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>
Je ne sais pas si je suis censé utiliser AJAX, un formulaire à l'intérieur de la table ou autre chose.
Réponse approximative pour commencer.
Dans la boucle, utilisez le numéro d'enregistrement de la ligne (un champ appelé 'IDnumber', unique, auto) pour aider à nommer le d'un.
Le <input>
caché devrait avoir un identifiant de quelque chose comme
<input hidden name='idnumber' value='<?php echo $row[idnumber];?>'>
ce qui fera que la valeur de ce champ d'entrée sera le numéro d'enregistrement de cet enregistrement. (Les instructions <input>
doivent être en dehors des blocs PHP.)
Utilisez les valeurs $_POST
pour déterminer quel enregistrement mettre à jour à l'aide de la valeur de l'élément d'entrée masqué ("idnumber") - qui sera le numéro d'enregistrement que vous souhaitez mettre à jour avec les autres valeurs du formulaire.
La boucle doit être entourée d'un bloc <form>
(extérieur à la boucle).