Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 147
    Points : 92
    Points
    92
    Par défaut Invalid parameter number: number of bound variables does not match number of tokens
    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 erreur
    SQL: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
    J'ai beau controler les paramètres de ma requête SQL, je ne trouve pas.

    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:
    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();*/
                                    }
                                });
                            }
                        });
                    });
    Mon traitement en PHP, côté serveur:
    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:
    Nom : db.JPG
Affichages : 9
Taille : 65,8 Ko

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2017
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 147
    Points : 92
    Points
    92
    Par défaut
    Bon ben mon delete ne fonctionne pas non plus, à mon avis quelque chose m’échappe...
    Et aucuns messages d'erreur pour le delete, juste enmpty String.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/05/2016, 10h11
  2. [AJAX] XMLHttpRequest fonctionne pas dans ie
    Par tchoukapi dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 27/09/2006, 12h45
  3. [AJAX] Script ajax ne fonctionne pas sur IE :( !
    Par Funattitude dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/08/2006, 19h02
  4. [MySQL] Requête update qui ne fonctionne pas
    Par Sylvain245 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/12/2005, 17h40
  5. [MySQL] UPDATE qui ne fonctionne pas
    Par philippef dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/09/2005, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo