Bonjour,

Je ne parviens pas à insérer dans ma base de données la sélection d'une liste déroulante multiple je vous montre mon code.

Controller.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
function createProject()
{
    $insert=insertProject(
      $_POST['libelle'], $_POST['start_date'], $_POST['end_date'], $_POST['deadline'],$_POST['goal'], $_POST['superviseur'], $_POST['service'], $_POST['agence'], 2);
 
 
     //$id=lastInsertId();
     //var_dump($id);
     //while ($_POST['executant']->fetch()) {
     // $pjexec=insertProjectExecutant($id, $_POST['executant']);
     //}
 
 
     $pjexec=insertProjectExecutant($id, $_POST['executant']);
 
     if (!empty($_POST['libelle']) &&  !empty($_POST['service']) && !empty($_POST['agence']) && !empty($_POST['superviseur']) && !empty($_POST['start_date']) && !empty($_POST['end_date']) &&
     !empty($_POST['deadline']) && !empty($_POST['goal']))
     {
       header('Location: index.php');
       exit();
     }
     else
     {
       echo 'Tous les champs ne sont pas remplis !';
     }
 
}

Ma vue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<div class="form-group col-6">
          <label for="executant">Acteur(s) : </label>
 
          <?= '<select class="selectpicker form-control" name="executant" multiple title="Sélection...">';
          while($donnees = $executant->fetch())
          {
            ?>
            <option value="<?php echo ($donnees['id']); ?>"><?php echo ($donnees['executant']); ?></option>
            <?php
          }
          $executant->closeCursor();
          ?>
          </select>
        </div>

Mon model avec mes deux fonctions d'insertions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
//insertion de la table project
 
function insertProject($wording, $start_date, $end_date, $deadline, $goal, $supervisor, $id_service, $id_agency, $id_status)
  {
    $db = dbConnect();
 
    $insert = $db->prepare("INSERT INTO project (wording, start_date, end_date, deadline, goal, supervisor, id_service, id_agency, id_status) VALUES (?,?,?,?,?,?,?,?,'2');");
 
    $affectedLines=$insert->execute(array(htmlspecialchars(trim($wording)),
    htmlspecialchars(trim($start_date)),
    htmlspecialchars(trim($end_date)),
    htmlspecialchars(trim($deadline)),
    htmlspecialchars(trim($goal)),
    htmlspecialchars(trim($supervisor)),
    htmlspecialchars(trim($id_service)),
    htmlspecialchars(trim($id_agency))));
 
    return $affectedLines;
 
  }
 
//insertion dans la table project_executant
 
  function insertProjectExecutant($id_project, $id_executant) {
    $db  = dbConnect();
    $pjexec = $db->prepare("INSERT INTO `project_executant`(`id_project`, `id_executant`) VALUES (?, ?);");
 
    $affectedLines=$pjexec->execute(array(htmlspecialchars(trim($id_project)),
    htmlspecialchars(trim($id_executant))));
 
    return $affectedLines;
  }
Et au niveau de ma base de données j'ai 3 tables :
  • project avec un id en clé primaire
  • project_executant avec un id en clé primaire et 2 clé étrangère qui font référence aux tables projet et user.
  • user avec un id en clé primaire


Au niveau de l'insert sans ma liste déroulante tout fonctionne parfaitement.

Mais je suis bloquer depuis qq jours car je ne parviens pas à faire fonctionner la fonction lastInsertId() pour qu'elle puisse lors de l'insertion de mes acteurs(executant) m'insérer autant d'executant qu'il y en a lors de la création d'un projet.
Et je ne sais pas comment faire la boucle de mon second INSERT pour qu'il récupère et insère chaque option sélectionner dans ma liste déroulante.
Je commence un pti peu à craqué donc je viens vers vous..