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 :

Savoir au moment de l'enregistrement si les données d'un formulaire ont été modifiées


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Savoir au moment de l'enregistrement si les données d'un formulaire ont été modifiées
    Bonjour à tous,
    Lors de l'enregistrement, pour vérifier si les données ont été modifiées, je les compare avec celles déjà présentes en base de données. N'y aurait-il pas un moyen plus simple? Comment fait-on habituellement?

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    salut
    tu rajoutes un champs MAJ dans ta table, pour chaque membre, et tu fais modifier avec un timestamps par exemple

    en meme temps que le membre modifie son champs, la derniere date en timestamps se met a jour grace a un update que tu fais dans le script

    du coup tu sauras la derniere date de maj et tu seras si c'est modifier,

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Ce n'est pas ce que je veux. Mon formulaire est prérempli avec les données de la base dont la date de mise à jour. Justement, je ne veux pas réenregistrer mon formulaire si aucune donnée n'a été modifiée pour ne pas modifier cette date de mise à jour.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    La date de màj ne doit pas être dans le formulaire, car le formulaire peut être soumis xx minutes/heures après son affichage, ce qui fausserait tout

    Sur ta table MySQL, tu peux utiliser la clause ON UPDATE CURRENT_TIMESTAMP pour automatiquement màj le timestamp lors de la modif d'un enregistrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE my_table (
        ...
        update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    );
    => https://dev.mysql.com/doc/refman/8.0...alization.html

    Au niveau du script, fais juste un UPDATE avec les données du formulaire,
    ensuite avec PDO tu peux faire un $statement->rowCount() ( https://www.php.net/manual/fr/pdostatement.rowcount.php ) pour récupérer le nombre de lignes modifiées (0 si pas de modifs),
    en cas de modification d'un enregistrement la date de màj sera automatiquement modifiée par MySQL grâce à la clause ON UPDATE présentée plus haut.

  5. #5
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par moimp Voir le message
    Ce n'est pas ce que je veux. Mon formulaire est prérempli avec les données de la base dont la date de mise à jour. Justement, je ne veux pas réenregistrer mon formulaire si aucune donnée n'a été modifiée pour ne pas modifier cette date de mise à jour.
    Je ne sais pas si ça répond à ton problème précis, mais j'avais fait ce commentaire sur mon blog pour parler du cas où tu insères un tuple et que tu veux savoir si les données modifiables par l'utilisateur l'ont été :

    https://www.developpez.net/forums/bl.../#comment12074
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    @Dendrite: Bonjour et merci Dendrite, tu es sans doute, une de ceux qui étudie le mieux les questions avant d'y répondre. Je t'en remercie.
    Pourtant, ce n'est pas encore ça. Je vais tenter de mieux préciser ma question.

    Je ne veux pas réenregistrer mes données si l'utilisateur n'a modifié aucun des champs de saisie, justement pour garder la vraie date des dernières modifications effectives, donc la date la plus anciennes à laquelle une modification réelle a été apportée. A la réflexion, je pense que la seule solution sera de recourir à JavaScript.

  7. #7
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    moimp, la solution que je t'ai fournie répond à ton besoin.

  8. #8
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par moimp Voir le message
    Je ne veux pas réenregistrer mes données si l'utilisateur n'a modifié aucun des champs de saisie, justement pour garder la vraie date des dernières modifications effectives, donc la date la plus anciennes à laquelle une modification réelle a été apportée. A la réflexion, je pense que la seule solution sera de recourir à JavaScript.
    Non, non, la méthode rowcount retourne 1 si insertion, 2 si vrai update, et 0 si rien n'a été modifié car les valeurs n'ont pas changé.
    Ca couvre tous les cas. Donc tu ne changes la colonne maj que si rowcount est différent de zéro. Sinon tu insères le datetime courant.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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

Discussions similaires

  1. [MySQL] Enregistrer proprement les données d'un formulaire ?
    Par tryan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/03/2013, 22h51
  2. Réponses: 6
    Dernier message: 17/07/2008, 14h02
  3. [MySQL] Enregistrer les données d'un formulaire sur un autre serveur
    Par nixax dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 04/11/2006, 21h36
  4. Réponses: 6
    Dernier message: 06/06/2006, 11h46
  5. enregistrer les données d'un FORMULAIRE sur une TABLE
    Par godzinho dans le forum Access
    Réponses: 15
    Dernier message: 11/03/2006, 18h03

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