Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1163 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  calendrier personnalisé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

calendrier personnalisé

n°2162462
newbi1
Posté le 04-11-2012 à 12:54:56  profilanswer
 

Bonjour,
j'aimerais a terme me faire mon propre calendrier pour un jeu php
 
ma question est de savoir
comment faire pour incrémenter une valeur en fonction de la date
par exemple
 
je vais avoir un certain nombre de jour par mois non constant
je vais avoir une liste de jour  
et une liste de mois
 
comment je peux faire pour dire, le premier janvier 2011 on était le nawak 8 moutarde 245
et chaque jour php me spawn la variable suivante sur la liste que j'ai rentré.
 
Je suis pas trop fort en php mais ce code me semble pas si compliqué
mais pourtant je ne vois pas comment faire
merci de m'aider :D

mood
Publicité
Posté le 04-11-2012 à 12:54:56  profilanswer
 

n°2162486
zownierd
Posté le 04-11-2012 à 22:53:26  profilanswer
 

je sais pas si j'ai bien compris : tu veux un calendrier perso ?
tu devrais regarder ici :
http://php.net/manual/fr/function.date.php
 
tu fournit un format pour récupérer uniquement le jour, puis le mois, puis l'année, ...
après tu fait ta cuisine dessus : enlever 1500 à l'année, multiplier les jours par 2,diviser les mois par 4 ...
 
par contre si j'ai bien compris, tu veux effectuer des actions tous les jours ? On ne peut pas laisser tourner indéfiniment un script... là tu vas avoir besoin d'un bdd

n°2162507
newbi1
Posté le 05-11-2012 à 09:53:17  profilanswer
 

ce que je voulais dire c'était par exemple je vais mettre le nom (fictifs) de jour dans un array, et je veux demander à php s'il est lundi prend l'array 0 s'il est mardi prend l'array 1 etc (incrémentation)
De même pour le nombre de jour depuis le début du mois,
on est le 5 novembre mais je veux qu'on soit le 20. et puis on reviens au moi suvant le 30

n°2162571
zownierd
Posté le 05-11-2012 à 15:53:22  profilanswer
 

et bien c'est ce que je disais je pense :
date('N'); te donnera 1 aujourd'hui 7 pour dimanche
date('d'); te donnera 5 aujourd'hui
date('m'); te donnera 11 pour novembre
date('Y'); te donnera 2012
 
si tu veux faire un calendrier perso tu fais
$day=date('d');
$mois=date('m');
$annee=date('Y');
et pour tes jours, tu fais un tableau avec les arrays
array(1 => 'janviertropcool', 'fevrierdlaballe', 'marsdelespace'); etc

n°2162580
newbi1
Posté le 05-11-2012 à 17:36:36  profilanswer
 

merci beaucoup mais regarde
if ($day=5) { $myday=20 ; };
if ($day=6) {$myday=21; }
 
donc je fais comment pour l'incrémentation parce que c'est ca le problème?

n°2162581
newbi1
Posté le 05-11-2012 à 17:41:02  profilanswer
 

non c'est pas bon il me faut aussi un array qui retourne à 1 une fois qu'il atteint 30

n°2163158
newbi1
Posté le 08-11-2012 à 09:56:37  profilanswer
 

up

n°2163238
czh
Posté le 08-11-2012 à 20:02:37  profilanswer
 

Imaginons, un calendrier à 3 mois.
Le premier mois fait 25 jours.
Le second mois fait 12 jours.
Le troisième mois fait 72 jours.
L'année fait donc 25 + 12 + 72 = 109 jours
 
Le temps 0 du calendrier est défini au "8/11/2012 à 20:18:09" soit le timstamp unix : define(TEMPS0, 1352402289)
 
On récupère l'instant courant grâce à time() auquel on soustrait TEMPS0;
$secondesEcouleDepuisT0 = time() - TEMPS0;
 
On calcule le nombre de jours écoulés depuis TEMPS0 pour que ça soit plus pratique à manipuler.
$joursEcouleDepuisT0 = ($secondesEcouleDepuisT0  - ($secondesEcouleDepuisT0 % (3600*24))) / (3600*24);
 
Pour récupérer l'année en cours c'est "on est l'année ". floor($joursEcouleDepuisT0 / 109);
 
Le but maintenant est de savoir quel mois on est.
 
On calcule le nombre de jours écoulés depuis le début de l'année courante.
 
$joursDeLAnneeCourante = $joursEcouleDepuisT0 % 109;
 
On pose le tableau suivant : $joursParMois = array(25, 12, 72);
 
Il faut produire un tableau avec les jours cumulatifs par mois.
 
$joursCumulParMois = array(25, 25+12, 25+12+72);
 
On termine par un foreach même s'il doit y avoir un moyen plus optmisé mathématiquement.
 

Code :
  1. foreach ($joursCumulParMois as $nMois => $cumul) {
  2.   if ($joursDeLAnneeCourante < $cumul) {
  3.      echo "On est le jour ". ($joursDeLAnneeCourante - $cumul + $joursParMois[$nMois]). " du mois ". ($nMois). "\n";
  4.      break;
  5.   }
  6. }


Message édité par czh le 08-11-2012 à 21:18:44
n°2163242
czh
Posté le 08-11-2012 à 20:47:40  profilanswer
 

Imaginons maintenant que la semaine fasse 9 jours : 5 jours pour bosser et un long week-end de 4 jours. Et que T0 était le premier jour de repos du week-end.
 
Pour savoir quel jour, on est dans le calendrier. Il suffit de faire :
echo "on est le jour de la semaine ". (($joursEcouleDepuisT0 + 5) % 9);

n°2163248
CyberDenix
Posté le 08-11-2012 à 21:39:58  profilanswer
 

Il y a un truc vachement important à savoir quand on fait des calendrier, c'est qu'il existe non seulement des années bissextiles, mais également des années qui ont 53 semaines (années dont le jour de l'an est un jeudi).
 
Pense bien à utiliser date('o') plutôt que date ('Y')...
 
 
Mais si tu veux créer ton propre calendrier, il faut effectivement utiliser time(), cad le nombre de secondes écoulées depuis le 1er Janvier 1970, et ensuite faire tes calculs là-dessus (ex: un jour réel = 3600 secondes).
 
Attention au bug de l'an 2038 (http://fr.wikipedia.org/wiki/Bug_de_l'an_2038) si tu utilises un système 32 bits.


Message édité par CyberDenix le 08-11-2012 à 21:44:57

---------------
Directeur Technique (CTO)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  calendrier personnalisé

 

Sujets relatifs
JTable personnaliséajouter un composant personnalisé a la palette de eclipse indigo
calendrier changer en ligne[C++] Accéder à un service Windows (message personnalisé)
Modification calendrier[Résolu] Calendrier javascript qui devient fou
Calendrier - Selection de date depuis un pop-upCréer son site personnalisé avec Joomla...
quel objet calendrier utilisez-vous ?Comment intégrer mon calendrier Week Calendar dans une page ?
Plus de sujets relatifs à : calendrier personnalisé


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR