Bonjour,
je fais une todo list, avec comme technologie, ajax, jQuery, PHP.
J'ai un formulaire pour rentrer une tâche:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 <!-- Ajout nouvel tâche fenêtre Modal --> <div class="modal fade" id="addTaskModal"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <!-- Modal Header --> <div class="modal-header"> <h4 class="modal-title">Ajout nouvelle tâche</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <!-- Modal body --> <div class="modal-body px-4"> <form action="" method="POST" id="form-data"> <div class="form-group"> <input type="text" name="title" placeholder="Titre" required> <label for="title">Titre de votre tâche</label> </div> <div class="form-group"> <textarea rows="4" cols="45" name="description" placeholder="Description">Description de votre tâche</textarea> </div> <div class="form-group"> <input type="color" name="importance" > <label for="importance">Choisissez une couleur</label> </div> <div class="form-group"> <input type="date" name="due_date" placeholder="Date d'échéance"> <label for="due_date">Date d'échéance</label> </div> <div class="form-group"> <input type="date" name="start_date" placeholder="Débute le" required> <label for="start_date">Date de départ</label> </div> <div class="form-group"> <input type="text" name="parent" placeholder="Tâche parent"> <label for="parent">Tâche parent</label> </div> <div class="form-group"> <span> <select name="status" class="form-control"> <option value="a_faire">à faire</option> <option value="en_cours">en cours</option> <option value="achevee">achevée</option> <option value="un_jour_peut_etre">un jour peut-être</option> </select> </span> </div> <div class="form-group"> <input type="text" name="category" placeholder="Catégorie"> <label for="category">Catégorie</label> </div> <div class="form-group"> <input type="text" name="prerequisite" placeholder="Prérequis"> <label for="prerequisite">Prérequis</label> </div> <div class="form-group"> <input type="date" name="created_at" placeholder="Créé le" required> <label for="created_at">Date de création</label> </div> <div class="form-group"> <input type="date" name="updated_at" placeholder="Mis à jour le"> <label for="updated_at">Date de mise à jour</label> </div> <div class="form-group"> <input type="date" name="end_date" placeholder="Date de fin"> <label for="end_date">Date de fin</label> </div> <div class="form-group"> <input type="time" name="estimated_time" placeholder="Temps estimé"> <label for="estimated_time">temps estimé</label> </div> <div class="form-group"> <input type="number" name="display_order" placeholder="position d'affichage"> <label for="display_order">ordre d'affichage</label> </div> <div class="form-group"> <input type="submit" name="insert" id="insert" value="Ajout tâche" class="btn btn-primary btn-block"> </div> </form> </div> </div> </div> </div>
Ma requête ajax:
j'ai bien la fenêtre success qui s'ouvre, mais ça me renvoi empty String et aucune nouvelle entrée dans ma DB.
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 //requête ajax pour l'insert d'une tâche lors d'un clic sur le boutton "Ajouter une tâche" $("#insert").click(function (e) { if ($("#form-data")[0].checkValidity()) { e.preventDefault(); $.ajax({ url: "controller.php", type: "POST", data: $("#form-data").serialize() + "& action=insert", success: function (data) { console.log(data); alert('success'); }, error: function () { alert('error'); } }); } });
Mon controller:
Code PHP : 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 if(isset($_POST['action']) && $_POST['action'] == "insert"){ //$id = uniqid($prefix = "id", $more_entropy = true);//génération UUID comme id d'une tâche. $title = $_POST['title']; $description = $_POST['description']; $importance = $_POST['importance']; $due_date = $_POST['due_date']; $start_date = $_POST['start_date']; $parent = $_POST['parent']; $status = $_POST['status']; $category = $_POST['category']; $prerequisite = $_POST['prerequisite']; $created_at = $_POST['created_at']; $updated_at = $_POST['updated_at']; $end_date = $_POST['end_date']; $estimated_time = $_POST['estimated_time']; $display_order = $_POST['display_order']; $db->insert($title, $description, $importance, $due_date, $start_date, $parent, $status, $category, $prerequisite, $created_at, $updated_at, $end_date, $estimated_time, $display_order); }
et enfin mon model avec la fonction insert:
Code PHP : 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 private $db = "mysql:host=localhost;dbname=todo_list"; private $user = "root"; private $psw = "password"; public $conn; //Constructeur public function __construct() { try { $this->conn = new PDO($this->db, $this->user, $this->psw); //echo 'Connexion réussie!'; } catch (PDOException $e) { echo $e->getMessage(); } } //Fonction qui insert une tâche dans la DB public function insert($title, $description, $importance, $due_date, $start_date, $parent, $status, $category, $prerequisite, $created_at, $updated_at, $end_date, $estimated_time, $display_order) { $sql = "INSERT INTO tasks (title, description, importance, due_date, start_date, parent, status, category, prerequisite, created_at, updated_at, end_date, estimated_time, display_order) VALUES (:title, :description, :importance, :due_date, :start_date, :parent, :status, :category, :prerequisite, :created_at, :updated_at, :end_date, :estimated_time, :display_order)"; $stmt = $this->conn->prepare($sql); $stmt->execute(['title' => $title, 'description' => $description, 'importance' => $importance, 'due_date' => $due_date, 'start_date' => $start_date, 'parent' => $parent, 'status' => $status, 'category' => $category, 'prerequisite' => $prerequisite, 'created_at' => $created_at, 'updated_at' => $updated_at, 'end_date' => $end_date, 'estimated_time' => $estimated_time, 'display_order' => $display_order]); return true; }
J'ai essayé avec et sans id, au début, je générais un UUID en PHP, j'ai retirer ça et essayé avec un id autoIncrement, mais j'ai toujours le même résultat.








Répondre avec citation






Partager