8791 sujets

Développement web côté serveur, CMS

Bonjour, je m'en remets à vous pour vous exposer un petit problème que j'ai pour un futur projet sur lequel je travaille. Le dit projet : un site intranet pour mon travail où je stockerai des données techniques d'appareil de l'usine. Ces données, par exemple la pression de calcul d'un réservoir, pourront parfois évoluer, mais j'aimerai garder l'historique de cette donnée pour pouvoir la consulter ultérieurement. J'utiliserais donc le PhP et le MySQL pour traiter et stocker ces données.

J'ai pensé à la solution qui consiste à stocker un "array" avec les différentes valeurs, ex:

$pc[0]-value
         -user
         -timestamp
     [1]-value
         -user
         -timestamp

et lorsque je récupère ma valeur pour un affichage standard, je ne garde que l'array le plus élevé, ici $pc[1]

Voilà c'est une technique qui doit pouvoir fonctionner, mais peut-être avez-vous été confronté à un problème similaire et avez peut-être trouvé une solution meilleure ? Sinon pouvez-vous me dire si ma technique tient la route ?

Merci.
Modifié par PanPan50 (25 Jan 2010 - 23:40)
Bonjour,

je n'ai pas bien compris la problématique ni le but de la manœuvre.

Comment as tu besoin de sortir les résultats? Par date, utilisateur?
J'ai besoin lors de l'affichage standard par un utilisateur lambda de voir la dernière valeur de la variable, mais moi "administrateur" je veux pouvoir voir tous les changements qu'a subit cette variable : qui a changé la valeur ?, quand ? etc etc.
Le mieux serait une table dans la base de donnée où tu enregistre chaque valeur.

Un exemple de schéma de sera le suivant :
a écrit :

table_historique: id, id_appareil, variable, valeur, id_user, date_enregistrement

table_appareil: id, nom_appareil

table_user: id, identifiant, password, nom, prenom


Ensuite tu n'a plus qu'à faire les requêtes adéquates pour récupérer les données que tu souhaites.
Exemple pour récupérer la dernière valeur de "ma_variable" pour l'appareil "bidule" :

SELECT * 
FROM table_historique 
JOIN table_appareil ON table_appareil.id = table_historique.id_appareil 
WHERE table_appareil.nom_appareil = 'bidule'
AND table_historique.variable = 'ma_variable'
ORDER BY date_enregistrement DESC
LIMIT 1

Avec une jointure supplémentaire sur la table user on peut facilement savoir qui est à l'origine de la dernière modification par exemple.

Il peut être utile de faire une table additionnelle pour référencer les variables plutôt que d'avoir le nom de la variable en dur dans la table historique (par exemple pour adjoindre une description à une variable).
Modifié par moust (20 Jan 2010 - 21:47)
Je ferai soit une base de donnée séparé trié par date, id... (tout ce qu'on veut) soit des fichiers xml pour stocker les données.

L'utilisateur, je lui fournirai la valeur dont il a besoin point barre ; pas la peine de chercher parmi n données une valeur que l'on peut facilement servir directement.

Je choisirai xml si je voulais archiver les données. Par exemple, je crée tout les jours un fichier dans lequel sont conservés les utilisateurs, leur poste et la pression du réservoir. Le 03/05/2010, le réservoir 6 explose je veux savoir pourquoi je regarde les valeur conservées dans mon fichier.

L'avantage du xml c'est que ce sont des fichiers facilement lisible par l'humain, stocker des tableau/variables php, c'est un peu crado Smiley cligne .

A l'inverse, si tu veux conserver les données et pouvoir les récupérer et trier rapidement (pour sortir des statistique par exemple), mysql sera plus adapté.

Pour finir, je pense que tu devrai décrire ton projet en détail sur developpez.com ou tu trouveras des développeurs avisés.
Modifié par bzh (20 Jan 2010 - 22:06)
+1 pour moust (ou alors je n'ai pas compris la question) : si c'est seulement pour l'administrateur quel est l'intérêt de se coltiner un array ? Autant lister l'historique en base...
Je vous remercie pour vos réponses ! Heyoan, je n'ai pas dit qu'il y avait un intérêt, je demande juste des conseils.
Oups... tu as raison : désolé du ton un peu sec. Smiley hippy

Et si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne