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 :

Dates de création et de mise à jour d'une ligne [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut Dates de création et de mise à jour d'une ligne
    Bonjour!!!

    Alors voilà je cherche depuis hier soir et je n'ai toujours pas trouvé de réponse adéquate à mon problème, alors je me permets de poster ici!

    J'ai une table avec plusieurs fiches sur des clients. Je vais faire simple pour être clair:

    - Nom
    - Infos
    - Date de création de la fiche
    - Date de modification de la fiche

    Pour la date de création j'ai mis un TIMESTAMP tout simple qui se met tout seul dans la base lors de la création de la ligne (la fiche quoi). Ca marche pas de problème.

    Par contre, je n'arrive pas à configurer correctement le champ de Date de modification de sorte que quand un UPDATE est fait sur la fiche, ce champ indique la date de cette modification.

    Merci de votre aide!!!

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    bah a vrai dire c'est le même procédé que pour la date de création ...

    Tu peux nous montrer ta requête (ou les 2 ) stp ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    J'utilise ce genre de chose sur un systeme de vote...

    Voici la structure de mon champ 'update' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    `updated` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
    Dans défaut tu mets "CURENT_TIMESTAMP" et dans attribut tu choisis "ON UPDATE CURRENT_TIMESTAMP"

    Cela devrait résoudre ton probleme...

    @+
    cadou

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut
    Non je ne veux pas que le champ Date de création soit mis à jour. Il doit rester en l'état pour savoir quand la fiche a été créée.

    Seul le champ date de modification doit être mis à jour, et ce lors d'une modification uniquement.

    CREATE TABLE IF NOT EXISTS `clients` (
    `nom` varchar(50) character set latin1 collate latin1_general_ci NOT NULL,
    `datecreation` timestamp NOT NULL default CURRENT_TIMESTAMP,
    `infos` varchar(255) character set latin1 collate latin1_general_ci NOT NULL,
    `datemodification` timestamp NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (`nom`)
    )
    Donc voilà...

    Lors de la création de la fiche:

    $requet="INSERT INTO clients(nom,infos) VALUES ('{$_POST['nom2']}','{$_POST['texte']}')";
    Le champ datecreation se met à jour tout seul avec le TIMESTAMP en CURRENT_TIMESTAMP

    Lors d'une modification:

    $requet="UPDATE clients SET infos='".($_POST['infos'])."' WHERE nom='".($_POST['nom'])."'";
    On ne peut bien sur modifier que les infos du client, pas le nom ni la date de création de sa fiche.

    Par contre, je n'arrive pas à faire en sorte que le champ datemodification mette la date de l'update... J'espère avoir été plus clair!

  5. #5
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

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

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Oui c'est bien ce que je te disais...

    Essaie d'obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE IF NOT EXISTS `clients` (
    `nom` varchar(50) character set latin1 collate latin1_general_ci NOT NULL,
    `datecreation` timestamp NOT NULL default CURRENT_TIMESTAMP,
    `infos` varchar(255) character set latin1 collate latin1_general_ci NOT NULL,
    `datemodification`  timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    PRIMARY KEY (`nom`)
    )
    Je te donnes ici une maniere de ne pas te casser la tete et de laisser MySQL gérer ce champ tout seul... Sous PhpMyadmin, edites la structure de ton champ et regarde dans la boite de sélection des attributs

    Maintenant si tu veux le gérer toi meme c'est simple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requet="UPDATE clients SET infos='".($_POST['infos'])."', datemodification = NOW() WHERE nom='".($_POST['nom'])."'";
    @+
    Cadou

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut
    En fait mysql5. refuse de mettre deux champs TIMESTAMP en CURRENT...

    Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    Je vais tout de même re essayer tes deux solutions et je te tiens au courant!

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

Discussions similaires

  1. [MySQL] Mise à jour d'une ligne
    Par sanhoua dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/12/2009, 18h12
  2. Réponses: 1
    Dernier message: 05/08/2009, 23h29
  3. [AC-2003] mise à jour d'une ligne dans le cas des doublon
    Par radahm dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/06/2009, 08h30
  4. [MySQL] Mise à jour d'une ligne
    Par Lady yvi dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/06/2009, 19h43
  5. Attribut de Mise à jour d'une ligne
    Par moezm7 dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/07/2007, 15h02

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