Format date affichage [Résolu]

- - Dernière réponse :  omlaly - 19 févr. 2013 à 10:48
Bonjour,

J'ai enregistré la date en SQL avec comme type DATETIME. Tout marche, simplement la date s'affiche sous la forme AAAA-MM-JJ.

J'aimerais qu'elle s'affiche sous la forme française JJ-MM-AAAA. Si possible, si c'est le jour même, qu'elle affiche "Aujourd'hui', si c'est le jour j-1, qu'elle affiche "Hier", etc...

Comment il faut faire ?

En attendant vos réponses, je continue mes recherches...
Cordialement
Afficher la suite 

Votre réponse

20/24 réponses

Meilleure réponse
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
3
Merci
Comme déjà dit, c'est pas juste une idée, c'est la solution que j'ai.
Et après tes "recherches" j'ai envie d'être vieux-jeu et te répondre : RTFM !

* Première solution : la fonction PHP date()
Pas un seul instant tu n'as dû aller voir la fiche de cette fonction, peut-être te serais-tu demandé si une date sortie de MySQL avait bien le format attendu pour le paramètre (càd timestamp UNIX).

* Deuxième solution : la fonction MySQL DATE_FORMAT()
Comment as-tu réussi à ne pas la faire fonctionner dans ton cas, bonne question.
As-tu simplement lu la fiche de la fonction ? Je ne pense pas, autrement tu n'aurais plus de problème de formatage.

* Autres solutions : différentes contribution du net au PHP
"j'ai vu qu'il fallait utiliser des fonctions comme ..." sauf que tu n'as pas regardé à quoi servaient ni comment fonctionnaient lesdites fonctions. Tu ne cherches même pas à comprendre les codes que tu pompes dans la plupart des cas. D'une ça a peu de chance de marcher, de deux c'est pas comme ça que tu arriveras à progresser. Et comme tu ne creuses pas tu cherches d'autres réponses (que tu n'arriveras pas plus à mettre en place) qui t'amènes à des solutions qui te dépassent (les expressions régulières, la gestion du code obsolète ...).

Voilà une fonction que j'ai codée et testée en 20 minutes chrono, recherche d'info comprise vu que je donne pas dans le PHP :
function jolieDate($dt) {
// on met la date au bon format
$sdate = date("d/m/Y",strtotime($dt));
// on cherche la date +1 jour
$odateP1 = new DateTime($dt); $odateP1->add(new DateInterval("P1D"));
$sdateP1 = $odateP1->format("d/m/Y");
// on note la date du jour
$snow = date("d/m/Y");

// on regarde si c'est aujourd'hui
if ($jodate == $jonow) return "ajourd'hui";

// on regarde si c'est hier
else if ($jodateP1 == $jonow) return "hier";

// sinon on balance direct
else return $obdateP1->format("d/m/Y");
}

Elle est commentée pour que tu la comprennes (j'émets des doutes).
Ne me demande pas comment l'intégrer, démerde toi.
N'attends plus jamais d'aide de ma part.

Merci cs_jopop 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_jopop
0
Merci
Bonjour,

Je vous met le code du système de pagination pour que vous y voyez un peu plus clair :
    <?php
$query_categorie mysql_query("SELECT titre_article, texte_article, date_depot, auteur_article FROM articles WHERE nom_categorie 'categorie' AND nom_village = 'nnn'") or die('Erreur lors de la requête SQL de la catégorie "nom categorie" d\'nom village'.mysql_error()); // Envoie une requête à un serveur MySQL
if(mysql_num_rows($query_categorie) != 0){ // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL

$messagesParPage=5; // Nombre de messages affichés par pages

$retour_total=mysql_query('SELECT COUNT(*) AS id_article FROM articles WHERE nom_categorie = "categorie" AND nom_village = "village"')  or die ('Erreur sur la requête SQL concernant le calcul du nombre d\'articles concernant le village d\'nom village et la catégorie "nom catégorie"'.mysql_error()); // Envoie une requête à un serveur MySQL -  Récupération du contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); // Rangement de $retour_total sous la forme d'un tableau

$total=$donnees_total['total']; // Récupération du total pour le placer dans la variable $total

// Comptage du nombre de pages
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else
{
     $pageActuelle=1; // La page actuelle est la n°1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // Calculer la première entrée à lire

// La requête SQL pour récupérer les messages de la page actuelle

$retour_messages=mysql_query('SELECT * FROM articles WHERE nom_categorie = "nom categorie" AND nom_village = "nom du village" ORDER BY id_article DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'') or die ('Erreur sur la requête SQL concernant le nombre d\'articles concernant le village d\'dnn et la catégorie "nom_categorie"'.mysql_error()); // Envoie une requête à un serveur MySQL

while($donnees_messages=mysql_fetch_assoc($retour_messages)) { // Lecture des entrées une à une grâce à une boucle

     // Affichage des messages avec le design
     // nl2br : Insère un retour à la ligne HTML à chaque nouvelle ligne - pour prendre en compte les sauts de ligne dans le message.
     echo ''.nl2br($donnees_messages['titre_article']).',

----

'.nl2br($donnees_messages['texte_article']).',

----

<small>Posté par : '.(stripslashes($donnees_messages['auteur_article']).' le '.($donnees_messages['date_depot'])).'</small>

';
    // Ajout des sauts de ligne pour espacer les messages (
)  

}

echo 'Page : '; // Centrer la liste des pages pour l'affichage
for($i=1; $i<=$nombreDePages; $i++) // Boucle
{
     // Condition
     if($i==$pageActuelle) // S'il s'agit de la page actuelle
     {
         echo ' [ '.$i.' ] '; 
     }	
     else
     {
          echo ' [adresse.php?page='.$i.' '.$i.'] ';
     }
}
echo '

';
}


Là où vous voyez
'.($donnees_messages['date_depot'])).'
dans le code précédent, actuellement ça affiche par exemple
2013-02-17 20:24:18
au format anglophone. J'aimerais, pour cet exemple, que ça l'affiche au format français c'est-à-dire
17-02-2013
.

A noter que cette date est issue d'une base de données MySQL.

J'ai essayé de faire ça mais il faut que ça prenne la date dans la base de données MySQL, je vous met le code :
<td align="right">
<small> Posté par :  '.(stripslashes($donnees_messages['auteur_article']).' le '.($donnees_messages['date_depot'])).$donnees_messages['date_depot']  = explode('-',$donnees_messages['date_depot']);
echo $donnees_messages['date_depot'][2],'/',$donnees_messages['date_depot'][1],'/',$donnees_messages['date_depot'][0];'</small> </td></tr>


Quand j'essaye, ça me met :
 2013-02-17 20:24:18Array17 20:24:18/02/2013


Comment faire pour que ça prenne la date et l'heure dans la base de données (dans ce cas :
2013-02-17 20:24:18
) et l'afficher au format français :
17-02-2013 20:24:18
?

En attendant vos réponses, je continue mes recherches...
Cordialement
Commenter la réponse de omlaly
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
0
Merci
Salut,

il faut traiter $donnees_messages['date_depot'] avant de l'afficher. Une petite recherche sur le net te donnera rapidement la fonction de formatage, et les fonctions utiles pour comparer ta date à celle du jour et ainsi afficher "hier" et "aujourd'hui".
Tu n'auras aucun code de ma part, tu passes plus de temps à retranscrire ton code ici qu'à rechercher les solutions.
Commenter la réponse de cs_jopop
0
Merci
Bonjour,

Je te mets le code que j'ai essayé :
<td align="right">
<small>Posté par : '.(stripslashes($donnees_messages['auteur_article']).' le '.date("d/m/Y H:i:s ",$donnees_messages['date_depot']));'</small> </td></tr>


Voici le résultat :
 le 01/01/1970 01:33:33


C'est le TIMESTAMP.

au lieu de :
le 17/02/2013 20:00:00


Je recherches, qu'est-ce que tu crois ?
Cordialement
Commenter la réponse de omlaly
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
0
Merci
Tu viens juste de chercher, sinon tu aurais posé la question avec ce code (le précédent étant inutile).
Je rappelle que je connais peu le PHP, j'ai trouvé la solution en ayant cherché moins de 10 minutes.
Bonne chance pour le reste de tes codes.
Commenter la réponse de cs_jopop
0
Merci
Ce n'est pas vrai.

Partage la alors si tu la trouvé !

Je continue mes recherches...
Cordialement
Commenter la réponse de omlaly
0
Merci
J'ai trouvé ça sur un site mais je n'arrive pas à l'exploiter :
mysql_query("SET lc_time_names = 'fr_FR'");
$req = mysql_query("SELECT DATE_FORMAT(date_depot, '%W %d %M %Y à %Hh%i') as date_fr FROM articles");
while($dat = mysql_fetch_assoc($req))
echo $dat['date_fr'].'
';


Je continue de chercher...
Cordialement
Commenter la réponse de omlaly
0
Merci
J'ai vu qu'il fallait utiliser les fonctions PHP, j'ai vu qu'il fallait utiliser les fonctions PHP comme
explode()
ou
substr()
.

De plus, j'ai vu qu'il fallait utiliser les tableaux (
array
) pour gérer les mois.

Le problème, c'est que je n'arrive pas à l'intégrer dans mon code.

Peux-tu m'aider STP ?

En attendant vos réponses, je continue mes recherches...
Cordialement
Commenter la réponse de omlaly
0
Merci
Cette fois, il ne faut pas me dire que je n'ai pas cherché ! J'ai trouvé, sur ce site notamment, plusieurs fonctions qui permettent de transformer un DATETIME en format français mais je n'arrive pas à l'implémenter sur mon site. Je m'explique : il faut que je fasse un test sur
$donnees_messages['date_depot']
. Ce n'est pas une variable comme les autres, c'est une variable qui va chercher le bon champs dans la base de données donc tous les tests que j'ai effectué sur cette variable n'ont pas fonctionnés.

Si quelqu'un pourrait me mettre sur la voix en prenant en compte le code du système de pagination que j'ai posté ci-dessus, ce serait avec plaisir !

En attendant vos réponses, je continue mes recherches...
Cordialement
Commenter la réponse de omlaly
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
0
Merci
Imagine que je ne t'aide plus qu'une seule fois, est-ce que tu veux que ce soit pour un simple formatage de date ?
Commenter la réponse de cs_jopop
0
Merci
Ce serait avec plaisir mais ne crois pas que je ne cherche pas.

En fait, je poste sur le forum, je recherche sur le net, dès que j'avance je poste sur le forum comme j'ai fait là : http://www.sqlfr.com/forum/sujet-PROBLEME-ACCENTS_1626984.aspx .

Cordialement
Commenter la réponse de omlaly
0
Merci
Je te montre l'exemple type :
J'ai trouvé cette fonction :
function dateConv($value,$delimiter) {

$final = strftime('%d'.$delimiter.'%m'.$delimiter.'%Y %T', strtotime($value));

print_r($final);

}


Mais mon problème, c'est quand j'essaye avec la variable
$donnees_messages['date_depot']
, ça ne fonctionne pas car il croit que ce n'est pas une variable (car il y a des crochets). Et je ne vois pas quoi changer...

Cordialement
Commenter la réponse de omlaly
0
Merci
Second exemple :

Quand je met le code suivant :
$date = '2000-12-31'; 

ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $params); 
print "
".$params[3]."-".$params[2]."-".$params[1]; 


Voici le résultat (ça met une erreur mais ça fonctionne) :
Deprecated: Function ereg() is deprecated in /chemin/monumentavisiter.php on line 55

31-12-2000


Quand je met le code suivant (avec
$donnees_messages['date_depot']
)
$date = $donnees_messages['date_depot']; 

ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $params); 
print "
".$params[3]."-".$params[2]."-".$params[1]; 


Voici le résultat :
Deprecated: Function ereg() is deprecated in /chemin/monumentavisiter.php on line 55

--


Ce qui me fait dire que c'est la variable
$donnees_messages['date_depot']
qui pose problème. Mais, je ne sais pas comment le gérer.

As-tu une idée ?

Cordialement
Commenter la réponse de omlaly
0
Merci
Ce n'est pas vrai ce que tu dis.

Une dernière question : comment intégrer cette fonction ?

Cordialement
Commenter la réponse de omlaly
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
0
Merci
Avoue, tu te fous de ma gueule.
Commenter la réponse de cs_jopop
0
Merci
Non, dis-moi et je te laisse tranquille

Cordialement
Commenter la réponse de omlaly
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
0
Merci
jolieDate($donnees_messages['date_depot']);
Commenter la réponse de cs_jopop
0
Merci
Merci, ça marche !

Désolé de t'avoir envahi de questions mais aujourd'hui j'étais un peu fatigué !!!

A la prochaine...
Cordialement
Commenter la réponse de omlaly
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
0
Merci
Désolé aussi de mon humeur, j'ai masse de fièvre depuis quelques jours à cause d'une méchante grippe.
Mais le fond de message reste vrai : pense à creuser avant de demander de l'aide.

Tant qu'il ne s'agit pas de Java () tu trouveras toujours très facilement un réponse existante sur le net si tu sais faire la démarche de recherche. C'est ce qui m'a permis, par exemple, de pouvoir te répondre dans un langage que je ne connais pas. C'est ça aussi qu'un employeur saura apprécier d'un développeur.

Toutefois ma dernière assertion reste vraie : je ne t'aiderai plus, si ce n'est avec des man (fiches de fonction).
Commenter la réponse de cs_jopop
0
Merci
Ce qui est vrai, c'est que je cherche et en parallèle je poste sur le forum. Si j'avance, je vous tiens au courant.

Regarde sur ce lien : http://www.sqlfr.com/forum/sujet-PROBLEME-ACCENTS_1626984.aspx , il y a personne qui m'a répondu et j'y suis arrivé .

Jusqu'à la prochaine fois !!!

Cordialement
Commenter la réponse de omlaly

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.