Probleme date -PHP-Mysql

Résolu/Fermé
BlackYoup - Modifié par BlackYoup le 2/09/2011 à 15:38
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 - 28 mai 2016 à 20:39
Bonjour a tous

déja, excusez moi si c'est dans la mauvaise section (par raport a mysql)...

voila, je debute en programmation, dans le php enfait. Apres avoir suivi le tuto qui est sur le site du zero, j'ai quand meme un probleme et je n'ai pas trouver la réponse la-bas :(


je vais vous decrire vite fais ce qui bloque:

j'ai voulu mettre un petit systeme de commentaires, avec des champs a remplir (auteur, le sujet, le texte), je le poste, tout va bien, il s'affiche bien, mais, je demande aussi a php de me recuperer l'heure pour qu'il affiche la date et l'heure a laquelle ca a été posté.

Malheuresement, ca me met: posté le 00/00/0000 a 00h00

apres quelques recherches, je n'ai pas tellement compris ce qu'il fallait faire, comme je debute juste, je voyais des fonctions que je ne connaissais pas et que je ne savais pas utiliser :/


je me tourne donc vers vous, si vous aviez une idée de comment résoudre ce probleme :)

vous allez surement me demander des infos plus precises, mais, je ne pas sais quoi, j'essayerais de vous repondre le plus rapidement possible ;)

merci a mes futurs sauveurs ^^



A voir également:

8 réponses

Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
2 sept. 2011 à 15:38
Et bien pour faire simple, sans ton code on saura pas te dire ce qui ne va pas dedans =)

Pour le coller, utilise la balide "code" (le bouton avec <> écris dessus). Comme ça, ça respecte l'indentation, et c'est lisible.
0
ok, jme doutais bien un peu de ca

merci de m'avoir répondu si vite !!

voila le code de ma page qui me sert a récuperer les commentaires + a la fin, les champs pour en créer

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Commentaire</title> 
<link href="css/commentaire.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 

<?php 
 include('banniere.php'); 
 include('menu.php'); 
 include('news.php'); 
 ?> 

<div class="date"> 

<?php include('date.php'); ?> 

</div> 

<div id="corps"> 
 <h1>Vos commentaires</h1> 
<?php 
// Connexion à la base de données 
try 
{ 
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; 
    $bdd = new PDO('mysql:host=localhost;dbname=site', 'root', '', $pdo_options); 
  
    // On récupère les 10 derniers billets 
    $req = $bdd->query('SELECT id, titre, auteur, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billets ORDER BY date_creation DESC LIMIT 0, 20'); 
     
    while ($donnees = $req->fetch()) 
    { 
    ?> 
<div class="messages"> 


        <h3> 
        
        <em>le <?php echo $donnees['date_creation_fr']; ?> 
        posté par <?php echo $donnees['auteur']; ?> </em><br /> 
        <?php echo htmlspecialchars($donnees['titre']); ?> 
        </h3> 
         
        <p> 
        <?php //contenu du commentaire 
  echo nl2br(htmlspecialchars($donnees['contenu'])); ?> 
        <br /> 
        </p> 
 </div>        

  <?php 
    } // Fin de la boucle des billets 
    $req->closeCursor(); 
     
} 
catch(Exception $e) 
{ 
    die('Erreur : '.$e->getMessage()); 
} 
?> 
</div> 

<div id="post"> 
       

<form action="post_commentaire.php" method="post"> 
        <p> 
        <label for="auteur">Votre nom</label> : <input type="text" name="auteur" id="auteur" /><br /> 
        <label for="titre">Titre</label> : <input type="text" name="titre" id="titre" /><br /> 
       <textarea name="contenu" rows="8" cols="45" ></textarea><br /> 
         
   
       

        <input type="submit" value="Poster" /> 
 </p> 
    </form> 

</div> 
 <?php 
 include('pied_de_page.php'); 
 ?> 

</body> 
</html> 


et voila la page qui se charge de transmettre tous ca a mysql:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Document sans titre</title> 
</head> 
<body> 
<?php 
// Connexion à la base de données 
try 
{ 
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; 
    $bdd = new PDO('mysql:host=localhost;dbname=site', 'root', '', $pdo_options); 
  
 // Insertion du commentaire à l'aide d'une requête préparée 
 $req = $bdd->prepare('INSERT INTO billets (titre, auteur, contenu) VALUES (?,?,?)'); 
 $req->execute(array($_POST['titre'], $_POST['contenu'], $_POST['auteur'])); 
  
 // Redirection du visiteur vers la page 
    header('Location: commentaire.php'); 
} 
catch(Exception $e) 
{ 
    die('Erreur : '.$e->getmessage()); 
} 
?> 
</body> 
</html> 


il vous faut aussi la base de donnée ??

ma table s'apelle "billets" dedans, il y a:

id(int11) clé primaire, auto_increment
auteur: varchar(255)
titre: varchar(255)
contenu: text
date_creation: datetime

tous avec "non" dans la colone null ainsi que dans défaut, toute ont "aucun"

j'espere avoir tous mis, n'hesitez pas a me redemander, a critiquer le code etc... !! je debute ;)

encore merci !
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
2 sept. 2011 à 15:50
Yop,

Comment tu veux rentrer ta date dedans avec cette requête?
$req = $bdd->prepare('INSERT INTO billets (titre, auteur, contenu) VALUES (?,?,?)');


Y'a la fonction time() ou date() qui peux t'interresser. Cherche un tour sur le man de Php. Mais je crois bien que sur le SDZ y'a un passage du cours il ou parle du timestamp. C'est exactement ça qu'il te faut :)
0
encore merci !!


je me doutais bien qu'il fallait une fonction de ce genre. sur le sdz, ils parlent du timestap mais, surtout dans des cookies...

et, apres plusieurs test, je ne vois pas du tout comment integrer time () ou date() dans cette fonction. En fait, je ne la comprend meme pas quand j'integre ca :S

ca ressemblerais a ca ??
 $req = $bdd->prepare('INSERT INTO billets (titre, auteur, contenu, date()) VALUES (?,?,?)'); 
?? (evidement, ca me retourne une erreur ^^)

si tu pouvais me donner un petit coup de pouce stp ^^

encore merci d'avoir répondu aussi vite !
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
2 sept. 2011 à 16:29
C'est loin pour moi, mais fait:
echo date();


Tu en déduis donc que:
$date = date();
 $req = $bdd->prepare('INSERT INTO billets (titre, auteur, contenu, date) VALUES (?,?,?,?)'); 
$req->execute(array($_POST['titre'], $_POST['contenu'], $_POST['auteur'], $date)); 


ça doit s'approcher de ce que tu veux.

y'a plus qu'à utiliser le cours sur le timestamp pour faire apparaitre la date sous le bonne forme une fois extraite de la BDD pour l'afficher =)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bissdebrazza Messages postés 2065 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
2 sept. 2011 à 16:30
Bonjour,
ce lien peut t'aider.
Cdt
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
Modifié par avion-f16 le 2/09/2011 à 18:22
Salut,

La fonction date() requiert un argument, une chaine indiquant le format.
Tu peux utiliser la fonction SQL NOW() afin d'insérer la date "actuelle".

$sql  = 'INSERT INTO billets ';
$sql .= '   (titre, auteur, contenu, date_creation) ';
$sql .= 'VALUES ';
$sql .= '   (?,?,?,NOW())';

$req = $bdd->prepare($sql);
$req->execute(array(
    $_POST['titre'],
    $_POST['contenu'],
    $_POST['auteur']
));

La pensée mène le monde.
0
merci a vous deux, j'ai pris l'option de apatik qui me parlais plus ;)

et ca marche niquel !!

sauf un probleme (evidement hein ^^)
l'heure qui est indiquée a 2h de retard

pour l'heure que je fais afficher sur le site, j'ai reussi a ajouter 2 a la valeur $heure

mais, la, apres plusieurs essais, je ne sais pas ou le mettre. Si il y a une autre solution, je suis preneur, mais, encore un grand merci a vous deux ;)
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 sept. 2011 à 18:23
La fonction date() utilisée par le code de Apatik permet d'obtenir une chaine à partir d'un timestamp (actuel si pas précisé).
Mais un argument est obligatoire : une chaine indiquant le format de sortie.

« $date = date(); » n'est donc pas valide.

Les champs « DATETIME » requièrent le format suivant : AAAA-MM-JJ HH:MM:SS
0
j'ai écrit ceci dans mon formulaire:
$date = date("Y-m-d-H-i-s");
$req = $bdd->prepare('INSERT INTO billets (titre, auteur, contenu, date_creation) VALUES (?,?,?,?)');
	$req->execute(array($_POST['titre'], $_POST['contenu'], $_POST['auteur'], $date));


puis, mis en forme dans cette requete pour afficher:
$req = $bdd->query('SELECT id, titre, auteur, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh %imin %ss\') AS date_creation_fr FROM billets ORDER BY date_creation DESC LIMIT 0, 10');


ca marche, mais c'est quand meme bon ?? Je recherche tous simplement le moyen d'ajouter +2 a l'heure pour qu'elle soie bonne car, pour un message posté a 19h20 heure francaise, cela affiche 17h20 ...

merci !
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 sept. 2011 à 19:41
« $date = date("Y-m-d-H-i-s"); » : ce n'est pas le format correct.
Utilise plutôt la fonction SQL NOW(), elle se chargera d'inscrire la date au bon format, ça évite du code PHP supplémentaire.

https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/915206-les-dates-en-sql
0
Génial !! je ne m'en souvenais plus !!

merci beacoup, ca marche niquel ;)

merci a tous !!
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 1
28 mai 2016 à 20:39
merci
0