Bonjour, bonsoir !
Dans le cadre de mon stage, je développe actuellement une appli web (qui n'est pas mon point fort) et je suis face à un problème: sur une page de test où j'affiche les différent poste de l'entreprise, j'ai un bouton 'modifier'. Celui m'ouvre un "modal" dans lequel j'ai une liste déroulante (remplie par une requête SQL) qui me permet de choisir un poste existant. Ensuite, les données relatives à ce post doivent s'afficher dans un formulaire pour que l'utilisateur puisse apporter les modifications. Or, je n'arrive pas à remplir ce formulaire, à la suite de quoi la modification n'est pas prise en compte sur la BDD. J'espère que mes attentes sont bien comprises !
Voici le "modal" pour la modification:
Le code correspondant:
J'espérais utiliser un array() pour récupérer toutes les données de la requête (celle qui rempli la liste) afin de m'en resservir pour le remplissage des champs.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 <!-- Bouton pour ouvrir le popup de création et modification--> <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal1"> Nouveau </button> <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal"> Modifier </button> <!-- popup de modification --> <div id="myModal" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- contenu du popup--> <div class="modal-content"> <div class="modal-header"> <!-- En-tête --> <button type="button" class="close" data-dismiss="modal">×</button> <p> <!-- Liste déroulante --> <form method="POST" action="Scripts/posteSalarie_update.php"> <select name="selec[]" size="1" style="width: 230px" onchange="Change(this.value)"> <option value="0"> - - - - - - - - </option> <?php $req = "SELECT * FROM posteSalarie ORDER BY nomPoste"; try{ $stmt = $pdo->prepare($req); $stmt->execute(); $data = array(); //tableau pour stocker tous les résultats $data = [0]; //Le premier index de array() est 0, ainsi le 'numPoste' concordera à l'index array while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $data[] = $row; echo "<option value=".$row["numPoste"].">".$row["nomPoste"]."</option>"; } } catch(Exception $e){ print "Erreur ! ".$e->getMessage(). "<br/>"; } ?> </select> </div> <div class="modal-body"> <!--corps --> Numéro du poste: <input type="text" name="numPoste"> <?php echo $row["numPoste"]; ?> <br/> Nom du poste: <input type="text" name="nomPoste"> <?php echo $row["nomPoste"]; ?> <br/> <input type="submit" name="modifier" value="Modifier"> </form> </p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div> </div> </div> </div>
Le script appelé par le formulaire:
Je précise que ce script fonctionne, puisqu'il me renvoie bien sur "test.php" par la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php include "../include/connexion.php"; include "../Classe/posteSalarie.php"; if (isset($_POST["nomPoste"])) { $nom = $_POST["nomPoste"]; $num = $_POST["numPoste"]; $monposte = new posteSalarie($nom); $monposte->update($num); header("Location: ../test.php"); } ?>
Ainsi que le bout de la classe posteSalarie (sa fonction Update):
Beaucoup de sujet sur internet parle de l'utilisation de javascript + ajax mais je suis persuadé qu'il existe une solution qui n'utilisa pas ces langages d'autant plus que je ne possède aucune connaissance en ajax et presque aucune en javascript :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public function update(){ include "../include/connexion.php"; $req = "UPDATE posteSalarie SET nomPoste=:nomPoste WHERE numPoste=:numPoste"; $stmt = $pdo->prepare($req); if($stmt->execute(array(':numPoste'=>$this->_numPoste, ':nomPoste'=>$this->_nomPoste)) == TRUE){ echo "Modification réussie!"; } else { echo "Modification échouée..."; } return true; }
Je le rappelle, mon objectif est le suivant:
-Cliquer sur le bouton "modifier" afin d'ouvrir un "modal"
-choisir une option de la liste déroulante
-à partir de cette option, remplir le formulaire avec les données correspondant
-envoyer ces données via la méthode POST à script puis à fonction Update de la classe posteSalarie
-cette dernière mettra les données à jour dans ma base de données
Merci d'avance pour toute aide, n'hésitez pas à poser vos questions si je n'est pas suffisamment éclaircis un point!
Cordialement,
Skunka.
Partager