J'ai fais un petit forum où l'on peut poster des messages; et je voudrais que pour la date du message ça soit marqué il y a moins de ... minutes ou heure ou jour(comme sur Snapchat par exemple) ! Enfaite je fais une requête pour prendre la date et que ça soit marqué comme ci-dessus, mais le problème c'est que j'arrive pas à calculer temps msql moins le temps actuelle en php !
Mon code :
<?php
include 'bdd_connect.php';
$req = $bdd->prepare('SELECT * FROM annonce');
$req->execute();
while($data_req = $req->fetch())
{
$now_time = date_actuelle php - date mysql
echo "<p>Il y a moins de ".$now_time."</p>";
}
?>
Tu peux convertir les dates retournées par MySQL en objets DateTime de PHP. Ces objets disposent de méthodes pour être soustraits les uns aux autres, ce qui retourne un autre objet (de type DateTimeInterval) contenant la différence de temps, et cet autre objet peut être formaté pour afficher la durée. Il possède aussi diverses propriétés qui permettent de tester le temps écoulé.
Maintenant, tu peux aussi interroger la bdd sur ces différences. C'est super simple :
select champdate, DATEDIFF(champdate, CURDATE()) as differenece from matable
Tu as la date et la différence (en jours) entre la date du champ et l'actuelle.
Merci beaucoup pour vos aides ! Ca marche ! Mais le problème c'est je voudrais mettre il y a moins de heure/minutes aussi... Savez-vous comment faire ?
En PHP, tu pourrais vérifier si tu as des heures ou des jours et faire le formatage en fonction. C'est certainement possible aussi en SQL, mais je suis moins au fait des fonctions sur des durées (et celui qui propose des fonctions pour traiter des durées comme des dates, je lui offrirai de la confiture de mûres "pure framboises", vu que seule la couleur change, c'est la même chose aussi).
En PHP, tu pourrais vérifier si tu as des heures ou des jours et faire le formatage en fonction. C'est certainement possible aussi en SQL, mais je suis moins au fait des fonctions sur des durées (et celui qui propose des fonctions pour traiter des durées comme des dates, je lui offrirai de la confiture de mûres "pure framboises", vu que seule la couleur change, c'est la même chose aussi).
Ok merci ! Mais comment prendre une donnée de la bdd et voir si c'est une heure ou une minutes ?
Ben tu fais le calcul de différence, et tu regardes ce qu'il en est… Soit tu fais la différence en SQL, tu regardes comment c'est au niveau format (je crois me souvenir que c'est quelque chose comme HHH:MM:SS) et tu vérifies donc ce que tu as pour les heures, les minutes, etc., soit tu fais en PHP et tu regardes les propriétés de l'objet DateInterval, comme indiqué précédemment. Vraiment, si tu prends la version PHP, prends le temps d'aller regarder la documentation, s'il te plaît.
Merci pour tout vos renseignements ! J'ai fais mon code avec la fonction DateTime et ça me renvoie des choses bizarres... J'ai essayé mon petit bout de code en insérant un nouveau message dans la bdd et j'ai reçu 57 minutes puis après ça baisse alors que normalement ça devrai m'afficher juste 2 ou 3 minutes puis ça devrai augementer... Je ne comprend pas pourquoi...
Voici mon code
$req = $bdd->prepare('SELECT date_annonce, id FROM annonce ORDER BY date_annonce DESC LIMIT 0,1');
$req->execute();
while($data_date = $req->fetch())
{
$origin = date_create(date("Y-m-d H:i:s"));
$target = date_create($data_date['date_annonce']);
$interval = date_diff($origin, $target);
if($interval->format('%i%') <= "1")
{
echo "<p>Il y a moins de ".$interval->format('%i%')." minute</p>";
}
if($interval->format('%i%') <= "59" AND $interval->format('%i%') > "2")
{
echo "<p>Il y a ".$interval->format('%i%')." minutes </p>";
}
}
Je pense que tu as inversé les rôles de $origin et de $target.
Je trouve aussi que c'est plutôt alambiqué de créer la date du moment sous forme de chaîne puis de la faire analyser pour créer un objet, ligne 8. C'est un peu comme imprimer du texte pour le faxer au lieu d'envoyer un e-mail. Il serait plus pratique de créer directement un objet, non ? $laMemeChoseQueDansOrigin = new \DateTime();.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
gathergame.fr
gathergame.fr
gathergame.fr
gathergame.fr