[REGLE]Mauvaise date et Mauvaise heure timestamp

Eléphant du PHP | 54 Messages

25 janv. 2006, 21:10

Bonsoir,
en fait, tout est dans le titre. j'ai créé une table dans laquelle le timestamp est de type bigint (20) et 0 en défaut.
Le problème, c'est que la date et l'heure affichée sont celles de référence (le 1er janvier 1970 à 01h00 !).
Quelqu'un a une idée ?
merci d'avance.
Modifié en dernier par ratdelabo le 26 janv. 2006, 13:33, modifié 1 fois.

Mammouth du PHP | 19672 Messages

25 janv. 2006, 21:20

Sans voir de code, difficile de trouver un bug :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 54 Messages

25 janv. 2006, 21:23

Voici le code de la page dans laquelle doit s'afficher l'heure:
	  <div id="haut">
	  <h1>Les news sur Objectif SVT</h1>
	  </div>
	  <div id="contenu">
	  <div id="texte">
	  <?php
// On récupère les 5 dernières news
$retour = mysql_query('SELECT * FROM news WHERE valide = "1" ORDER BY id DESC LIMIT 0, 5',mysql_connect("****", "****", "****"));
while ($donnees = mysql_fetch_array($retour,MYSQL_ASSOC)) 
{
?>
<div class="news">
        <div class="titre">
        <?php echo $donnees['titre']; ?></div>
        <div class="ecrit_par">
		par <em><?php echo $donnees['pseudo'] ?></em> le <?php echo date('d/m/Y \à H\hi', $donnees['timestamp']); ?>
		</div>
                
        <div class="contenu_news">
		<?php
        //On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
        $contenu = nl2br(stripslashes($donnees['contenu']));
        echo $contenu;
        ?>
        </div>
</div><br />

<?php
}  // Fin de la boucle des news
?>

	  </div>
	  </div>
J'ai choisi le timestamp dans ma bdd mais il s'agit d'un simple système de news. Ne devrais-je pas utiliser plutôt un VARCHAR ou un type TEXT ?

Mammouth du PHP | 19672 Messages

25 janv. 2006, 21:29

E pourquoi pas tout simplement un type DATETIME ? Il me semble que ce serait particulièrement approprié et ça t'ouvre toutes les possibilité de fonctions SQL intégrées pour les tris sur date et heures, tu ne crois pas ?

Bon, il faudrait la reformater pour l'avoir dans le bon ordre puisque dans MySQL, ça enregistre au format aaaa-mm-jj hh:mn mais avec une petite expression régulière, on transforme ça au format jj/mm/aaaa hh:mn en une ligne de code.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 54 Messages

25 janv. 2006, 21:32

Je ne suis pas un expert et trouve ça plutôt compliqué lol

Mammouth du PHP | 19672 Messages

25 janv. 2006, 21:44

Ben suffit de demander, c'est pas si compliqué que ça, suffit de s'y mettre un jour. Voilà un exemple fonctionnel :
<?php
$date_mysql = "2005-12-08 12:47:57";
$masque = "#(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})#";
$remplacement = "$3/$2/$1 $4H$5";
$date_fr = preg_replace($masque, $remplacement, $date_mysql);
echo("<p>". $date_fr ."</p>");
?>
Ce bout de code va afficher :
08/12/2005 12H47
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: