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 :

enregistrement des mouvements utilisateurs.


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut enregistrement des mouvements utilisateurs.
    Bonjour à tous, j'au un petit soucis dans la réalisation... L'idée est que j'ai une bdd, avec multuiples utilisateurs et je souhaiuterais créer une page historique dans laquelle apparait chaque action effectuée.


    ca serait vraiment pour garder une tracabilitée parfaite de chaque action de mes utilisateurs... Je ne sais pas comment procéder pour me lancer.

    mais l'idée serais qu'il y est une table avec comme
    entrée :
    user <-- qui a fait? exemple jejerome7826
    action <-- cas t'il fait? exemple DELETE FROM message WHERE id= 16
    donnees_avant <--la donnée avant l'action exemple donnees= coucou s'est moi
    date <-- quand l'a t'il fait? exemple 42 mars 2012


    donc en gros il faut une table qui enregistre les commandes SQL des autres table.

    donc dans l'ordre sa fait pour l'instant:

    on prend l'info
    on fait l'action demandée

    après avec le système d'historique:

    on prend l'info
    on déplace l'info dans la table d'histoire
    on fait l'action demandée


    il faut ajouter l'utilisation d'une fonction dans toute mes actions.
    en gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php 
    mysql_query('update table set historique=\'texte\''); 
    ?>
    ça deviendrais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php 
    log($user, $action, $valeur); 
    mysql_query('update table set historique=\'texte\''); 
    ?>

    et la fonction log fait appel à la db pour le stockage.

    pensez vous que va soit mieux avec une classe pour le logger ?.

    et le fait que je me retrouves avec du ajax ? pensez vous que ça soit réalisable?

    savez vous comment je pourrais avancer et sur quelle base? car la je ne sais plus comment avancer. par avance merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 29
    Par défaut
    Salut,

    Ca peut se jouer au niveau MySQL en activant le fichier général des logs : http://dev.mysql.com/doc/refman/5.0/en/query-log.html.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    Citation Envoyé par ikkiphenix Voir le message
    Salut,

    Ca peut se jouer au niveau MySQL en activant le fichier général des logs : http://dev.mysql.com/doc/refman/5.0/en/query-log.html.
    mais ce fichier il est exploitable ? ou c'est juste un txt? en fait j'ai une table qui s('appelle "dossier'' et je veux pouvori enregistrer dans la table historique le détail de toutes les mmodifications pour chaque dossier faite par l'utilisateur x ou y ...

    j'ai penser a faire des doubles requêtes. mais ça fera lourd nan?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    if (isset ($_POST['NOUVEAU_NUM_DE_TELEPHONE'])
     {
       // On modifie le num' de téléphone du membre.
       $MAJ_BDD = $bdd->prepare('UPDATE Membres SET telephone = :TEL');
       $MAJ_BDD = $bdd->execute(array('TEL' => $_POST['NOUVEAU_NUM_DE_TELEPHONE']));
     
       // On ajoute une ligne dans la table 'activites' pour voir que l'utilisateur a modifié son pseudo.
       $MAJ_ACTIVITE = $bdd->prepare('INSERT INTO activites(id, activite, date) VALUES (:id, :activite, :date)');
       $MAJ_ACTIVITE = $bdd->execute(array('id' => 'id du membre',
                                           'activite' => 'Numero de téléphone modifié en'. $_POST['NOUVEAU_NUM_DE_TELEPHONE'] .'.',
                                           'date' => 'xx:xx');
     }
    ?>

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    faut penser simple, compact et rapide... 3 tables:
    • users(id,name,...)
    • actions(id,name,...)
    • log(id,date,iduser,idaction)

    quand un de tes utilisateurs fait un truc c'est juste un insert dans log du coup genre:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into log(date,iduser,idaction)value(now(),2,3)

    selon les besoins, tu peux exploser les entrées dans log antérieures à une date pour limiter la taille selon la quantité d'insertions journalière...

    après tu peux aller loin dans l'automatisation grâce aux procédures stockées coté mysql... mais tu peux faire ça sans les utiliser sans aucune problème...

Discussions similaires

  1. Réponses: 10
    Dernier message: 21/05/2014, 00h36
  2. Enregistrement des préférences utilisateurs
    Par laSista dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/05/2014, 08h40
  3. Enregistrer des données introduite par l'utilisateur
    Par cp-08jhu dans le forum Android
    Réponses: 2
    Dernier message: 13/01/2012, 09h46
  4. Réponses: 1
    Dernier message: 07/06/2011, 13h26
  5. Enregistrement des actions de l'utilisateur
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 17h55

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