pb d'affichage d'une heure à partir d'un champ datetime

Eléphanteau du PHP | 20 Messages

26 oct. 2005, 14:53

Bonjour,

J'ai beau rechercher sur le forum je ne trouve pas pourquoi mon code n'affiche pas ce que j'attends. J'ai utilisé le tutoriel de minichat du site du zéro en ajoutant quelques petits trucs, notamment l'affichage de la date et l'heure.

ma requête est la suivante

Code : Tout sélectionner

mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message',NOW())");
ensuite pour l'affichage je fais:

Code : Tout sélectionner

$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,20"); $donnees = mysql_fetch_array($reponse) $datepost = $donnees['datepost']; $heurepost = date("H:i",$datepost); echo "Le ".$datepost." à ".$heurepost
Mais à l'affichage j'ai toujours la même heure qui s'affiche: 01:33 (c'est l'heure à laquelle j'ai créé mon fichier)

Je suis persuadée que la solution est toute simple mais là je ne comprends pas ce qui se passe.

Merci de votre aide

Isa

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 oct. 2005, 14:56

As-tu testé ta requête dans PHPMyAdmin ? Que renvoie-t-elle ? (autrement dit que contient $donnees ?)

D'autrepart, je ne comprends pas ce que tu veux ?
Voici ce que j'ai cru comprendre :
* tu vas chercher un timestamp dans ta BDD
* tu veux afficher l'heure en format heure:minute au lieu du timestamp
* tu n'as qu'un seul timestamp dans ta base, et c'est toujours le mm...
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 20 Messages

26 oct. 2005, 15:01

merci de ta réponse.

dans ma bd, le contenu du champ est correct par ex:
2005-10-26 14:30:26
2005-10-26 14:45:12

je voudrais que mon code affiche (en fonction de cet exemple)
Le 26/10/2005 à 14:30
Le 26/10/2005 à 14:45

Or le résultat que j'obtiens est toujours
Le 26/10/2005 à 01:30
Le 26/10/2005 à 01:30

et je ne comprends pas pourquoi

merci

Isa

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 oct. 2005, 15:07

Tu peux utiliser ceci :
<?php 
$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,20"); 
$donnees = mysql_fetch_array($reponse) 
$datepost  = $donnees['datepost'];

$datepost = substr($d,8,2)."/";        // jour 
$datepost = $datepost.substr($d,5,2)."/";  // mois 
$datepost = $datepost.substr($d,0,4). " à "; // année 
$datepost = $datepost.substr($d,11,5);     // heures et minutes 

echo $datepost;

} 
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 oct. 2005, 15:29

sinon tu peut formater directement depuis la requete:
$reponse = mysql_query('SELECT DATE_FORMAT(datepost,"%d/%c/%Y \à %H:%i") as date_form FROM minichat ORDER BY ID DESC LIMIT 0,20');
$donnees = mysql_fetch_array($reponse)
$datepost  = $donnees['date_form'];
echo "Le ".$datepost; 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 20 Messages

26 oct. 2005, 15:30

merci beaucoup charabia ça marche comme ça
(j'ai du rajouter

Code : Tout sélectionner

$d = $datepost;
mais sinon ça fonctionne)

cependant j'aimerais bien savoir ce qui clochait dans mon code précédent...

Isa

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 oct. 2005, 15:52

cependant j'aimerais bien savoir ce qui clochait dans mon code précédent...
Isa
Le probleme vennait du fait que tu utilise la fonction date() de php avec une date et non un timestamp.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 20 Messages

26 oct. 2005, 15:59

oui j'aurais du m'en douter

merci, voilà une réponse claire.

c'était tellement évident que je ne le voyais pas :wink:

à bientôt,

Isa

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 oct. 2005, 16:09

merci beaucoup charabia ça marche comme ça
(j'ai du rajouter

Code : Tout sélectionner

$d = $datepost;
mais sinon ça fonctionne)

cependant j'aimerais bien savoir ce qui clochait dans mon code précédent...

Isa
Oups voui, un oubli de ma part :)