CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[help] Php : petit problème de date !

s1ms1d1us
s1ms1d1us
Niveau 6
19 janvier 2009 à 16:16:55

Voici un code php permettant d'afficher un top 10 des actifs des membres de mon forum par ordre décroissant proportionnellement a leur inscription (taux en msg/jour)
Juste un souci, la syntaxe pour déclaré "au moment ou on lit la stat" n'est pas précise puisque c'est "aujourd'hui" tout court c'est a dire aujourd'hui a minuit donc cela faut les résultat puisque (je prend un exemple simple pour que vous puissiez comprendre) :

Un membre qui s'inscrit le 15/01/2009 a 22H et a 2 messages
Si on regard les statistiques le 16/01/2009 a 22H logiquement il devrai être a 2 msg/j de moyenne or il indiquera 24 msg/jour de moyenne du fait que la statistique considère que la date au moment ou on lira la stat n'est pas le 16/01/2009 a 22h mais le 16/01/2009 a minuit (le matin)

Donc cela change tout puisque entre 22h et minuit ça fait un écart de 2h donc 1 msg par heure en moyenne soit 24 msg par jour de moyenne alors qu'en réalité quand on regarde la stat c'est 2 msg/jour de moyenne.

Autre souci a cause de la déclaration de "maintenant" : si un membre s'inscrit après minuit, il est a 0 msg/heure si on regarde la stat le même jour et cela quelque soit le nombre de message qu'il postera (normale puisque ça s'arrète minuit)

Malgré avoir essayé pleins de choses y compris en regardant cet aide : http://www.toutestfacile.com/sql/cours_imprimables/SQLFacile.com-functdate.php5
impossible d'arriver a déclarer l'instant présent.

Voici le code de la mod':

<?php
//Choix de la période (jour, semaine, mois)
$periode = "jour";
switch($periode) {
case "jour" :
$interval = 86400;
break;
case "semaine" :
$interval = 86400 * 7;
break;
case "mois" :
$interval = 86400 * 30;
break;
default :
$interval = 86400;
$periode = "jour";
}
$sql = "SELECT u.id,u.username,
ROUND((u.num_posts/((Unix_Timestamp(CURRENT_DATE()
) - u.registered)/".$interval.")),6) AS Moyenne FROM ".$db->prefix."users AS u ORDER BY Moyenne DESC LIMIT 10";
$result = $db->query($sql)or error ('Erreur récupération Moyenne des posts', __FILE__, __LINE__, $db->error());
echo "<p><strong>Top 10 posteurs</strong><small><i> (Moyenne par ".$periode.")</i></small> : ";
while($top10_membre = $db->fetch_assoc($result)) echo '<a href="profile.php?id='. $top10_membre['id'] .'">'. $top10_membre['username'] .'</a> (<i>'. $top10_membre['Moyenne'] .'</i>), ';
?>

Dites moi svp par quoi je dois remplacer :
((Unix_Timestamp(CURRENT_DATE()))

godrik
godrik
Niveau 30
19 janvier 2009 à 16:47:47

la fonction ((Unix_Timestamp(CURRENT_DATE())) m'a l'air affreusement dependante de ton serveur de base de donnee.
cherche dans ta doc s'il n'y a pas quelque chsoe comme CURRENT_TIME

s1ms1d1us
s1ms1d1us
Niveau 6
19 janvier 2009 à 18:14:57

Ba je sais pas du tout. j'ai pu trouver que ça en rapport avec les dates :

date/time support enabled
Timezone Database Version 2006.14
Timezone Database internal
Default timezone Europe/Berlin

Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone no value no value

_SERVER["REQUEST_TIME"] 1232384964

Sinon généralement c'est quoi la syntaxe pour dire "en ce moment" en prenant en compte la date, les heures, les minutes, les secondes ?

godrik
godrik
Niveau 30
19 janvier 2009 à 19:53:22

apres trois seconde de recherche dans google. le serveur SQL est mySQL.
la documentation qui t'interesse est : http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
et la commande qui t'interesse doit etre NOW au lieu de CURRENT_DATE.

le meme probleme apparait sur oracle. Si tu demade la date, il te rend un timestamp date de minuit.

s1ms1d1us
s1ms1d1us
Niveau 6
19 janvier 2009 à 20:27:09

nan c'est pas ça il fallait utiliser CURRENT_TIMESTAMP()

Problème résolu;

godrik
godrik
Niveau 30
19 janvier 2009 à 21:11:26

Sur la page que je t'ai donne:

CURRENT_TIMESTAMP Synonyms for NOW()

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment