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

PHP & Base de données Discussion :

Formulaire de modification en PHP


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 32
    Par défaut Formulaire de modification en PHP
    Bonjour à tous

    Je viens de m'inscrire sur ce forum car j'ai besoin d'aide. Je développe un site web en PHP pour une entreprise. J'ai opté pour l'architecture en MVC. Sur ce site on présente différents produits décrits par plusieurs données comme l'ID, désignation, prix, quantité, type du produit etc.
    En ce moment je m'occupe de la fonction modifier pour l'administrateur. Celui peut modifier une solution (je vous montre sous la capture ci dessous) lorsqu'il clique sur le bouton Modifier un formulaire de modification s'affiche. Normalement toutes les données de la ligne du tableau (qui correspondent à cette solution) doivent déjà être affichées mais je n'arrive pas encore à le faire.
    Seul l'ID (clé primaire) ne peut pas être modifié.
    Quand je change la désignation, le prix et la quantité par ex et que je clique sur Modifier rien ne se passe, aucune erreur ne s'affiche...

    Merci de votre aide, j'en ai besoin le plus rapidement possible. Je travaille sur Uwamp.

    Nom : capture2.PNG
Affichages : 205
Taille : 16,6 KoNom : Capture1.PNG
Affichages : 210
Taille : 47,5 Ko

  2. #2
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    C est quoi ta requête pour modifier la Bdd ?

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 32
    Par défaut
    Bonjour

    Voici ma requête:

    la table dans la base bddlentilles est solution_lentille.

    Tout d'abord je fais une requête avec Select pour vérifier que l'ID existe bien dans la table et ensuite je fais la requête de modification. Comme je l'ai dit ici dans le formulaire seules la désignation , la quantité et le prix peuvent être changées.

    Voici ma fonction modifier solution:

    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
    function modifiersolution( $id,  $uneDes, $quant, $unPrix, &$tabErr)
    {
     
      // Ouvrir une connexion au serveur mysql en s'identifiant
      $connexion = connecterServeurBD();
     
        // Verifier que la reference saisie n'existe pas deja
        $requete="select * from `solution_lentille`";
        $requete=$requete." where id = '".$id."';";
        echo $requete;
     
     
        $jeuResultat=$connexion->query($requete); // on va chercher tous les membres de la table qu'on trie par ordre croissant
        echo $requete;
     
     
        //$jeuResultat->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le resultat soit recuperable sous forme d'objet     
     
        $ligne = $jeuResultat->fetch();
        // Creer la requete de modification 
     
        $requete= "UPDATE `solution_lentille` SET 
      'des'= '$uneDes',
      'quantite'= '$quant',
        `prix_produit` = '$unPrix'
     
         WHERE  id = '".$id."';";
          echo $requete;   
            // Lancer la requete d'ajout 
            $ok=$connexion->query($requete); // on va chercher tous les membres de la table qu'on trie par ordre croissant
     
     
            // Si la requete a reussi
            if ($ok)
            {
              $message = "La solution a ete correctement modifiee";
              ajouterErreur($tabErr, $message);
            }
            else
            {
              $message = "Attention, la modification de la solution a echoue !!!";
              ajouterErreur($tabErr, $message);
            } 
        }

  4. #4
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mars 2020
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2020
    Messages : 182
    Par défaut
    Dans ta requête ne mettre des guillemets simples que pour les string, pas pour les Integer, double, les nombres quoi
    je ferais ça moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $requete= "UPDATE solution_lentille SET des= ".$uneDes.", quantite= ".$quant.", prix_produit = ".$unPrix." WHERE  id = ".$id.";";
    si des n est pas string sinon des= '".$uneDes."'

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Bonjour,

    1/ Puisque l'id n'est pas définissable il n'a rien à faire dans ton formulaire, mets le plutôt dans un champ de type hidden pour le récupérer depuis ton formulaire.

    2/ Dans ta requête, pas la peine de vérifier si l'id existe dans ta table avant de faire ton update, fais directement ton update et utilise rowcount pour trouver le nombre de lignes affectées.

    Par ailleurs la syntaxe query n'est pas faite pour des updates, et utilises plutôt toujours des requêtes préparées avec pdo. D'une part pour des raisons de sécurité et d'autre part pour échapper tes variables. La syntaxe avec les marqueurs est souvent la plus pratique car elle permet de passer un tableau simple en paramètre, il suffit juste de veiller à ce que l'ordre les éléments du tableau respecte l'ordre des marqueurs (?). Sinon si c'est trop compliqué on utilise des paramètres nommés.

    Dans ton cas en reprenant ton code cela donnerait quelque chose comme ça :

    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
     
    function modifiersolution( $id,  $uneDes, $quant, $unPrix)
    {
    try
    {
    	$connexion = connecterServeurBD();
     
            $requete= "UPDATE solution_lentille SET des= ?, quantite= ?, prix_produit = ? WHERE  id = ?";
     
            $stmt = $connexion->prepare($requete);
     
            $stmt->execute([$uneDes, $quant, $unPrix, $id]);
     
            $count = $stmt->rowCount();
    }
    catch(PDOException $e)
    {
    	exit($e->getMessage());
    }
     
    return $count ? "Mise à jour ok" : "Aucune mise à jour n'a été faite"; 
    }

    Bref tu as du travail pour te mettre à jour avec pdo. Je te conseille vivement de te perfectionner et de faire des exercices dans des exemples isolés avant de les intégrer dans ton code final sinon tu risques de galérer.

  6. #6
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2021
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 32
    Par défaut
    Citation Envoyé par MoiStéphane Voir le message
    Merci, je vais tester et voir ce que cela donne.

    Citation Envoyé par ABCIWEB Voir le message
    Bonjour, pour le point 2 il faut que je voie avec plus de profondeur ce que vous m'avez dit. Si j'ai encore du mal je reviens vers vous. Merci pour votre réponse.

    J'ai remplacé ce code dans la fonction modifiersolution mais rien ne se passe, même résultat.

    A part ça quelle est la méthode la plus facile qui permet de préremplir les champs en fonction de la ligne (solution) sélectionnée ? Et faire de même pour les autres lignes du tableau?

    Merci de votre aide.

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

Discussions similaires

  1. [ODBC] Gestion des espaces et champs vides dans un formulaire de modification PhP Odbc
    Par kernel57 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2014, 16h49
  2. Réponses: 14
    Dernier message: 19/10/2006, 14h23
  3. Réponses: 20
    Dernier message: 02/06/2006, 12h13
  4. Formulaire et modifications
    Par climz dans le forum IHM
    Réponses: 7
    Dernier message: 24/05/2006, 08h19
  5. problème sur un formulaire de modification
    Par puppusse79 dans le forum Access
    Réponses: 13
    Dernier message: 14/04/2006, 15h48

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