IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

jQuery Discussion :

Récupérer l'ID d'une ligne d'une TABLE pour update BdD [AJAX]


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut Récupérer l'ID d'une ligne d'une TABLE pour update BdD
    Bonjour à tous

    Je galère sur une opération depuis des jours et je demande votre aide pour trouver une solution.

    J'ai un tableau que j'alimente avec des données de ma bdd. En chargeant les données dans le tableau j'attribut un id à chaque ligne et cet id correspond à l'id de l'enregistrement dans la bdd.

    Après modification de ces données dans le tableau, je souhaiterai updater la bdd, avec les nouvelles données. Pour ce faire, j'aimerai récupérer l'id de chaque ligne et l'envoyer vers php afin de faire where id = cet id.

    Mais là je sais pas comment le faire, tout mes essais ont été infructueux et je passe des heures sans solution.

    Le script :
    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
    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
    .on('submit','#form-inspect',function(e){
        e.preventDefault();
        let visuel={type:"Visuel"},
            propertyName,
            dataAjax;
        for(let i=1;i<=3;i++){
            $.map($('table.Visuel tbody tr td:nth-child('+i+')'),function(elem,index){
                propertyName=$('.table.Visuel thead th').eq(i-1).text().toLowerCase();
                !visuel[propertyName]?visuel[propertyName]=[]:'';
                switch(i){
                    case 3:
                        visuel[propertyName].push($(elem).find('select[name="stat_visuel[]"]').val());
                    break;
                    default:
                        visuel[propertyName].push($(elem).html());
                    break;
                }
            });
        }
     
        dataAjax={Visuel:visuel};  
     
        $.ajax({
            url:"asset/addEx.php",
            method:"post",
            cache:false,
            data:dataAjax,
            dataType:"json"
        })
        .done(function(data){
            $('#form-in').find('.retourAjax').remove();
            if(data.success){
                $('#form-in').append("<div class='alert alert-success fadein retourAjax'>"+data.success+"</div>");
            }
            else if(data.noInsert){
                $('#form-in').append("<div class='alert alert-warning fadein retourAjax'>"+data.noInsert+"</div>");
            }
            else if(data.erreur){
                $('#form-in').append("<div class='alert alert-danger fadein retourAjax'>"+data.erreur+"</div>");
            }
        })
        .fail(function(erreur){
            $('#form-in').find('.retourAjax').remove();
            $('#form-in').append("<div class='alert alert-danger fadein retourAjax'>"+erreur.responseText+"</div>");
        });
    });

    Le code d'update si besoin :
    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
    <?php
    include('db.php');
    include('function.php');
        $visuel=$_POST['Visuel'];
        $stmtVisuel=$connection->prepare("update tbl_ex set type=:type,zo=:zo,po=:po,sta=:sta where id=:id");
        foreach($visuel['sta'] as $index=>$v){
            $stmtVisuel->execute([
                ':type'=>$visuel['type']
                ,':zo'=>$visuel['zo'][$index]
                ,':po'=>$visuel['po'][$index]
                ,':sta'=>$visuel['sta'][$index]
                ,':id'=>//Là j'aimerai récupérer l'id de la ligne en cours
            ]);
        }

    En espérant avoir posté sur le bon forum, je vous remercie d'avance pour le temps que vous prendrez à m'aider.

    Salutations

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Salut,

    Tu peux ajouter une variable id dans l'objet visuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    visuel={type:"Visuel","id":$.map($('table.Visuel tbody tr'),function(tr,index){return $(tr).attr('id');})}
    Et en php, tu le récupères avec
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ':id'=>$visuel['id'][$index]//Là j'aimerai récupérer l'id de la ligne en cours

    Remarque :
    Si les id des <tr> sont des nombres, alors il faut les modifier, parce que je pense que c'est déconseillé.
    Tu peux par exemple les concaténer avec une chaîne de caractère par exemple "Visuel-1", "Visuel-2".. Puis quand tu veux récupérer les id, tu remplaces le "Visuel-" par rien "" avec replace dans $.map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return $(tr).attr("id").replace("Visuel-","");
    afin de récupérer seulement le id.

    Puis n'oublis pas que le success d'ajax attend au moins une ou plusieurs variables data.success, data.noInsert, data.erreur pour traiter le retour au niveau client, alors que ton fichier d'update ne renvoi rien du tout!

    Il va falloir s'assurer que la modification a été effectuée avec rowCount() et faire en sorte de renvoyer seulement deux variables data.success et data.noUpdate :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $retour;
    foreach(...){
       $stmtVisuel->execute(....);
    }
    $rowCount=$stmtVisuel->rowCount();
    if($rowCount>0){
       $retour['success']="Modification effectuée avec succès";
    }
    else{
       $retour['noUpdate']="Aucune modification n'a été effectuée !";
    }
    echo json_encode($retour);

    Comme ça le fichier php renverra soit "success" soit "noUpdate", donc pour traiter le retour dans l'ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            $('#form-in').find('.retourAjax').remove();
            if(data.success){
                $('#form-in').append("<div class='alert alert-success fadein retourAjax'>"+data.success+"</div>");
            }
            else if(data.noUpdate){
                $('#form-in').append("<div class='alert alert-warning fadein retourAjax'>"+data.noUpdate+"</div>");
            }

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut
    Bonjour Toufik83
    Ça marche.

    Merci pour ton aide

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

Discussions similaires

  1. Réponses: 35
    Dernier message: 13/04/2015, 22h05
  2. Réponses: 5
    Dernier message: 17/07/2013, 08h23
  3. [Toutes versions] Récupérer les valeurs d'une table pour une autre table
    Par spacesheep dans le forum Access
    Réponses: 3
    Dernier message: 29/03/2013, 17h06
  4. Réponses: 11
    Dernier message: 22/06/2009, 09h58
  5. Réponses: 62
    Dernier message: 16/04/2009, 10h09

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