Recupération id dans menu select pour modification

Nesil Messages postés 36 Date d'inscription mardi 21 juin 2022 Statut Membre Dernière intervention 19 juillet 2023 - 21 juin 2023 à 14:53
 Pitet - 21 juin 2023 à 15:31

Bonjour,

Je viens de recuperer une application developper par quelqu'un avant moi et je ne comprend pas tout le code. J'aimerais faire fonction un bouton qui viens modifier la valeur d'un label enregistré et que l'on recupère dans un menu select.

Le problème est que une fois que l'on recupere cette donnée, qu'on la change et qu'on appuie sur modifier, aucune modification en se fait:

Voici le code html du bouton (retenez bien ce qu'il y a marqué sur l'id):

<button class="btn col-xs-12 parambtn btnStandard" id=""
                        onclick="confirmModificationD('produit', 'prodSelect' ,'produit')">Modifier</button>

Voici le code js qui est censé faire la modification:

function confirmModificationD(idInput, idSelect ,nomTable){   
    var texteNom = document.getElementById(idInput).value;  
    var texteId = document.getElementById(idSelect).value;
    
    if(texteNom != ""){
        $.ajax({
            cache: false,
            url: "../data/updateOne",
            type: "POST",
            data: ({
                table: nomTable,
                id: texteId,
                nom: texteNom
            }),
            async: false,
            success:function(response, status){
                console.log(response);
                if(response.includes("Erreur:GDMx01 Modification impossible")){
                    $("#erreur").show();
                    setTimeout(function(){
                        $("#erreur").hide();
                    },4000);
                }
                else if(response.includes("déjà existant")) {
                    $("#erreurExistant div").html(`${nomTable} déjà existant`);
                    $("#erreurExistant").show();
                    setTimeout(function(){
                        $("#erreurExistant").hide();
                    }, 4000);
                }
                else{ 
                    document.getElementById(idInput).value ="";
                    loadD(nomTable,  idSelect);
                    $("#modifMessage").show();
                    setTimeout(function(){
                        $("#modifMessage").hide();
                    },4000);    
                }
            },
            error: function(response, status){
                console.log(response);
                console.log(status);
            }
        });     
    } 
    else{
        ////console.log("Veillez entrez une valeur pour modifier");
    }

}

et voici le handler avec la gestion de l'update en bdd:

function updateOne(){
        if(isset($_POST["table"])){
            $table = $_POST['table'];
            switch($table){
                case 'utilisateur':  /* maj d'un utilisateur */
                
                case 'emplacement': /* maj d'un emplacement */             
                
                case 'produit': /* maj d'un produit */
                    if(isset($_POST["id"]) && isset($_POST["nom"]) ){
                        $id = $_POST["id"];
                        $nom = $_POST["nom"];
                        $dbcontroller = new DBController();

                        $stmt = mysqli_prepare($dbcontroller->getConn(), "UPDATE produit SET nom = ? WHERE id = ?");
                        mysqli_stmt_bind_param($stmt, 'ss', $nom, $id);

                        $data = $dbcontroller->executeQueryMSQL($stmt);
                        $dbcontroller->closeQuerySQL();

                        if($data){ /* modification réussie */
                            return "Modification du produit réussie !";
                        }else{
                            return "Erreur:GDMx01 Modification impossible pour le produit";
                        }
                    }
                    else{
                        return "Erreur:GDMx08 Paramètres manquants pour le produit";
                    }
                    break;
                
                case 'vehicule': /* maj d'un véhicule */
                case 'reference': /* maj d'une référence */
                case 'refSeuil': /* maj du seuil de sécurité d'une référence */
                case 'modifBalancelle': /* maj d'une balancelles à partir de l'inventaire */
                case 'balancelle': /* maj d'une balancelle lors d'un mouvement */              

            default:
                return "Erreur:GDMx08 Table non reconnue";
                
            }
        } else{
            return "Erreur:GDMx08 Manque arguments";
        }
    }

La personne a decidé de faire sa fonction avec un switch pour qu"elle reproduise la meme action ailleurs dans le code.

Je pense que si cela ne marche pas, c'est parce que on ne recupère pas d'id:

Que dois-je modifier ou ajouter pour recuperer l'id du produit selectionné?

merci du temps accordé
Windows / Chrome 114.0.0.0

1 réponse

Bonjour,

Quel est le code html du formulaire ?

La balise select possède bien un attribut id="prodSelect" ?

Penses à vérifier si tu as des erreurs dans la console du navigateur.

0