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 :

Mise à jour avec une condition sur une vue


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut Mise à jour avec une condition sur une vue
    Bonjour tout le monde,

    bon voila, j'ai un petit soucis !

    je suis entrain de créer un forum php mysql (sous phpmyadmin) et j'arrive au problème lié à la déconnexion automatique des membres, lorsque ceux-ci partent sans appuyer sur le bouton "déconnecter"

    j'ai trouvé une solution !j'ai mis un champs date dans ma table réservée aux membres, dans la base de données, celle-ci contient la date de la dernière activité de l'utilisateur ( remis à jour automatiquement par une méthode Ajax, et ca marche ! ^^)
    jusque là, tout va bien !

    ensuite, j'ai créé une vue contenant tous ceux qui n'ont pas donné signe de vie depuis plus de 5 minutes, mais qui n'ont pas appuyé sur le bouton de déconnexion (les méchants !! ^^)

    >>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE VIEW VIEW_DECO_MB(ref_mb_forum)
    AS
    (
    SELECT ref_mb_forum
    FROM membre_forum
    WHERE statut_connexion = 1
    AND date_activite >= date_sub(CURRENT_DATE(), INTERVAL 5 MINUTE)
    )
    la vue fonctionne très bien, pas de doute là dessus ! elle affiche bien tous les utilisateurs concernés !

    Ensuite, j'ai créé un trigger, et là plus rien ne fonctionne >_<
    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
     
    CREATE TRIGGER Trigger_DECO_MB
    ON VIEW_DECO_MB
    INSTEAD OF INSERT
     
    AS
    BEGIN
    UPDATE membre_forum
    SET statut_connexion = 0
    WHERE ref_mb_forum IN
    (
    SELECT ref_mb_forum
    FROM VIEW_DECO_MB
    )
    END
    L'erreur que phpmyadmin me donne est :

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON VIEW_DECO_MB INSTEAD OF INSERT AS BEGIN UPDATE membre_forum SET statut' at line 2


    Il faut absolument que je passe par un trigger !
    bon, si c'est pas possible, j'essairai quand même autre chose, mais ce serait dommage car ce script est assez simple.


    Auriez-vous une solution qui pourrait m'aider ?
    j'attend vos réponses avec impatiente ^^
    merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 738
    Points
    11 738
    Par défaut
    MySQL ne permet pas de créer des triggers sur des vues (de toute façon, ça ne surveillerait pas automatiquement les modifications de valeurs).

    Je pense que le plus simple est de créer une proc stock de déconnexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE PROCEDURE DeconnexionAuto()
    UPDATE membre_forum MF 
      INNER JOIN VIEW_DECO_MB V ON MF.ref_mb_forum = V.ref_mb_forum
    SET MF.statut_connexion = 0 ;
    Ensuite, il faut appeler cette procédure à intervalles réguliers, avec CREATE EVENT si tu as la version 5.1.6, de l'extérieur sinon.

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Réponses: 5
    Dernier message: 12/05/2009, 15h57
  3. [XL-2003] Faire mise à jour fichier excel stocké sur une page web
    Par fidecourt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/04/2009, 17h12
  4. probleme avec l'appui sur une touche sur une jframe ou jdialog
    Par jeanfeu dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/08/2008, 16h14
  5. Fréquence de mise à jour de la position d'une voiture sur un circuit
    Par djfrancky dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 22/08/2007, 02h20

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