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

Bibliothèques et frameworks PHP Discussion :

Modification de champs dans une table à chaque création d'un nouveau champs


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 40
    Points : 22
    Points
    22
    Par défaut Modification de champs dans une table à chaque création d'un nouveau champs
    Bonjour à tous


    Je voudrais quelques conseils (surtout au niveau logique/structure) pour faire une fonction qui à chaque nouvel élément enregistré dans ma table modifie d'autres champs de la table. C'est peut-être pas très clair dis comme ça donc voilà un exemple


    Alors j'ai un table Events avec 2 lignes dedans :

    id ------------date--------------duration (en minute)----------statut
    1----------01/01/2014-----------------60----------------------NEW
    2----------02/01/2014----------------120---------------------NEW
    3----------03/01/2014-----------------60----------------------NEW


    Donc voilà en statut NEW c'est du temps à prendre. Et lorsque l'utilisateur prend le temps, par exemple il prend 2h (120 minute), il faudrait que ma fonction regarde dans events voir si il a assez de temps déjà, et prélève le temps en partant de la plus ancienne en date. donc par exemple là si il prend 120 minute ça devrait donner :


    id ------------date--------------duration (en minute)----------statut
    1----------01/01/2014-----------------0----------------------NEW (60 - 120 = 0 et il reste encore 60 minutes à prendre)
    2----------02/01/2014-----------------60---------------------NEW (60 car 120 - 60 = 60 )
    3----------03/01/2014-----------------60----------------------NEW
    4----------15/01/2014----------------120---------------------TAKE


    Déjà cette fonction devrait être utilisé dans l'afterSave non ? Et pour la fonction en elle-même il faut que je récupère tous les "duration" avec pour statut "NEW", les classer par date, effectuer les modifs et les ré-enregistrer ... C'est faisable où je m'embarque dans quelques chose de trop tordu ? ...

    Merci

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Hello !

    En fait, ton idée n'est pas bête, mais tu prends le risque d'avoir rapidement des incohérences dans ta base de données (le save marche bien mais pas le afterSave, résultat, ta base est incorrecte...)

    Mon idée serait plutôt d'insérer des lignes à la suite les unes des autres (et au passage utiliser des signes négatifs pour le statut TAKE et ainsi tu peux virer cette colonne), puis de faire la somme tout simplement qui te permettrait de voir le temps restant. Tu vires ainsi tous les problèmes d'intégrité référentielle qui pourraient intervenir avec ta méthode.

    Si tu souhaites néanmoins récupérer sur quel jour il reste du temps, tu pourras toujours le faire au moyen d'une vue et/ou d'une procédure stockée (voir même d'une fonction php, même si c'est moins "propre").

    Une autre méthode serait d'utiliser les transactions dans cake afin de n'effectuer le commit que quand tout est OK (insertion et mise à jour se sont bien toutes déroulées jusqu'au bout). Encore une autre solution serait d'utiliser les triggers (mais personnellement, moins j'en utilise, mieux je me porte, c'est un coup à rapidement monter une usine à gaz).
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/10/2010, 16h18
  2. Réponses: 1
    Dernier message: 31/08/2009, 22h48
  3. Réponses: 3
    Dernier message: 10/05/2007, 07h43
  4. Réponses: 7
    Dernier message: 16/10/2006, 18h40

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