duree et temps

Murat

Habitué
Bonsoir tout le monde

Je suis entrain de faire un site, enfin plutôt un jeu, dont le but et d'acheter un pot, tu terreau etc... et de faire pousser des plantes, la personne dispose d'une somme d'argent limité auquel elle doit bien dépenser pour l'achat du matériel et des plantes.

ca c'est déjà fait, la plante doit pousser, quand elle a
planter les graines, seulement voici le probleme :

La personne clique sur un lien pour planter, c'est automatique, une date s'enregistre dans la table de l'utilisateur, ensuite, selon la temperature, l'éclairage, l'eau, et le terreau (dose de tout ca), la plante pousse plus vite, mais surtout, j'aimerai que la date s'affiche pour savoir depuis combien de temps elles ont étaient plantés et de combien de centimétres elles ont poussées, et ca je ne voit pas du tout comment faire

Donc si des personnes peuvent m'aider pour faire ceci, je leurs seraient très reconnaissant !

Merci
 

THEniluje

Grand Maître
faut que tu définisse un algorithme pour déterminer le nombre de cm en fonction de la somme le lumière, d'eau, etc. [:spamafote]
définit une fonction avec en entré la date de plantage, la somme de lumière reçue, d'eau, ...
'fin si tu veux être subtile, faudra faire un truc assez costaud, genre ne prendre en compte la lumière qu'à partir du moment où la plante a atteind telle taille, puis ponderer l'éclairage instantanné avec la taille de la plante avant de sommer le tout pour déterminer la pousse entre deux instants, ...
c'est un boulot de logique, définis toutes les regles que cela doit respecter pour arriver à un résultat cohérent, puis met le en forme.
 

Murat

Habitué
[citation=4538,1][nom]THEniluje a écrit[/nom]faut que tu définisse un algorithme pour déterminer le nombre de cm en fonction de la somme le lumière, d'eau, etc. [:spamafote]
définit une fonction avec en entré la date de plantage, la somme de lumière reçue, d'eau, ...
'fin si tu veux être subtile, faudra faire un truc assez costaud, genre ne prendre en compte la lumière qu'à partir du moment où la plante a atteind telle taille, puis ponderer l'éclairage instantanné avec la taille de la plante avant de sommer le tout pour déterminer la pousse entre deux instants, ...
c'est un boulot de logique, définis toutes les regles que cela doit respecter pour arriver à un résultat cohérent, puis met le en forme.
[/citation]merci de ta réponse

mais si pour commencer, je prend que les centimetres pour les mettres en fonction de la date de plantation, comment je peut faire ? car tu me l'a expliquer en haut, mais franchement, j'ai chercher pendant des heures, et je n'y arrive pas du tout, le temps, durée etc... ce n'est pas mon fort et je n'ai jamais réussi a controler ca :D
 

THEniluje

Grand Maître
t'as bien la date de l'instant de plantage, tu chope la date du moment : et tu calcule l'intervalle de temps séparant les deux dates :
 

Murat

Habitué
[citation=4541,1][nom]THEniluje a écrit[/nom]t'as bien la date de l'instant de plantage, tu chope la date du moment : et tu calcule l'intervalle de temps séparant les deux dates :
[/citation]merci, mais comment ensuite la mettre en rapport avec les centimetres ? :??:
 

THEniluje

Grand Maître
function nb_cm($duree)
{
return $duree*5;
}

et quand tu fait : nb_cm(2); tu obtient 10, qui est le nombre de cm.

Bon, voila, t'as la méthode, plus qu'à trouver le fonction que tu va réellement mettre, parcequ'un "*5" c'est pas terrible :D
pense plutot à une fonction définie par partie, au début nulle, puis parabolique, puis linéaire. ou un truc du genre.
 

Murat

Habitué
[citation=4543,1][nom]THEniluje a écrit[/nom]function nb_cm($duree)
{
return $duree*5;
}

et quand tu fait : nb_cm(2); tu obtient 10, qui est le nombre de cm.

Bon, voila, t'as la méthode, plus qu'à trouver le fonction que tu va réellement mettre, parcequ'un "*5" c'est pas terrible :D
pense plutot à une fonction définie par partie, au début nulle, puis parabolique, puis linéaire. ou un truc du genre.
[/citation]10, qui évolue selon le timestamp (type que j'ai mit dans la table pour la date de plantation) ?
 

THEniluje

Grand Maître
indirectement oui, vu que du timestamp va dépendre la durée préalablement calculée (ici le 2)
 

Murat

Habitué
donc, avec l'aide aussi d'autres personnes et de la tienne, j'ai put faire et avoir ceci :


[fixed]// Calcul d'une durée (type pour choisir en minutes ou en jours)
// substr c pour selectionner une partie de la chaine, les arguments // sont substr(chaine,debut,fin), compté en nombre de caractere
function duree($avant,$type) {
// avant est la date au format 0000-00-00 00:00:00 => date("Y-m-d H:i:s")
// C'est la date qui est enregistré dans la base de données lors de la derniere visite
// ici on prend l'exemple de hier à 20h => 2004-02-18 20:15:00
$a=substr($avant,0,4); // on stocke dans a le nombre des années (0,4 => 2004
$m=substr($avant,5,2); // $m=02 $j=substr($avant,8,2); // $j=18
$h=substr($avant,11,2); // $h=20
$mi=substr($avant,14,2); //$mi=15
$se=substr($avant,17,2); //$se=0
// on vérifie que c bien une date valide pour calculer le temps (donc que il y a au moins une année, un mois et un jour, le reste peut etre égal a 0
if ($a!=0000 and $m!=00 and $j!=00) {
// Convertir tout ça en un nombre entier de seconde (pour aviter de calculer depuis l'an 0 le calcul se fait a parti de 1970)
$timestamp = mktime($h, $mi, $se, $m, $j, $a ); // la fonction time donne la date d'aujourd'hui directement en seconde // (tjs par raport a 1970)

$maintenant = time();
// l'écart de seconde entre les deux date : celle enregistré dans la bdd ($avant) et la date d'ajourd'hui
$ecart_secondes = abs($maintenant - $timestamp);
// une fois l'écart en seconde un calcul pour convertir en minutes, ou en jour (un jour = 86400 secondes ;)
if ($type=="m") { $duree=floor($ecart_secondes/60); }
if ($type=="j") { $duree=floor($ecart_secondes/86400); }
} else { $duree=0; }
return $duree;
}
ta table est un peu comme ça

|--------|--------|----------------------|
| Pseudo | taille | date |
|--------|--------|----------------------|
| Murat | 15 | 2004-02-18 20:15:00 |
|--------|--------|----------------------|

les accès bd pour récupérer les variables et ensuite pour faire grandir :

// $date est la date qu'il faut récuperer dans la base de donnée, "m" signifie que le résultat de la fonction duree en minutes
$temps_ecoule=duree($date,"m");
// $taille est la taille récuperer dans la base de données, l'incrémenter de (2*$temps_ecoule)
// la plante pousse de 2 cm par minute, // donc fo sans doute revoir le calcul, 0.01 serait serai mieux :D
$taille+=2*$temps_ecoule;

echo 'Votre plante fait maintenant '.$taille.' cm'; [/fixed]

mais bon, je n'arrive pas du tout a faire un script complet pour avoir un code
bien fait, donc si quelqu'un peut m'aider a faire un script complet avec les indications en haut, je lui serai très reconnaissant, car malgré ca, je n'y arrive pas du tout :/ j'y ai passer la nuit mais je n'y arrive pas du tout :(

Merci a ceux qui peuvent m'aider :merci:
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 057
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut