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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MySQL] - Remise à zero par rapport à une date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/MySQL] - Remise à zero par rapport à une date

n°769791
AlphaZone
Posté le 19-06-2004 à 11:06:05  profilanswer
 

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
mood
Publicité
Posté le 19-06-2004 à 11:06:05  profilanswer
 

n°769796
T509
$job->GetJob(now)
Posté le 19-06-2004 à 11:13:01  profilanswer
 

tu crées un script remise à zéro et tu l'appelle une fois par mois avec www.webcron.org

n°769805
AlphaZone
Posté le 19-06-2004 à 11:24:03  profilanswer
 

MERCI T509 ;)

n°769810
T509
$job->GetJob(now)
Posté le 19-06-2004 à 11:37:22  profilanswer
 

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

n°769832
AlphaZone
Posté le 19-06-2004 à 12:34:14  profilanswer
 

Je préfer celle-ci meme si cela reste un peu compliqué a maitrisé

n°769850
AlphaZone
Posté le 19-06-2004 à 13:08:49  profilanswer
 

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 :
  1. ///////////////////////////////////////////
  2. // REMISE A ZERO DU TOPSITE
  3. ///////////////////////////////////////////
  4. $Req = "SELECT * FROM reset_topsite";
  5. $sql = Requete($Req);
  6. $data = mysql_fetch_row($sql);
  7. if($data[1] >= time())
  8.     {
  9.     $mois = date('m');
  10.     $annee = date('Y');
  11.     if($mois == 12)
  12.         {
  13.         $mois = 1;
  14.         $annee = $annee + 1;
  15.         }
  16.     $futur_date = mktime(0,0,0,$mois, 1, $annee);
  17.     $req = "UPDATE reset_topsite SET(date='$futur_date')";
  18.     $sql = Requete($req);
  19.     }
  20. /////////////////////////////////////////

n°769867
T509
$job->GetJob(now)
Posté le 19-06-2004 à 13:38:48  profilanswer
 

Cela me semble pas mal. C'est exactement à cela que je pensais.
Il reste plus qu'à lancer la remise à zéro

n°769876
T509
$job->GetJob(now)
Posté le 19-06-2004 à 13:47:30  profilanswer
 

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

n°769949
N@rcolepti​k
Posté le 19-06-2004 à 16:12:48  profilanswer
 

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
 
}


Message édité par N@rcoleptik le 19-06-2004 à 18:20:41
n°770000
AlphaZone
Posté le 19-06-2004 à 18:42:46  profilanswer
 

Tu reprend mon script plus haut et tu modifie le mktime()
 
 
Voici le code approximativement sans trop d'erreur.
 

Code :
  1. ///////////////////////////////////////////  
  2. // REMISE A ZERO DU TOPSITE  
  3. ///////////////////////////////////////////  
  4. $Req = "SELECT * FROM reset_topsite";
  5. $sql = Requete($Req);
  6. $data = mysql_fetch_row($sql);
  7. if($data[1] >= time())
  8.     {
  9.       $jour = date('d');
  10.       $mois = date('m');
  11.       $annee = date('Y');
  12.       switch($mois)
  13.         {
  14.         case 1:{ if($jour == 31){ $jour = 1; $mois = $mois +1; }}; break;
  15.         // On test si l'année est bisextile ou pas
  16.         case 2:{ if(($jour == 29) && (date('L') == 1)){ $jour = 1; $mois = $mois +1; }
  17.                  elseif(($jour == 28) && (date('L') == 0)){ $jour = 1; $mois = $mois +1; }}; break;
  18.         case 3:
  19.         ...
  20.         case 12: if($jour == 31) { $annee = $annee +1; $jour = 1; $mois = 1; }; break;
  21.         }
  22.    
  23.      
  24.       // Enregistrement de la prochaine mise à jour
  25.       $futur_date = mktime(0,0,0,$mois, $jour, $annee);
  26.       $req = "UPDATE reset_topsite SET(date='$futur_date')";
  27.       $sql = Requete($req);
  28.     }
  29. /////////////////////////////////////////


Message édité par AlphaZone le 19-06-2004 à 18:56:36
mood
Publicité
Posté le 19-06-2004 à 18:42:46  profilanswer
 

n°770105
N@rcolepti​k
Posté le 19-06-2004 à 23:45:25  profilanswer
 

et ce genre de script faut le placer ou ?

n°770108
AlphaZone
Posté le 19-06-2004 à 23:53:35  profilanswer
 

sur la page que tu souhaite.
 
Le mieu est de le placer sur le topsite en lui meme.


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

  [PHP/MySQL] - Remise à zero par rapport à une date

 

Sujets relatifs
Recrutement de quelqu'un qui est bon en PHPPHP probleme easyphp et mysql_fetch_array
[PHP] Comment utiliser le résultat d'une requete sans recharger[php] erreur sql
Php & Mysql ou Php et fichier texteListe de A=>Z ou Z=>A sur une requete Mysql ?
PHP/FPDF et formatage d'un mail auto[PHP] generation image avec php_gd. pb sous linux?
Plus de sujets relatifs à : [PHP/MySQL] - Remise à zero par rapport à une date


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