prévision des couts

Petit nouveau ! | 7 Messages

04 févr. 2009, 17:59

Bonjour à tous,

Débutant en PHP (vous l'auriez deviné, c'est pour ça que je post dans la section débutant :roll: ), je dois créer pour mon maitre de stage une prévision des couts des serveurs pour une année donnée.
Cependant ce que j'ai créé ne répond pas aux besoins... je dois donc recommencer car il est vrai que je n'avais tout simplement pas compris ce que je devais faire!! :oops:

Alors voila, j'ai une base de données sous mysql contenant entre autre une table serveur. voici sa composition:

serveur (ref_serveur, date_début(de l'abonnement), prix, périodicité(il s'agit la de savoir si le paiement sera mensuel, trimestriel etc))
un exemple:

serveur ('SRV00', '2008-11-01', 500.15, 3)

je dois donc référencer dans un tableau html tout les serveurs contenus dans la base. par ex pour le SRV00, le début de l'abonnement est donc pour le mois de novembre et on paie l'abonnement tout les trois mois. j'aimerais donc si on me demande le prévisionnelle pour l'année de 2009, comme l'abonnement à commencer au mois de novembre 2008, que pour l'année 2009 le prix du serveur apparaisse pour le mois de février de cette année puis pour le mois de mai etc... seulement je suis incapable de trouver une solution a mon problème...

pourriez vous m'aidez s'il vous plait?? me donner des pistes, des idées? je ne demande pas de code tout fait, j'aimerais me débrouiller par moi même mais la je bloque...

Merci d'avance :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 févr. 2009, 19:22

Il y a certainement d'autres solutions, mais à froid, une solution simple consisterait à :

prendre la date de début, et une variable temporaire dans laquelle on va cumuler les "mensualités"
tant que la date est inférieure à l'année souhaitée tu ajoute à cette date un nombre de mois égal à la périodicité :
- si la date obtenue est dans l'année souhaitée, tu ajoutes le prix du serveur dans ta variable
- si la date obtenue dépasse l'année souhaitée, tu forces la sortie de la boucle.
fin du tant que

Ta date va ainsi s'incrémenter doucement, de périodicité en périodicité, jusqu'à l'année souhaitée, puis te permettre de calculer le prix pour l'année qui t'interesse, et enfin, sortir de ta boucle une fois l'année expirée

Il ne te reste plus ensuite qu'à afficher ta variable qui contient le prix de l'abonnement pour l'année concernée, et on recommence l'opération pour le serveur suivant :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

05 févr. 2009, 11:45

je viens donc de regarder ta solution, et si j'ai bien compris, elle va me permettre uniquement d'afficher le total pour le serveur c'est ça??

or ça ne résout donc qu'une partie de mon problème, (je me suis certainement pas super bien expliqué) j'aimerais que l'affichage se fasse sous cette forme:
Image
ou dans chaque mois s'affichera la mensualité a payer pour le serveur en fonction donc de sa périodicité.

désolé de mon manque de compétence, mais pourrais tu m'expliquer un peu plus clairement ta solution?

encore merci!! :)

EDIT: j'ai une autre question... je pensais pour incrémenter ma date ou plus précisément le mois de la date_début, utiliser la fonction mktime(), ce pendant je voulais savoir si le faite d'incrémenter le mois de +3 mois par exemple et si on est au moi d'octobre, est ce que l'année passe elle aussi a l'année suivante pour retomber au mois de janvier?

RE-EDIT: J'ai finalement répondu moi même a ma dernière question en faisant des test, et l'année augmente d'elle même avec le mois qui correspond bien...!
désolé pour tout ces édits...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 févr. 2009, 15:02

Oki, je croyais qu'il te fallait le coût total du serveur pour l'année spécifiée :)

Le principe va rester sensiblement le même, dans la mesure où il te faut incrémenter ta date de "périodicité" mois pour connaitre les mois de l'année pour lesquels il faut payer le loyer.

Au lieu de stocker le prix cumulé dans une variable temporaire, on va (là encore y a plein de façon de faire, en voici une :)) stocker le numéro du mois dans un tableau : s'il faut payer en janvier et juillet on aurait ainsi un Array(1,7).

La procédure reste donc la même que celle que je t'ai donné hier, tout ce qui change c'est le stockage de l'info. Le but est d'identifier les mois pendant lesquels un loyer est à prévoir pour le serveur.

Une fois cette étape réalisée, il te suffit de générer ton tableau avec une colonne par mois et de tester pour chaque mois, si celui-ci est présent dans l'array. Si c'est le cas, alors tu indiques le prix à payer, sinon c'est qu'il n'y a rien à payer ce mois là et tu passes au suivant...

Il ne te reste plus ensuite qu'à recommencer avec le serveur suivant sur la ligne d'après :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

05 févr. 2009, 15:12

Merci pour ton aide précieuse, je pense avoir compris!!

je repasserai de toute façon si j'ai des questions :roll:
mon soucis va plus se trouver maintenant dans le calcul des dates! j'espère m'en sortir seul :)

a bientôt :D