Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1789 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème affichage date dans le module de news

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème affichage date dans le module de news

n°2180096
david214
Posté le 12-03-2013 à 22:07:12  profilanswer
 

Bonjour,
 
j'ai mis un module de news sur mon site, mais je rencontre un problème: Lorsque je rajoute une news la date affichée est le 31/12/1969 à 19h00.
Après plusieurs manipulations, j'ai toujours pas réussi à résoudre le problème. Je me tourne donc vers vous pour avoir une aide.  
 
Je vous transmet mon fichier news.html:

 
<?php        
   
mysql_connect("", "", "" ); //On se connecte à Mysql
mysql_select_db("" );// on selectionne la base  
   
// le nombre de news (3) qu'on veut afficher dans une page  
$MessagesPerPage = 3;    
// On récupère le nombre total de messages  
$return = mysql_query('SELECT COUNT(*) AS nb_messages FROM news');  
$data = mysql_fetch_array($return);  
$Messages = $data['nb_messages'];  
// On calcule le nombre de pages à créer  
$Pages  = ceil($Messages / $MessagesPerPage);  
// Puis on fait une boucle pour écrire les liens vers chacune des pages  
echo 'Page : ';  
for ($i = 1 ; $i <= $Pages ; $i++)  
{  
    echo '<a href="news.php?page=' . $i . '">' . $i . '</a> ';  
}  
   
// On récupère les 3 dernières news  
   
if (isset($_GET['page']))  
{  
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse ( exemple news.php?page=4)  
}  
else // si non la variable n'existe pas, c'est la première fois qu'on charge la page  
{  
        $page = 1; // On affiche la page 1, la page par defaut  
}  
   
$firstmessage = ($page - 1) * $MessagesPerPage;  
   
$result = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT ' . $firstmessage . ', ' . $MessagesPerPage);  
   
while ($data = mysql_fetch_array($result))  
{  
   
?>  
   
   
   
    <h2>  
       
       <?php echo stripslashes($data['titre']); //on recupère titre  ?>  
    </h2>    
   
       
   
<em> Ajouté le <?php echo date('d/m/Y à H\hi', $data['date']); //on recupère la date ?></em>  <BR>  
   
    <?php    
    $url = $data['url'];  
    // s'il n'y a l'url de l'image, on affiche le contenu  
if (empty($url))
   {    
   $contenu = nl2br(stripslashes($data['contenu']));  
    echo $contenu;  
   }  
else// sinon on affiche l'image puis le contenu  
{  
?>  
<img  alt="image de news" src="<?php echo $url ?>"/>  
 <?php    
   $contenu = nl2br(stripslashes($data['contenu']));  
    echo $contenu;    
}  
//Nous affichons le lien nous dirigeant vers les commentaires  
?>    
 <br/><em><a href="commentaires.html?news=<?php echo $data['id']; ?>">Commentaires</a></em>  
 <?php    
} // Fin de la boucle des news  
   
?>  
 
Voici mon fichier ajout_news.html:

 
<?php        
mysql_connect("", "", "" ); //On se connecte à Mysql
mysql_select_db("" );// on selectionne la base  
   
if (isset($_POST['titre']) && isset($_POST['contenu']))  
 {    
 $titre = addslashes($_POST['titre']);  
 $contenu = addslashes($_POST['contenu']);  
 $url = addslashes($_POST['url']);  
 //on verifie si le champ titre et le champ contenu ne sont pas vides  
if ($_POST['titre'] != NULL && $_POST['contenu'] != NULL )    
 {  
 //on balance tous dans la table  
mysql_query ("insert into news values    
('', '". $titre ."','". $contenu ."', '" .$url."', '" .time()."')" );  
 //on confirme l'envoie des données  
 echo"news ajouté.";  
 }  
else// sinon on affiche un message d'erreur  
 {  
echo"verifiez si le titre et le contenu ont été saisis.";    
 }  
   
 }  
 mysql_close();// on ferme la connexion  
   
?>      
 
 <form method="post" action="add_news.html">  
      Titre du news : <input name="titre"/><br/>  
       contenu :<br/>  
      <textarea name="contenu" rows="10" cols="45"> </textarea> <br/>  
   url de l'image : <input name="url"/><br/>  
       <input type="submit" value="Envoyer"/>  
</form>
 
Dans mon table, j'ai un champ date de type datetime. Par contre dans mon bdd, la date affiché c'est 0000-00-00 00:00:00
 
Voila, est-ce que vous pourriez m'aider à corriger cette problème?
 
Merci par avance,


Message édité par david214 le 12-03-2013 à 22:13:38
mood
Publicité
Posté le 12-03-2013 à 22:07:12  profilanswer
 

n°2180103
xaeon
Profil: TT
Posté le 12-03-2013 à 22:29:22  profilanswer
 

Attention lors de ton insertion en bdd tu utilises la fonction php time() qui renvoie un timestamp Unix (nombre de secondes écoulées depuis le 1er janvier 1970 00:00 GMT), si ton champ en base est de type datetime, il ne va pas comprendre et utiliser 0000-00-00 00:00:00.
 
De fait quand tu vas récuperer cette date pour l'afficher sur ta page de news avec la fonction date(), il va t'afficher l'heure correspondante au 1er janvier 1970 00:00 GMT sur ton fuseau horaire à toi, donc le 31/12/1969 19:00 si tu es à GMT +5

n°2180322
david214
Posté le 13-03-2013 à 21:42:11  profilanswer
 

Ah d'accord...
Comme je suis débutant tu pourrai m'aider? Je dois enlever complètement le time() ou je dois le remplacer par now ou... ?

n°2180336
xaeon
Profil: TT
Posté le 14-03-2013 à 00:03:43  profilanswer
 

Je pense que dans ta requète d'insert tu devrais avoir :

Code :
  1. mysql_query ("insert into news values   
  2. ('', '". $titre ."','". $contenu ."', '" .$url."', '" .date("Y-m-d H:i:s" )."')" );
 

Pour plus d'infos sur la fonction date() et ses paramètres : http://php.net/manual/fr/function.date.php

 

Ensuite pour l'affichage il faudra adapter car date() prend un timestamp comme second paramètre, donc cette partie de code sera à mettre en place pour l'affichage :

Code :
  1. <em> Ajouté le <?php echo date('d/m/Y à H\hi', strtotime($data['date'])); //on recupère la date ?></em>  <BR>
 

Enfin petite remarque, tu travailles avec des entrées utilisateurs que tu vas stocker et afficher, il faut faire très attention avec ce genre de données car tu pourrais vite te retrouver avec des comportements dangereux. Regarde du coté de la sécurisation des entrées utilisateurs et des requètes SQL (injection & co.), tu trouveras pas mal d'infos sur ces sujets.


Message édité par xaeon le 14-03-2013 à 00:06:45
n°2180599
david214
Posté le 14-03-2013 à 20:15:33  profilanswer
 

Ah ok... Merci de me l'avoir signalé. Je vais faire des recherche sur ca...
 
Sinon, je viens d'essayer avec la correction, et il semblerai que ca marche, il y a juste le problème de fuseau horaires, mais ca je peux le faire...
 
Une dernière question: vu que je met un formulaire de commentaire, est-ce que tu sais si je dois faire déclarer mon site à la CNIL? (Parce que la déclaration des sites personnels n'est plus obligatoire, mais je ne sais plus si je dois le faire pour les commentaires)?
 
Merci encore, pour m'avoir aidé et merci pour les remarques...


Message édité par david214 le 14-03-2013 à 20:16:28
n°2180621
xaeon
Profil: TT
Posté le 14-03-2013 à 21:42:38  profilanswer
 

Bonne question concernant la CNIL, je ne suis pas spécialiste mais je dirais que tant que tu n'as pas d'information personnelles sur la personne qui poste le commentaire (email par exemple), tu peux t'en passer, dans le cas contraire j'aurai tendance à dire que c'est nécessaire mais tu trouveras des personnes ici mieux documentées que moi.

n°2180726
david214
Posté le 15-03-2013 à 13:59:14  profilanswer
 

Ok, très bien...
 
Merci en tout cas pour tout, tu m'a vraiment débloqué... et merci aussi pour les remarques...  
Pour la CNIL, ok, je vais faire des recherche, ou au pire des cas, je prendrai contact directement avec eux...
 
merci,


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème affichage date dans le module de news

 

Sujets relatifs
Problème pour modifier une fonctionprobleme d' erreur synthaxique sur Python
Problème d'exécution de QT [résolu]problème affichage image dans package
Probleme fonction non trouvée [R]Probleme alias/where
problème éclipse et les variables d'environementProblème avec htaccess et une expression régulière..
Appel de fonction dans fonction : PROBLEME! 
Plus de sujets relatifs à : Problème affichage date dans le module de news


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR