Bonjour!
Dans le cadre de mon stage d'études, je réalise une application web destiné à la gestion des plannings de l'entreprise. Dans le contexte de modifications des ressources, j'ai un bouton m'ouvrant une modale contenant une liste déroulante (remplie via requête sql) et différent champs, le tout dans un formulaire. L'utilisateur final pourra choisir dans ce cas un poste de salarié et les informations relatives à ce poste devront s'afficher dans le formulaire permettant ainsi la modification. En cliquant ensuite sur un bouton "Modifier", la modification sera prise en compte dans la base de données, le tout de manière asynchrone afin que l'utilisateur n'ai pas à recharger la page de manière répété.
Modale:
Code HTML : 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 <!-- 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" readonly="readonly"> <br/> Nom du poste: <input type="text" name="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 "onChange":
Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function Change(value){ //Appelle d'un script PHP permettant la récupération des données //On récupère var num = value; //La variable 'num' récupère l valeur de la liste déroulante $.ajax({ type: "POST", //méthode utilisé url: "posteSalarie_retrieve.php", //fichier à appeler data: num, //données envoyées dataType: text, //Format des données success: function(num, nom){ document.getElementsById('numPoste').value = num; //affiche le num du poste dans le formulaire document.getElementsById('nomPoste').value = nom; //affiche le nom du poste } }) }
Script appelé par la fonction précédente:
Code PHP : 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['num'])) { $num = $_POST['num']; include "../Classe/posteSalarie.php"; $unPoste->retrieve($num); return $unPoste->getNumPoste(), $unPoste->getNomPoste(); } ?>
Vous vous en doutez, le code actuel ne fonctionne pas. La valeur de la liste déroulante est bien transmise à la fonction javascript mais l'affichage ne se réalise pas. C'est la première fois que je manipule du AJAX et bien que je me soit renseigné, il se peut donc que ce soit un simple problème de syntaxe ou de la manière dont je l'utilise mais si quelqu'un peut m'indiquer la route à suivre, j'en serais enchanté ! N'hésitez pas à demander d'autre infos si nécessaire.
Cordialement,
Skunka.
Partager