Je suis actuellement le cours "concevez votre site web avec php et mysql".
Je suis au chapitre ou il faut créer un minichat jusque là tout va bien.
Le problème survient quand je veux insérer la date devant les messages poster.
Auriez vous une suggestion.
Par avances merci du temps que vous me consacrerez.
Tony
Code principale
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
<title>POGOFLY-TCHAT</title>
</head>
<style>
form
{
text-align:center;
}
</style>
<body>
<?php include("header.php"); ?>
<div id="bloc_page">
<form action="minichat_post.php" method="post">
<p>
<label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
<label for="message">Message</label> : <input type="text" name="message" id="message" /><br />
<input type="submit" value="Envoyer" />
<input type="button" onclick='window.location.reload(false)' value="Refresh" />
</p>
</form>
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// Récupération des 100 derniers messages
$reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_creation, '%d/%m/%Y %Hh%imin%ss') FROM minichat ORDER BY ID DESC LIMIT 0, 100');
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
while ($donnees = $reponse->fetch())
{
echo '<p><strong>' . htmlspecialchars($donnees['date_creation']) . ' - ' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
}
$reponse->closeCursor();
?>
</div>
<?php include("footer.php"); ?>
</body>
</html>
Methode POST
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO minichat (pseudo, message) VALUES(?, ?)');
$req->execute(array($_POST['pseudo'], $_POST['message']));
// Redirection du visiteur vers la page du minichat
header('Location: minichat.php');
?>
Je pense que le problème vient de votre requête où vous définissez le format de la date, si vous utilisez les mêmes quotes sans slashs cela vous créez des erreurs ainsi que vous ne donnez pas d'alias à date_format donc pas possible d'afficher la date. Essayez comme ceci :
$reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_creation, \'%d/%m/%Y %Hh%imin%ss\')AS date_creation_fr FROM minichat ORDER BY ID DESC LIMIT 0, 100');
while ($donnees = $reponse->fetch())
{
echo '<p><strong>' . htmlspecialchars($donnees['date_creation_fr']) . ' - ' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
}
Dans "Activez les erreurs" il est sous-entendu "merci de les fournir"...
La coloration de la ligne 42 devrait fournir un indice : on ne peut pas utiliser les mêmes délimiteurs (apostrophes ici) pour encadrer la requête et le format de la date sans les échapper.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.