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.
Partager