- Remise à zero par rapport à une date [PHP/MySQL] - PHP - Programmation
Marsh Posté le 19-06-2004 à 11:13:01
tu crées un script remise à zéro et tu l'appelle une fois par mois avec www.webcron.org
Marsh Posté le 19-06-2004 à 11:37:22
Autre solution :
tu enregistres le timestamp de la prochaine remise à zéro.
A chaque visiteur, tu vérifie le timestamp en cours
Si timestamp en cours >= timestamp plannif -> remise à zéro avec enregistrement du prochain timestamp de remise à zéro
Marsh Posté le 19-06-2004 à 12:34:14
Je préfer celle-ci meme si cela reste un peu compliqué a maitrisé
Marsh Posté le 19-06-2004 à 13:08:49
J'aurais voulu avoir votre avis sur le script php qui va permettre la remise à zéro du topsite tout les mois.
Merci de me dire si j'ai fais des erreurs.
Code :
|
Marsh Posté le 19-06-2004 à 13:38:48
Cela me semble pas mal. C'est exactement à cela que je pensais.
Il reste plus qu'à lancer la remise à zéro
Marsh Posté le 19-06-2004 à 13:47:30
Ceci dit, j'ai testé webcron.org et cela merche très bien. Le déclenchement a bien lieu au moment prévu et avec des logs d'exécution. Cela me semble fiable.
Enfin c'est surtout utile quand il faut automatiser des taches qui
- peuvent être longues,
- non dépendantes des visiteurs,
- accèdent à des ressources qu'il ne faut pas surcharger
- activer un "moteur" pour le site
Marsh Posté le 19-06-2004 à 16:12:48
et comment faire pour que tout les jours a telle heure une base de donnée sois repise a zero (enfin, reprenne une cetaine valeur quoi...)
moi jai un truc comme ca mais c'est inserer dans le code de mes page et donc ca s'execute que si un utilisateur se connecte...
(donc c censé mettre a jour a minuit, enfin si l'utilisateur se reconnecte apres minuit, un truc sera mis a jour.)
// mise à jour d'une certaine partie de la bdd
$derniereco=gmdate('Y-m-d'); //enregistre la date au moment de la connection dans $derniereco
$trucAMettreAjour=24;
$diff = date_diff($_SESSION['derniereco'], $derniereco);//appel de la fonction pour calculer la difference entre dates...
if($diff > 0){
$mysql=dbconnex();
$_SESSION['truc']=$trucAMettreAjour;
$requete1 = "UPDATE utilisateur SET trucAMettreAjour='$_SESSION[truc]', derniereco='$derniereco' WHERE utilisateur = '$_SESSION[login]'";
mysql_db_query(BASENAME, $requete1);
mysql_close ($mysql);
}
avec
/********************************************/
/* DIFFERENCE ENTRE DEUX DATES */
/********************************************/
function date_diff($date1, $date2){
$d1 = explode("-", $date1);
$d2 = explode("-", $date2);
$date1 = mktime(0,0,0, date($d1[1]), date($d1[2]), date($d1[0]));
$date2 = mktime(0,0,0, date($d2[1]), date($d2[2]), date($d2[0]));
$tmp = $date1;
$y = $d1[0];
$m = $d1[1];
$d = $d1[2];
$days = 0;
while($tmp != $date2){
$d++;
$tmp = mktime(0,0,0, date($m), date($d), date($y));
$days++;
}
return $days;
hmmm, c une conception pas terrible, et jaimerai bien savoir comment faire l'equivalent mais qui marche bien
}
Marsh Posté le 19-06-2004 à 18:42:46
Tu reprend mon script plus haut et tu modifie le mktime()
Voici le code approximativement sans trop d'erreur.
Code :
|
Marsh Posté le 19-06-2004 à 23:53:35
sur la page que tu souhaite.
Le mieu est de le placer sur le topsite en lui meme.
Marsh Posté le 19-06-2004 à 11:06:05
Bonjours tout le monde.
Actuellement, je suis en train de développer un topsite.
Le problème qui me gène est que je sais pas comment faire pour remettre à zéro les entrées/sorties de tout les site par rapport au premier du mois.
J'avais pensé à faire un truc du genre:
$date1 = 01000000;
$date2 = date('dHis');
if($date1 == $date2)
{
// remise à zéro
}
Mais le problème est que cela fonctionnera seulement quand un utilisateur arrivera a ce moment la.
Ce qu'il fodrai c'est une remise à zéro qui se fasse côté serveur.
Si vous avez une idée, je suis interresé.
Merci d'avance.
Message édité par AlphaZone le 19-06-2004 à 13:07:54