Bonjour, je fais une todo list avec comme technologie MySQL, PHP, jQuery et ajax.
Pour le moment, mon insert de tâche, readall tâche et read tâche by id fonctionne. Mon formulaire de mise à jour s'affiche bien avec les bonnes données récupéré dans la DB.
Lorsque je clic su l'icône pour faire un update, j'ai une erreurJ'ai beau controler les paramètres de ma requête SQL, je ne trouve pas.SQL: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Ma fonction update:
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 //Fonction qui va mettre à jour une tâche dans la DB sur base de son id. public function updateTask($id, $title, $description, $importance, $due_date, $start_date, $parent, $status, $category, $prerequisite, $end_date, $estimated_time, $display_order) { $db = new Database; $sql = "UPDATE tasks SET 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, now(), end_date = :end_date, estimated_time = :estimated_time, " . "display_order = :display_order WHERE id_task = :id_task"; try { $stmt = $db->db_connexion()->prepare($sql); $stmt->execute(array(':title' => $title, ':description' => $description, ':importance' => $importance, ':due_date' => $due_date, ':start_date' => $start_date, ':parent' => $parent, ':status' => $status, ':category' => $category, ':prerequisite' => $prerequisite, ':end_date' => $end_date, ':estimated_date' => $estimated_time, ':display_order' => $display_order, ':id_task' => $id)); //return true; $count = $stmt->rowCount;//remplace un return true, retourne le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE exécutée par l'objet PDOStatement correspondant. echo $count . 'modif effectuée'; $stmt = null; } catch (Exception $e) { //s'il y a un problème PHP ou SQL, tout s'affichera ici print "Erreur ! " . $e->getMessage() . "<br/>"; } }
mes requêtes ajax:
Mon traitement en PHP, côté serveur:
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 //Update task $("body").on("click", ".editBtn", function (e) { e.preventDefault(); edit_id = $(this).attr('id_task'); $.ajax({ url: "action.php", type: "POST", data: {edit_id:edit_id}, success: function (response) { data = JSON.parse(response); console.log(data); //je remplis les champs avec ce qui est récupéré dans la DB. $("#id").val(data.id_task); $("#title").val(data.title); $("#description").val(data.description); $("#importance").val(data.importance); $("#due_date").val(data.due_date); $("#start_date").val(data.start_date); $("#parent").val(data.parent); $("#status").val(data.status); $("#category").val(data.category); $("#prerequisite").val(data.prerequisite); $("#end_date").val(data.end_date); $("#estimated_time").val(data.estimated_time); $("#display_order").val(data.display_order); } }); //requête ajax pour l'update(ce qui est envoyé vers le server) $("#update").click(function (e) { if ($("#edit-form-data")[0].checkValidity()) { e.preventDefault(); $.ajax({ url: "action.php", type: "POST", data: $("#edit-form-data").serialize() + "&action=update", success: function (response) { console.log(response); /*Swal.fire({ title: 'Tâche mise à jour!', icon: 'success' }); $("#UpdateTaskModal").modal('hide'); $("#edit-form-data")[0].reset(); showAllTasks();*/ } }); } }); });
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 //Traitement quand clic sur editBtn, je récupère les données à afficher dans le formulaire if(isset($_POST['edit_id'])){ $id = $_POST['edit_id']; $row = $crud->getTaskById($id); echo json_encode($row); } //traitement formulaire update quand clic sur le bouton update if(isset($_POST['action']) && $_POST['action'] == "update"){ $id = $_POST['id_task']; echo "l'id est: " . $id; $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']; $end_date = $_POST['end_date']; $estimated_time = $_POST['estimated_time']; $display_order = $_POST['display_order']; echo $crud->updateTask($id, $title, $description, $importance, $due_date, $start_date, $parent, $status, $category, $prerequisite, $end_date, $estimated_time, $display_order); }
ma DB:
Partager