Ajouter la date et l'heure pour mini tchat.

Fermé
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 - 23 mars 2013 à 17:03
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 - 26 mars 2013 à 11:12
Bonjour a tous,
je rencontre un petit problème avec un formulaire PHP pour afficher une mini tchat.
J'aimerais que l'on vois la date et l'heur a la quelle les messages on etait envoyé, comment faire ?

Voici le code du fichier minichat.php :
<?php setcookie('pseudo', time() + 365*24*3600, null, null, false, true); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Mini-chat</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
 
	     <style>
    form
    {
        text-align:center;
    }
    </style>

	 
    <form action="minichat_post.php" method="post" >
        <p>
        <label for="Pseudo">Pseudo</label> : <input type="text" name="Pseudo" id="Pseudo" /><br />
        <label for="Messages">Message</label> :  <input type="text" name="Messages" id="Messages" /><br />
 
        <input id="envoyer" type="submit" value="Envoyer" />
    </p>
    </form>
 <div id="tchatbox">
<?php
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=NOM_BASE_DE_DONNE', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
// Récupération des 10 derniers messages
                        
$reponse = $bdd->query('SELECT Pseudo, Messages FROM minitchat 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><center><strong>' . htmlspecialchars($donnees['Pseudo']) . '</strong> : ' . htmlspecialchars($donnees['Messages']) . '</center></p>';
}
 
$reponse->closeCursor();
 
?>
</div>

    </body>
</html>


Et le code du fichier minichat_post.php :
<?php
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=NOM_BASE_DE_DONNE', '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 minitchat (Pseudo, Messages) VALUES(?, ?)');
$req->execute(array($_POST['Pseudo'], $_POST['Messages']));
 
// Redirection du visiteur vers la page du minichat
header('Location:minichat.php');
?>


Dans ma base de donnée, j'ai une table contenant :
ID
Messages
Pseudo
Merci d'avance a celui qui sauras me répondre :)
A voir également:

26 réponses

dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
Modifié par dugenou le 24/03/2013 à 09:33
Bien sûr que si.

Si tu lis bien ce qui est dit dans le message du 6 février 2006, il faut déclarer la variable $date = Date("d/m/Y H:i:s");

puis il faut l'insérer à la base de données.

Dans l'exemple du message du 6 février 2006 :

$sql="INSERT INTO table (id,prenom,nom,commentaire,date)VALUES('$id',$'prenom','$nom','$commentaire','$date')";

Cette variable $date utilise la fonction date()
http://www.php.net/manual/fr/function.date.php

Elle est automatiquement mise à jour à chaque nouveau message, il n'y a donc pas à l'insérer au formulaire, en revanche, il faut ensuite la traiter comme les autres variables ($pseudo et $message) et l'insérer à la base de données de la même manière.
2
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 09:02
Bonjour,

Il me semblait bien que le sujet avait été déjà abordé sur ce forum :

https://forums.commentcamarche.net/forum/affich-2075644-date-heure-php

Ceci devrait répondre à ta question.
1
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 09:08
Bonjour,
j'ai deja vu, mais ce n'es pas se que je veux, se que je veux, c'est afficher la date et heure a la quelle les messages on était posté.
Je ne suis pas un pros en PHP, je débute ^^
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 09:20
Si tu ajoutes la variable $date en même temps que ta variable $message, il y aura la date et l'heure auxquelles le message a été posté.
0

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

Posez votre question
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 09:21
Il n'y as rien a ajouter dans le code de la tchat et la base de donnée ?
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 09:42
Peut tu me dire que dois-je mettre comme nouvelle table, et quelle code a mettre ( complet )
Désolé si j'en demande beaucoup, mais je suis vraiment débutant en PHP.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 10:15
Il ne faut pas ajouter de nouvelle table, il faut seulement ajouter un champ Date en Type "varchar" dans ta table minichat.

Il faut d'abord déclarer la variable $date dans le fichier minichat_post.php :

$date = Date("d/m/Y H:i:s");

et ensuite l'insérer à ta table :

// Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO minitchat (Pseudo, Messages, Date) VALUES(?, ?)');
$req->execute(array($_POST['Pseudo'], $_POST['Messages'], $_POST['Date']));

Mais ceci est déjà expliqué dans le message du 6 février 2006.
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 10:29
Ok, par contre je n'arrive pas a trouver comment ajouter un nouveau champs :P
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
Modifié par dugenou le 24/03/2013 à 10:35
Il faut utiliser PhpMyAdmin

https://openclassrooms.com/fr/courses
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 10:33
Je sais, mais je ne sais pas ou se trouve l'option qui permet d'en ajouter une.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 10:42
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 10:58
Merci, je viens de tester, mais plus rien ne fonctionne dans ma tchat, voici les nouveau codes :
minichat.php :
<?php setcookie('pseudo', time() + 365*24*3600, null, null, false, true); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Mini-chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<style>
form
{
text-align:center;
}
</style>


<form action="minichat_post.php" method="post" >
<p>
<label for="Pseudo">Pseudo</label> : <input type="text" name="Pseudo" id="Pseudo" /><br />
<label for="Messages">Message</label> : <input type="text" name="Messages" id="Messages" /><br />

<input id="envoyer" type="submit" value="Envoyer" />
</p>
</form>
<div id="tchatbox">
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=NOM_BASE_DE_DONNE', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

// Récupération des 10 derniers messages

$reponse = $bdd->query('SELECT Pseudo, Messages FROM minitchat 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><center><strong>' . htmlspecialchars($donnees['Pseudo']) . '</strong> : ' . htmlspecialchars($donnees['Messages']) . '</center></p>';
}

$reponse->closeCursor();

?>
</div>

</body>
</html>


minichat_post.php :
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=NOM_BASE_DE_DONNE', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$date = Date("d/m/Y H:i:s");

// Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO minitchat (Pseudo, Messages, Date) VALUES(?, ?)');
$req->execute(array($_POST['Pseudo'], $_POST['Messages'], $_POST['Date']));

// Redirection du visiteur vers la page du minichat
header('Location:minichat.php');
?>

Quand j'ecrit un message, il ne s'affiche pas.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
Modifié par dugenou le 24/03/2013 à 11:10
Est-ce que tu as créé ton nouveau champ date ?

Si oui, il y a peut-être une erreur lors de l'insertion de la valeur date.

J'ai fait un copié/collé de ton code, mais je ne suis pas certain que la syntaxe soit bonne :

$req->execute(array($_POST['Pseudo'], $_POST['Messages'], $_POST['Date']));

En fait, j'aurais plutôt déclaré tes variables $Pseudo et $Messages en début de fichier :

empty($_POST['Pseudo']) ? $Pseudo = '' : $Pseudo = $_POST['Pseudo'];
empty($_POST['Messages']) ? $Messages = '' : $Messages = $_POST['Messages'];

$date = Date("d/m/Y H:i:s");

Puis, inséré les variables de cette manière :

/ Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO minitchat (Pseudo, Messages, date) VALUES(?, ?)');
$req->execute(array('$Pseudo','$Messages','$date'));

Mais je ne t'assure pas que c'est la bonne méthode, il y a longtemps que je n'ai pas pratiqué PhpMySql.

Par ailleurs, je n'aime pas beaucoup les majuscules pour les noms de variables, c'est source d'erreur.
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 11:13
Je dois m'absenter, je ne serais de retour qu'en fin d'après-midi, mais tu as tous les éléments pour y arriver.
Visite les différents sites sur ce sujet.
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 11:15
Ok, je vais essayer.
Merci pour tout ça déjà :)
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 12:53
ça ne fonctionne pas ....
En fait, le problème viens du fichier minichat_post.php car le fichier minichat.php fonctionne parfaitement pour récupérer se qui se trouve dans le champ "Date".

0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 19:33
Il faut aussi extraire les données du champ date pour que la date s'affiche :

$reponse = $bdd->query('SELECT Pseudo, Messages,date FROM minitchat ORDER BY ID DESC LIMIT 0, 100');
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 19:36
C'est fais, mais ça ne fonctionne pas ...
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 19:43
Est-ce que tu as bien retiré les majuscules aux noms des variables dans tous les fichiers et aux noms des champs dans ta base de données pour éviter les risques d'erreur lors des requêtes ?
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 19:54
Non, voici les fichiers modifié:
minichat.php :
<?php setcookie('pseudo', time() + 365*24*3600, null, null, false, true); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Mini-chat</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
 
	     <style>
    form
    {
        text-align:center;
    }

    </style>

    <form action="minichat_post.php" method="post">
        <p>
        <label for="Pseudo">Pseudo</label> : <input type="text" name="Pseudo" id="Pseudo" /><br />
        <label for="Messages">Message</label> :  <input type="text" name="Messages" id="Messages" /><br />
 
        <input id="envoyer" type="submit" value="Envoyer" />
    </p>
    </form>

 <div id="tchatbox">
<?php

// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=NOM_BASE_DE_DONNE', 'root', ''); }
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
// Récupération des 10 derniers messages
                        
$reponse = $bdd->query('SELECT Pseudo, Messages, Date, Heur FROM minitchat ORDER BY ID DESC LIMIT 0, 10');
 
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
while ($donnees = $reponse->fetch())
{
    echo '<p><center><strong>' . htmlspecialchars($donnees['Pseudo']) . ' le ' . htmlspecialchars($donnees['Date']) . ' à</br> '  . htmlspecialchars($donnees['Heur']) . '</strong> : </br>' . htmlspecialchars($donnees['Messages']) . '</center></p>';
}
 
$reponse->closeCursor();
 
?>
</div>

    </body>
</html>


et minichat_post.php :
<?php
$date = Date("d/m/Y H:i:s"); 
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=luc_mergault', '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 minitchat (Pseudo, Messages, Date) VALUES(?, ?)'); 
$req->execute(array($_POST['Pseudo'], $_POST['Messages'], $_POST['Date'])); 

 
// Redirection du visiteur vers la page du minichat
header('Location:minichat.php');
?>


0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451
24 mars 2013 à 20:04
Il ne faut pas mettre Heur :

$reponse = $bdd->query('SELECT Pseudo, Messages, Date, Heur FROM minitchat ORDER BY ID DESC LIMIT 0, 10');

Il y a déjà l'heure dans la variable $date avec la fonction : Date("d/m/Y H:i:s");

Si tu mets une majuscule à la variable date dans tes requêtes, il faut la mettre partout. Il faut alors la déclarer de cette manière : $Date = Date("d/m/Y H:i:s");
0
luluwebmaster Messages postés 409 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 3 février 2018 5
24 mars 2013 à 20:40
J'ai mis "heur" car j'ai ajouter un autre champs.
0