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

Langage PHP Discussion :

Besoin d'aide pour UPDATE


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut Besoin d'aide pour UPDATE
    Bonjour.
    J'ai une page admin pour gérer la base de donnée où un INSERT et DELETE qui marche parfaitement. Par contre je ne comprend pas comment on écrit en php pour faire un UPDATE.
    le formulaire rentre bien dans les conditions, mais il n'envoie les modifications dans la base de donnée.
    Ce que je pense c'est qu'il faut mettre le UPDATE dans le post enfin je crois.
    J'avoue ne pas bien comprend comment fonctionne l'UPDATE via php.

    voila la requete sql dans le formulaire
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    if($_SERVER['REQUEST_METHOD'] == 'GET'){
     
        // variable booleene qui indiquera si on affiche ou pas le formulaire
        $affiche_formulaire = true;
     
        $message = "";
     
    }else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     
        $bdd_genre = array('aperitif', 'dessert', 'entree', 'pate', 'poisson', 'salade', 'viande');
     
        // tableau qui contiendra le récap de tout ce que la personne a posté
        $message_recapitulatif = array();
     
        // chaque erreur sera stocké comme élément de ce tableau :
        $message_erreur = array();
        /*------------------------------------------------*/
     
        if (FALSE === isset($_POST["update_prix"])){
     
            $message_erreur[] = "Pas de prix reçu";
     
        }else if (0 == strlen($_POST["update_prix"])) {
     
            $message_erreur[] = "Vous avez rien noter dans prix";
     
        }else if (is_numeric($_POST["update_prix"]) == false) {
     
            $message_erreur[] = "Vous devez noter un nombre dans prix";
     
        }else if (0 >= $_POST["update_prix"]) {
     
            $message_erreur[] = "Prix n'est pas positif";
     
        }
     
        echo print_r($_POST["update_prix"]);
     
                /*======================*/
     
        if (FALSE === isset($_POST["update_descriptif"])){
     
            $message_erreur[] = "Pas de descriptif reçu";
     
        }elseif (3 > strlen($_POST["update_descriptif"])) {
     
            $message_erreur[] = 'Descriptif trop court, mini 3 lettre';
     
        }
                /*======================*/
     
        if (FALSE == isset($_POST["update_genre"])) {
     
                $message_erreur[] = "Le genre n'existe pas";
     
        }elseif (FALSE == in_array($_POST["update_genre"], $bdd_genre)) {
     
                $message_erreur[] = "le genre choisi n'est pas dans la liste";
     
        }
                /*======================*/
     
        else {
            $prix = trim($_POST["update_prix"]);
            $descriptif = trim($_POST["update_descriptif"]);
            $genre = $_POST["update_genre"];
     
            $selects_plats = "";
            $sql_select = "SELECT id_plat FROM plat";
            $resultat_select = mysqli_query($connexion, $sql_select);
            $select_plat = mysqli_fetch_assoc($resultat_select);
            $selects_plats = $select_plat["id_plat"];
     
            $sql_update = "UPDATE plat SET prix = '".$prix."', descriptif = '".$descriptif."', genre = '".$genre."' WHERE id_plat = '".$selects_plats."'";
            $resultat_update = mysqli_query($connexion, $sql_update);
     
            $message_recapitulatif[] .= "Vos donnée enregistré sont: <br/>";
            $message_recapitulatif[] .= "Prix: ".$prix."<br/>";
            $message_recapitulatif[] .= "Descriptif: ".$descriptif."<br/>";
            $message_recapitulatif[] .= "Genre: ".$genre."<br/>";
     
        }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que tu fais le debugage minimum ?
    Comme par exemple que vaut $sql_update ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Oui et ça me répond:

    UPDATE plat SET prix = '30', descriptif = 'test3', genre = 'aperitif' WHERE id_plat = ''1

    et le problème c'est qu'il met id_plat = 1 alors que normalement il devrait prendre l'id_plat du bouton de la page ou s'affiche la base de donnée.

  4. #4
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    voila le code qui affiche la table plat
    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
    while($plat_select = mysqli_fetch_assoc($resultat_select)){
     
        $plats_select .= 
                    '<tr>
                        <td>'.$plat_select["id_plat"].'</td>
                        <td>'.$plat_select["prix"].'</td>
                        <td>'.$plat_select["descriptif"].'</td>
                        <td>'.$plat_select["genre"].'</td>
                        <td>
                            <a class="btn waves-effect waves-light ajoumodsup" href="modif_plat_liste.php">UPDATE</a>
                            <a class="btn waves-effect waves-light ajoumodsup" href="plat_liste.php?id_suppression='.$plat_select["id_plat"].'">DELETE</a>
                        </td>
                    </tr>';
     
    };

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ton code est difficile à lire (peu de commentaires,...)

    Peut-on voir le formulaire de modification ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    et le problème c'est qu'il met id_plat = 1
    Moi je vois id_plat = '' dans ce que tu nous as collé, Le 1 se ballade après.

    il devrait prendre l'id_plat du bouton
    Il n'y pas d'id dans ton bouton UPDATE, compare avec le bouton DELETE juste en dessous.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Désoler je met les commentaire quand j'ai fini le code et que ça marche, sinon je devrais le réécrire tout le temps
    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
    <?php if($affiche_formulaire){  ?>
                                <form action="modif_plat_liste.php" method="post">
                                    <div class="row">
                                        <div class="input-field col l2">
                                            <input id="update" name="update_prix" type="text" class="validate"/>
                                            <label for="update" class="grey-text text-darken-4">UPDATE prix</label>
                                        </div>
                                        <div class="input-field col l4">
                                            <input id="update1" name="update_descriptif" type="text" class="validate"/>
                                            <label for="update1" class="grey-text text-darken-4">UPDATE descriptif</label>
                                        </div>
                                        <div class="input-field col l6">
                                            <select name="update_genre">
                                                <option value="" disabled selected>INSERT genre</option>
                                                <option value="aperitif">apertif</option>
                                                <option value="dessert">dessert</option>
                                                <option value="entree">entree</option>
                                                <option value="pate">pate</option>
                                                <option value="poisson">poisson</option>
                                                <option value="salade">salade</option>
                                                <option value="viande">viande</option>
                                            </select>
                                            <label></label>
                                        </div>
                                    </div>
                                    <div class="row">
                                        <div class="col l12">
                                            <button class="btn waves-effect waves-light" type="submit" name="action"><a class="ajoumodsup" href="modif_plat_liste.php">UPDATE</a></button>
                                        </div>
                                    </div>
                                </form>

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fleedalfire Voir le message
    ...je met les commentaire quand j'ai fini le code...

    Les commentaires servent AUSSI ET SURTOUT à voir/vérifier/comprendre la LOGIQUE du déroulement des actions, EN COURS de travail/développement.

    Et si tu en avais mis, je suis sûr que tu aurais rapidement constaté que tu te plantais...

    Mais bon.

    Le principe : on transmet l'id de la ligne à modifier (de la même façon que pour supprimer).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        <td>
                            <a class="btn waves-effect waves-light ajoumodsup" href="plat_liste_modif_form.php?id_modif='.$plat_select["id_plat"].'">UPDATE</a>
                            <a class="btn waves-effect waves-light ajoumodsup" href="plat_liste.php?id_suppression='.$plat_select["id_plat"].'">DELETE</a>
                        </td>
    Dans plat_liste_modif_form.php :
    • On récupère l'id via l'URL :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $id_modif = intval($_GET['id_modif']);
    • On fait une requête pour récupérer les infos de cette ligne en Bdd...
    • ... qu'on affiche dans le formulaire de modification
    • Pour l'id, on le met dans un <input type="hidden">

    Le formulaire (dans plat_liste_modif_form.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            <form action="plat_liste_modif_traiter.php" method="post">
                    <input type="hidden" name="id" value="<?php echo $id_modif; ?>" />
                    <input type="hidden" name="traiter" value="modifier" />
    ....
     
                    <div class="row">
                            <div class="col l12">
                                    <button class="btn waves-effect waves-light" type="submit">UPDATE</button>
                            </div>
                    </div>
            </form>
    Ici, le traitement se fait alors dans le fichier plat_liste_modif_traiter.php.
    • On récupère l'id via le formulaire : $id_modif = intval($_POST['id_modif']); ...
    • ... ainsi que les autres champs du formulaire
    • gestion d'erreurs...
    • enregistrement en Bdd


    Evidemment, on peut très bien réunir plat_liste_modif_form.php et plat_liste_modif_traiter.php dans un seul fichier plat_liste_modif.php.
    (d'où l'ajout de <input type="hidden" name="traiter" value="modifier" />)
    Dernière modification par Invité ; 24/04/2017 à 11h07.

  9. #9
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup pour ton aide jreaux62 ça m'aide énormément.

    Juste encore une question, je comprend pas pourquoi au début pas de problème il récupère l'id et après il le transforme l'id en 0

    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
    //je créer une variable vide qui contiendra le resultat final
        $select_modification = "";
     
        //je récupère l'id envoyer dans le GET et je le met dans une variable
        $id_modif = intval($_GET["modif_plat"]);
     
        //je créer une requete sql pour selectioné l'id voulus
        $sql_select_modif = "SELECT id_plat FROM plat WHERE id_plat'".$id_modif."'";
     
        //j'execute la requete sql
        $resultat_select_modif = mysqli_query($connexion, $sql_select_modif);
     
        //je récupère le résultat de la requete sql
        $select_modif = mysqli_fetch_assoc($resultat_select_modif);
     
        //je place le resultat de la requete dans la variable précédement créer.
        $select_modification = $select_modif["id_plat"];

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $sql_select_modif = "SELECT id_plat FROM plat WHERE id_plat'".$id_modif."'";
    explique-nous l'intérêt de vouloir récupérer "id_plat" en Bdd, alors que tu l'as déjà !!
    (en plus, il manque un signe "=" !)

    Du coup, TOUT ce code ne sert absolument à RIEN.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        //je récupère l'id envoyer dans le GET et je le met dans une variable
        $id_modif = intval($_GET["modif_plat"]);
    et c'est TOUT !

    N.B. et $id_modif est plus "parlant" que $select_modification !
    NOMME tes variables de façon plus EXPLICITE.
    Ca t'évitera bien des soucis de compréhension.

  11. #11
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    d'accord

  12. #12
    Invité
    Invité(e)
    Par défaut
    on récupère TOUTES les données DE LA LIGNE, nécessaires à la modification :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
        $sql_select_modif = "SELECT * FROM plat WHERE id_plat = '".$id_modif."'";
    ou, en sélectionnant seulement les champs NECESSAIRES :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
        $sql_select_modif = "SELECT nom_plat, prix_plat, blabla_plat,........ FROM plat WHERE id_plat = '".$id_modif."'";
    Ce qui permet de les mettre dans ton formulaire de modification.

  13. #13
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    d'accord

    et le get on le transforme en post via le input.

  14. #14
    Invité
    Invité(e)
    Par défaut
    On le passe en paramètre dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            <form action="plat_liste_modif_traiter.php" method="post">
                    <input type="hidden" name="id" value="<?php echo $id_modif; ?>" />
    ...
    Ici, on récupèrera $_POST['id'].

  15. #15
    Invité
    Invité(e)
    Par défaut
    A ta place, j'éviterai de vouloir TOUT mettre dans un seul fichier (ajouter, modifier, supprimer...).
    Déjà que tu as du mal à comprendre la différence entre GET et POST...
    Ton script en devient INUTILEMENT complexe, et t'empêche de voir la LOGIQUE du premier coup d'oeil.


    N.B. D'autres part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        if (FALSE === isset($_POST["update_prix"])){
    ...
        }else if (is_numeric($_POST["update_prix"]) == false) {
    s'écrit plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        if ( !isset($_POST["update_prix"]) ){
    ...
        }else if ( !is_numeric($_POST["update_prix"]) ) {
    Conseil donc : SIMPLIFIE-TOI LA VIE en séparant les traitements.

    Quand tu auras bien compris et maitrisé le fonctionnement, alors tu pourras regrouper.


    Voilà un exemple de traitement sur une seule page :


    L'astuce : un <input type="hidden" name="traiter" /> qui vaut 'Ajouter', 'Modifier' ou 'Supprimer', selon le besoin.

    Mais pour en arriver là, il faut de la RIGUEUR et de la LOGIQUE.

  16. #16
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    par contre encore une question pourquoi est-ce que tu fait un echo de $id_modif

    mais j'ai séparer, j'ai une page pour ajouter et supprimer et une autre pour modifier.

  17. #17
    Invité
    Invité(e)
    Par défaut
    J'ai l'impression que tu ne comprends pas le PRINCIPE même de la modification.

    Il faut bien que le script de traitement SACHE QUELLE LIGNE MODIFIER, non ?

    => Donc, transmettre, via le formulaire, l'ID de la ligne à modifier.

    C'est clair, ou toujours pas ?

  18. #18
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    merci j'ai compris

  19. #19
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    maintenant il me donne tout bien, mais pourquoi il ne l'envoie pas et donc ne modifie pas la bd (base de donnée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id_modif = intval($_GET["modif_plat"]);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $id_modifier = intval($_POST["id_modif"]);
            $prix = trim($_POST["update_prix"]);
            $descriptif = trim($_POST["update_descriptif"]);
            $genre = $_POST["update_genre"];
     
            $sql_update = "UPDATE plat SET prix = '".$prix."', descriptif = '".$descriptif."', genre = '".$genre."' WHERE id_plat = '".$id_modifier."'";
            $resultat_update = mysqli_query($connexion, $sql_update);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <button class="btn waves-effect waves-light" type="submit" name="action"><a class="ajoumodsup" href="plat_liste.php">UPDATE</a></button>

  20. #20
    Invité
    Invité(e)
    Par défaut
    Montre les codes complets, avec le NOM des fichiers.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Besoin d'aide pour requête update
    Par RedDrMaboul dans le forum Langage SQL
    Réponses: 7
    Dernier message: 08/04/2013, 16h17
  2. SQL Server + C#, besoin d'aide pour update "non simple" avec bindingsource
    Par robertopowa dans le forum Accès aux données
    Réponses: 1
    Dernier message: 30/04/2010, 10h00
  3. Besoin d'aide pour un UPDATE un peu spécial
    Par Julien__ dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/03/2009, 11h06
  4. Besoin d'aide pour requête update imbriqué
    Par nabilo_22 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/03/2009, 23h05
  5. Update & Delete : besoin d'aide pour finir
    Par Romuald632 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/02/2009, 16h07

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