Ajoter une date au mini-tchat

stranger98

stranger98 Le 17 septembre 2016 à 20:45 (Édité le 25 janvier 2019 à 17:52)

Bonjour j'ai crée un mini-tchat et je voudrais ajouter une date, est-ce que vous pouvez m'aidez svp
voici le code:
<?php 
session_start();
    $bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto", "root", "");
   if(isset($_GET['id']) AND $_GET['id'] > 0)
   {
   $getid = intval($_GET['id']);
   $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();
   if(empty($_SESSION['id'])) 
{
   header('Location: chat_connexion.php');
}
    if(isset($_POST['Pseudo']) AND isset($_POST['Message']) AND !empty($_POST['Pseudo']) AND
    !empty($_POST['Message']))
{
    $pseudo = htmlspecialchars($_POST['Pseudo']);
    $message = htmlspecialchars($_POST['Message']);
    $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message) VALUES (?, ?)');
    header('Location: chat.php?id='.$_SESSION['id']);
    $insertmsg->execute(array($pseudo, $message));
}
?>
<!DOCTYPE html>
<html>
   <head>
      <link rel="stylesheet" type="text/css" href="stylechat.css">
        <meta charset="utf-8">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
      <title>Zone The Walking Dead</title>
   </head>
   <body>
        <?php include("../Inclusions/image.php")  ?>
        
      <?php include("../Inclusions/menu.php")  ?>
      <table cellspacing="0" cellpadding="0" align="center">
      <td height="1500">
      <div id="table">
      <table width="600" cellspacing="0" cellpadding="0" align="center">
      <td bgcolor="#54542c" height="1500" valign="top">
         <div id="titre">
         <p>
         Tchat ZoneTWD
         </p>
         </div>
         <div id="deconnexion"><a href="chat_deconnexion.php">Se deconnecter</a></div>
         <form method="post" action="">
         <input type="text" name="Pseudo" placeholder="PSEUDO" readonly="readonly" class="pseudo"
         value="<?php echo $_SESSION['pseudo']; ?>"</input><br>
         <textarea type="text" name="Message" class="message"></textarea><br>
         <input type="submit" value="Envoyer" class="envoyer">
         </form>
         <div id="messages">
         <?php
         $allmsg = $bdd->query('SELECT * FROM chat ORDER BY id DESC LIMIT 0,15');
         while ($msg = $allmsg->fetch()) 
         {
         ?>
         <div class="boite">
         <b><?php echo $msg['pseudo']; ?> : </b>
         <?php echo $msg['message']; ?><br>
         </div>
         <?php
         }
         ?>
         </div>
      </td>
      </table>
      </div>
      </td>
      </table>
        
      <?php include("../Inclusions/footer.php")  ?>
   
      <script>
         setInterval('load_messages()', 2000);
         function load_messages() {
            $('#messages').load("load_messages.php");
         }
      </script>
   </body>
</html>   
<?php
}
?>   
merci
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 20:59

Salut l'ami,

C'est franchement pas compliquer.
Dans ta base de donnée, tu va ajouter après pseudo et message un nouveau champ que tu va appeler par exemple : "date_add"

Pour le remplir se champ, tu va utilisé l'attribut NOW() qui défini la date au moment ou l'entré dans la bdd se fait, c'est a dire maintenantn.

Après, tu fait un affichage du champ comme tu le fait pour les autres champs. Seul petit problème que tu va rencontré, c'est que l'affichage de base se fait en US.

Je ferais donc ça pour un affichage de la date au format français :

    $allmsg = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_add, "%d-%m-%Y à %Hh%i") AS date FROM chat ORDER BY date_add DESC');
    while ($msg = $allmsg->fetch()){ ?>

    <a><?php echo $msg['date'];?></a>
    <b style="font-size:1.4rem; color: white;"><?php echo $msg['pseudo'];?> : </b>
    <a style="font-size:1.2rem; color: white;"><?php echo $msg['message']; ?></a><br>
Balatharas

Balatharas Le 17 septembre 2016 à 21:11

Salut petit Ananas, je vais te montrer ma méthode qui diffère pour la date.
Elle permet d'afficher par exemple: "Samedi 17 Septembre 2016"
Celle ci est vraiment très différente, et permet de ne pas se casser la tête avec le formatage via SQL ou strftime en PHP.
Tu va créer un champ jour ou date_chat (pas date tout court, ce nom est réservé par MySql) de type text (ne m'engueule pas @TheHoldNoob xD)
Et avant l'insertion tu met:
$nom_jour_fr = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
$mois_fr = array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y")); 

$jour = htmlspecialchars($nom_jour_fr[$nom_jour].' '.$jour.' '.$mois_fr[$mois].' '.$annee);
Tu n'a pas besoin de toucher à tout ça
Ensuite à l'insertion tu met tout simplement:
$insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message, jour/*, heure*/) VALUES (?, ?, ?/*, ?*/)');
$insertmsg->execute(array($pseudo, $message, $jour/*, $heure*/));
header('Location: chat.php?id='.$_SESSION['id']);

Bon je sais que certains vont s'arracher les yeux en voyant que je lui propose de caser la date et l'heure dans deux champs différents, mais chacun sa méthode 😋.

Beignet
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 21:20

Salut Beignet,

ahahah, non, c'est une bonne méthode pour avoir une date en français, qui est souvent utilisé en plus. Donc je te tapperais pas pour cette fois, ni la prochaine d'ailleurs, je suis passifiste 😀
stranger98

stranger98 Le 17 septembre 2016 à 21:41

Salut TheHolsNoob,
Merci de m'avoir repondre est-ce que tu pourrais l'ajouter a mon code stp parceque j'arrive pas a comprendre
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 21:49

ah non ! C'est moche de demander a codé a ta place, il faut apprendre !

:)

Je t'aide un peu plus précisement.
Dans ta base de donnée, tu rajoute un champ date_add qui sera un DATETIME. Jusque la, j'espère que tu y arrive seul, parce que je peu pas le faire a ta place !

Ensuite, sur ta ligne 19, tu rajoute après le champs pseudo et le champs message, le nouveau champ que tu viens de créer, n'oublie pas de rajouter un ? egalement pour avoir 3 nous de champs et 3 entrés 😀


Puis, tu remplace ta ligne 55 par ma ligne 1
Pour finir, tu rajoute la date comme tu l'a déjà fait avec le pseudo et le message dans ta div boite 😉


Voilà, je pense pas pouvoir faire plus claire.
stranger98

stranger98 Le 17 septembre 2016 à 21:58

Ah ok excuse moi, j'ai tout essayé et le resultat c'est que j'ai un "00-00-0000 a 00h00min" et l'autre probleme c'est que quand je veux envoyer le message il s'envoie pas :(
stranger98

stranger98 Le 17 septembre 2016 à 22:02

stranger98

stranger98 Le 17 septembre 2016 à 22:15

Ou est-ce que je dois mettre NOW()?
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 22:32

a la place du 3eme ?
C'est ma faute, désoler 😉
stranger98

stranger98 Le 17 septembre 2016 à 22:45

Excuse moi TheHoldNoob,
J'ai pas compris, ou est-ce que je dois mettre now(), pourquoi la date est en 00-0000 et pourquoi il s'envoi plu 
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 22:47

là :
 $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message, date_add) VALUES (?, ?, NOW())');
stranger98

stranger98 Le 17 septembre 2016 à 22:57

oui mais le probleme c'est que le message il s'affiche pas :(
et non plus les date
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 22:59

inverse ta ligne 20 et 21, la tu redirige avant même d'inséré dans ta bdd.
stranger98

stranger98 Le 18 septembre 2016 à 14:05

J'ai essayé la code de Beignet et ça a marché parfaitement mais je voulais demander comment ajouter une heure et les minutes, je repete le code de Beignet marche parfaitement, je voulais juste ajouter maintennant l'heure et les minutes svp, merci de me repondre:

<?php 
session_start();
    $bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto", "root", "");
   if(isset($_GET['id']) AND $_GET['id'] > 0)
   {
   $getid = intval($_GET['id']);
   $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();
   $nom_jour_fr = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
   $mois_fr = array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", 
   "Septembre", "Octobre", "Novembre", "Décembre");
   list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y")); 
   if(empty($_SESSION['id'])) 
{
   header('Location: chat_connexion.php');
}
    if(isset($_POST['Pseudo']) AND isset($_POST['Message']) AND !empty($_POST['Pseudo']) AND
    !empty($_POST['Message']))
{
    $pseudo = htmlspecialchars($_POST['Pseudo']);
    $message = htmlspecialchars($_POST['Message']);
    $jour = htmlspecialchars($nom_jour_fr[$nom_jour].' '.$jour.' '.$mois_fr[$mois].' '.$annee);
    $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message, jour) VALUES (?, ?, ?)');
    $insertmsg->execute(array($pseudo, $message, $jour));
    header('Location: chat.php?id='.$_SESSION['id']);
}
?>
<!DOCTYPE html>
<html>
   <head>
      <link rel="stylesheet" type="text/css" href="stylechat.css">
        <meta charset="utf-8">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
      <title>Zone The Walking Dead</title>
   </head>
   <body>
        <?php include("../Inclusions/image.php")  ?>
        
      <?php include("../Inclusions/menu.php")  ?>
      <table cellspacing="0" cellpadding="0" align="center">
      <td height="1500">
      <div id="table">
      <table width="600" cellspacing="0" cellpadding="0" align="center">
      <td bgcolor="#54542c" height="1500" valign="top">
         <div id="titre">
         <p>
         Tchat ZoneTWD
         </p>
         </div>
         <div id="deconnexion"><a href="chat_deconnexion.php">Se deconnecter</a></div>
         <form method="post" action="">
         <input type="text" name="Pseudo" placeholder="PSEUDO" readonly="readonly" 
         class="pseudo" value="<?php echo $_SESSION['pseudo']; ?>"</input><br>
         <textarea type="text" name="Message" class="message"></textarea><br>
         <input type="submit" value="Envoyer" class="envoyer">
         </form>
         <div id="messages">
         <?php
         $allmsg = $bdd->query('SELECT * FROM chat ORDER BY id DESC LIMIT 0,15');
         while ($msg = $allmsg->fetch()) 
         {
         ?>
         <div class="boite">
         <a class="label"><?php echo $msg['pseudo']; ?> le <?php echo $msg['jour'];?> : </a><br>
         <p style="margin:15px; font-size:20px; font-family:calibri;"><?php echo $msg['message']
         ; ?></p><br>
         </div>
         <?php
         }
         ?>
         </div>
      </td>
      </table>
      </div>
      </td>
      </table>
        
      <?php include("../Inclusions/footer.php")  ?>
   
      <script>
         setInterval('load_messages()', 2000);
         function load_messages() {
            $('#messages').load("load_messages.php");
         }
      </script>
   </body>
</html>   
<?php
}
?>   
Balatharas

Balatharas Le 18 septembre 2016 à 14:19

Juste après la variable $heure tu rajoute ça:
$heure = strftime("%H:%M:%S");
MAIS si tu es sur Hostinger et que tu vois, que, l'heure affiche 2 heures de retard, ajoute ceci au lieu du code de là haut:
$heure = strftime("%H:%M:%S",strtotime("+2 hours"));
Dans ta bdd tu as juste a ajouter un champ heure de type time, et je te laisse adapter l'insertion.
stranger98

stranger98 Le 18 septembre 2016 à 15:22 (Édité le 18 septembre 2016 à 15:32)


merci
stranger98

stranger98 Le 18 septembre 2016 à 15:31

:)je voulais juste te demander une autre chose si tu veux bien me répondre, 
quand j’écris un long message, il depasse le cadre, je vais te mettre un exemple en photo:
 le code:
<?php 
session_start();
    $bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto", "root", "");
   if(isset($_GET['id']) AND $_GET['id'] > 0)
   {
   $getid = intval($_GET['id']);
   $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();
   $nom_jour_fr = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
   $mois_fr = array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", 
   "Septembre", "Octobre", "Novembre", "Décembre");
   list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y")); 
   if(empty($_SESSION['id'])) 
{
   header('Location: chat_connexion.php');
}
    if(isset($_POST['Pseudo']) AND isset($_POST['Message']) AND !empty($_POST['Pseudo']) AND
    !empty($_POST['Message']))
{
    $pseudo = htmlspecialchars($_POST['Pseudo']);
    $message = htmlspecialchars($_POST['Message']);
    $jour = htmlspecialchars($nom_jour_fr[$nom_jour].' '.$jour.' '.$mois_fr[$mois].' '.$annee);
    $heure = strftime("%H:%M:%S", strtotime("+2 hours"));
    $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message, jour, heure) VALUES (?, ?, ?, ?)');
    $insertmsg->execute(array($pseudo, $message, $jour, $heure));
    header('Location: chat.php?id='.$_SESSION['id']);
}
?>
<!DOCTYPE html>
<html>
   <head>
      <link rel="stylesheet" type="text/css" href="stylechat.css">
        <meta charset="utf-8">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
      <title>Zone The Walking Dead</title>
   </head>
   <body>
        <?php include("../Inclusions/image.php")  ?>
        
      <?php include("../Inclusions/menu.php")  ?>
      <table cellspacing="0" cellpadding="0" align="center">
      <td height="1500">
      <div id="table">
      <table width="600" cellspacing="0" cellpadding="0" align="center">
      <td bgcolor="#54542c" height="1500" valign="top">
         <div id="titre">
         <p>
         Tchat ZoneTWD
         </p>
         </div>
         <div id="deconnexion"><a href="chat_deconnexion.php">Se deconnecter</a></div>
         <form method="post" action="">
         <input type="text" name="Pseudo" placeholder="PSEUDO" readonly="readonly" 
         class="pseudo" value="<?php echo $_SESSION['pseudo']; ?>"</input><br>
         <textarea type="text" name="Message" class="message"></textarea><br>
         <input type="submit" value="Envoyer" class="envoyer">
         </form>
         <div id="messages">
         <?php
         $allmsg = $bdd->query('SELECT * FROM chat ORDER BY id DESC LIMIT 0,15');
         while ($msg = $allmsg->fetch()) 
         {
         ?>
         <div class="boite">
         <a class="label"><?php echo $msg['pseudo']; ?> le <?php echo $msg['jour'];?> 
         <?php echo $msg['heure'];?> : </a><br>
         <p style="margin:15px; font-size:20px; font-family:calibri;"><?php echo $msg['message']
         ; ?></p><br>
         </div>
         <?php
         }
         ?>
         </div>
      </td>
      </table>
      </div>
      </td>
      </table>
        
      <?php include("../Inclusions/footer.php")  ?>
   
      <script>
         setInterval('load_messages()', 2000);
         function load_messages() {
            $('#messages').load("load_messages.php");
         }
      </script>
   </body>
</html>   
<?php
}
?>
body {
   background-image: url(http://images4.alphacoders.com/165/165394.jpg);
   -webkit-background-size: cover; 
   -moz-background-size: cover; 
   -o-background-size: cover; 
   background-size: cover;
   overflow-x: hidden;
   margin: 0;
   padding: 0;
}
body, a:hover {cursor: url(http://cur.cursors-4u.net/holidays/hol-1/hol31.cur), progress !important;}
nav {
   min-width: 1200px;
   height: 70px;
   background-color: #424558;
}
nav ul {    
   margin: 0;
   padding: 0;
   list-style: none;
   font-size: 0;
   text-align:center;
}
nav li { 
   display:inline-block;
   position:relative;
}
nav li li { 
   display:block;
}
nav a { 
   display:block;
   width:150px;
   height:30px;
   font-size:25px;
   padding: 20px 30px;
   color:#fff;
   font-family: Cooper Black, Franklin Gothic Heavy, Calibri;
   text-decoration:none;
   cursor: pointer;
}
nav > ul >li {
   position: relative;
}
nav li ul { 
   left:-4000px;
   position:absolute;
}
nav li:hover > ul { 
   left: 0;
}
nav li li:hover > ul { 
   left: 210px;
   top: 0;
}
.menu:hover {
   border-top: 5px solid #BBB;
   padding: 15px 30px 20px 30px;
}
.sous-menu {
   background-color: #33331a;
   font-size: 20px;
   height: 20px;
   border-bottom: 1px solid #FFF;
}
.sous-menu:hover {
   background-color: #54542b;
}
.sousmenu {
   background-color: RGB(230, 100, 40);
   color: #000000;
   font-size: 17px;
   height: 10px;
}
.sousmenu:hover {
   background-color: #FFF;
}
#table {
   float: left;
   border-right: black solid 5px;
   border-left: black solid 5px;
   border-bottom: black solid 5px;
}
#titre {
   text-align: center;
   font-family: arial black;
   font-size: 40px;
}
#deconnexion {
   text-align: right;
   font-size: 25px;
   text-decoration:none;
   color: #0078d7;
   font-family: calibri;
   margin-bottom: 10px;
}
#deconnexion a {
   text-decoration:none;
}
#deconnexion:hover a {
   color: grey;
}
.pseudo {
   width: 620px;
   height: 30px;
   text-align:center;
   font-family: calibri;
   font-size: 30px;
}
.message {
   width: 620px;
   height: 250px;
}
.envoyer {
   background-color: red;
   width: 625px;
   height: 40px;
   margin-bottom: 30px;
   border-radius: 8px;
   cursor: pointer;
   font-family: impact;
   font-size: 20px;
}
.envoyer:hover {
    background-color: #4CAF50;
    color: white;
}
.boite {
   border-bottom: 2px solid grey;
   width: 600px;
   margin-left: 10px;
   background-color: white;
}
.label {
   font-family: segoe print, segoe script, calibri;
   font-size: 15px;
   margin: 15px;
}
.footer {
   width: 100%;
   height: 50px;
   background-color: #54542c;
   margin-top: 50px;
   border-top: black solid 5px;
}
TheOldNoob

TheOldNoob Le 18 septembre 2016 à 15:39 (Édité le 18 septembre 2016 à 15:40)

Autre problème autre solution,

Je t'invite a lire cette article d'Alsacréation qui va t'aider a choisir comment reglé ton problème.
Parce que oui, tu a de la chance, il y a plusieurs solutions 😀

http://www.alsacreations.com/tuto/lire/1038-gerer-debordement-contenu-et-cesures-css.html
stranger98

stranger98 Le 18 septembre 2016 à 16:02

Merci de m'avoir repondre vous etes des boss 😀
je vais le mettre en resolu
TheOldNoob

TheOldNoob Le 18 septembre 2016 à 16:27

cool, quand est-ce que tu le met en ligne qu'on test ton site? 😀
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte