[RESOLU] Besoin d'aide pour finir l'enregistrement BDD de mes informations

Eléphant du PHP | 89 Messages

21 oct. 2022, 23:58

Bonjour, voilà à l'heure actuel lorsque mon code s'execute je suis obliger de rentrée un eleve ET une competence pour pouvoir les enregistrer dans la BDD or je voudrais enregistrer un eleve ET une competence OU une appreciation mais je ne sais pas comment m'y prendre à partir de ce que j'ai déjà fait. Avez-vous une idée de comment dois-je m'y prendre ?
(je vous met le code qui gère l'envoie des données à la BDD)

Code : Tout sélectionner

<?php if(isset($_POST['submit'])){ if(!empty($_POST['eleve'])){ foreach($_POST['eleve'] as $eleveId){ if (!empty($_POST['competences'] )) { //$eleveId = $eleve['id']; $query = $db->prepare('INSERT INTO eleve_competence (eleve_id, competence_id,appreciation) VALUES (:eleveId, :competenceId, :appreciation);'); $db->beginTransaction(); foreach ($_POST['competences'] as $competence) { $result = $query->execute([ 'eleveId' => $eleveId, 'competenceId' => $competence, 'appreciation' => $_POST['appreciation'], ]); if (!$result) { $errors[$query->errorCode()] = $query->errorInfo(); } } $db->commit(); } } } if (empty($errors)) { $success[] = sprintf("L'élève a été rattaché au compétences sélectionnées!"); } } ?>

Mammouth du PHP | 2703 Messages

22 oct. 2022, 00:03

s'il n'y a qu'une seule appréciation possible par élève, et plusieurs compétences possibles par élève alors la structure de la table n'est pas bonne. il faut enlever le champ appreciation de la table eleve_competence et le mettre, par exemple, dans la table eleve.

Eléphant du PHP | 89 Messages

22 oct. 2022, 00:07

s'il n'y a qu'une seule appréciation possible par élève, et plusieurs compétences possibles par élève alors la structure de la table n'est pas bonne. il faut enlever le champ appreciation de la table eleve_competence et le mettre, par exemple, dans la table eleve.
Je vois mais pour le coup il va y avoir plusieurs appérciations par élèves ( environ 1 par trimestre) donc dois je quand même appliquer ce que tu viens de me dire ?

Mammouth du PHP | 2703 Messages

22 oct. 2022, 00:12

il faut, dans ce cas, créer une autre table comme pour les compétences où il peut aussi y en avoir plusieurs.

Eléphant du PHP | 89 Messages

22 oct. 2022, 00:38

je viens de la créé mais du coup il faut dupliquer le code qui envoie les informations à la BDD ?
(quelque chose comme ceci (là il il y a une erreur au niveau du foreach(($_POST['appreciation'] as $appreciation)

Code : Tout sélectionner

<?php if(isset($_POST['submit'])){ if(!empty($_POST['eleve'])){ foreach($_POST['eleve'] as $eleveId){ if (!empty($_POST['competences'] )) { //$eleveId = $eleve['id']; $query = $db->prepare('INSERT INTO eleve_competence (eleve_id, competence_id) VALUES (:eleveId, :competenceId);'); $db->beginTransaction(); foreach ($_POST['competences'] as $competence) { $result = $query->execute([ 'eleveId' => $eleveId, 'competenceId' => $competence, ]); if (!$result) { $errors[$query->errorCode()] = $query->errorInfo(); } } $db->commit(); } } } if (empty($errors)) { $success[] = sprintf("L'élève a été rattaché au compétences sélectionnées!"); } } if(isset($_POST['submit'])){ if(!empty($_POST['eleve'])){ foreach($_POST['eleve'] as $eleveId){ if (!empty($_POST['appreciation'] )) { //$eleveId = $eleve['id']; $query = $db->prepare('INSERT INTO eleve_appreciation (eleve_id, appreciation) VALUES (:eleveId, :appreciation);'); $db->beginTransaction(); foreach ($_POST['appreciation'] as $appreciation) { $result = $query->execute([ 'eleveId' => $eleveId, 'appreciation' => $appreciation, ]); if (!$result) { $errors[$query->errorCode()] = $query->errorInfo(); } } $db->commit(); } } } if (empty($errors)) { $success[] = sprintf("L'élève a été rattaché au compétences sélectionnées!"); } } ?>

Mammouth du PHP | 2703 Messages

22 oct. 2022, 01:31

s'il n'y a qu'un champ pour l'apréciation dans le formulaire, pas besoin de foreach.

pas besoin de dupliquer
if(isset($_POST['submit'])){
if(!empty($_POST['eleve'])){
foreach($_POST['eleve'] as $eleveId){
// mettre les codes d'insertion dans les 2 tables ici

Eléphant du PHP | 89 Messages

22 oct. 2022, 23:07

Ah oui (dsl j'ai oublié de t'indiquer que ce que tu m'avais dit avais marcher)