Faire Appraitre un chat après avoir remplir un input et cliker sur ok

stranger98

stranger98 Le 11 novembre 2016 à 14:56 (Édité le 25 janvier 2019 à 17:52)

Bonjour a tous,
j'ai créer un chat simple avec actualisation automatique jusqu'à la tout va bien,
maintenant je voulais juste faire apparaître le input du pseudo et quand je mets le pseudo et je Click sur ok
et ben ça apparaît le textarea avec le pseudo, pour pouvoir chatter avec mon pseudo.
voila mon code:

<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=page", "root", "");
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(?, ?)');
   $insertmsg->execute(array($pseudo, $message));
   header('Location: chat.php');
}
?>
<!DOCTYPE html>
<html>
   <head>
      <title>Chat</title>
      <meta charset="utf-8">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
   </head>
   <body>
      <form method="POST" action="">
         <input id="pseudo" type="text" placeholder="Pseudo" name="pseudo" value="<?php if(isset($pseudo)) {echo $pseudo;} ?>" /><br>
         <textarea id="message" type="text" name="message" placeholder="Message"></textarea><br>
         <input type="submit" value="Envoyer" />
      </form>
      
      <div id="tout">
         <?php
         
         $allmsg = $bdd->query('SELECT * FROM chat ORDER BY id DESC');
         while($msg = $allmsg->fetch())
         {
         ?>
         <b><?php echo $msg['pseudo']; ?> :</b>
         <?php echo $msg['message']; ?><br>
         <?php
         }
         ?>
      </div>
      <script>
         setInterval('load_messages()', 2500);
         function load_messages() 
         {
            $('#tout').load("load.php");
         }
      </script>
   </body>
</html>
Merci d'avance
TheOldNoob

TheOldNoob Le 11 novembre 2016 à 18:02

Salut l'ami,
Tu peu faire ça avec les cookies, c'est assez facile a faire. Je te laisse cherché un peu comment on les utilise, si tu galère, tu reviens nous voir 😀
stranger98

stranger98 Le 11 novembre 2016 à 18:55

Bonjour, Merci TheOldNoob t'es toujours la pour me sauver 😀,
j'ai changé ça :
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=page", "root", "");
setcookie('pseudo',$_POST['pseudo'], time() + 365*24*3600, null, null, false, true);
if(!empty($_POST['pseudo']) AND !empty($_POST['message']))
{
   $pseudo = htmlspecialchars(trim($_POST['pseudo']));
    $message = htmlspecialchars(trim($_POST['message']));
   $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message) VALUES(?, ?)');
   $insertmsg->execute(array($pseudo, $message));
}
?>
<!DOCTYPE html>
<html>
   <head>
      <title>Chat</title>
      <meta charset="utf-8">
      <link rel="stylesheet" type="text/css" href="styl.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
   </head>
   <body>
      <div align="center">
         <form method="POST" action="">
            <input id="pseudo" type="text" placeholder="Pseudo" name="pseudo" value="<?php if(isset($_COOKIE['pseudo'])) {echo $_COOKIE['pseudo'];} ?>" /><br>
            <textarea id="message" type="text" name="message" placeholder="Message"></textarea><br><br>
            <input type="submit" value="Envoyer" />
         </form>
      </div>
      
      <div id="tout" align="center">
         <?php
         
         $allmsg = $bdd->query('SELECT * FROM chat ORDER BY id DESC');
         while($msg = $allmsg->fetch())
         {
         ?>
         <b><?php echo $msg['pseudo']; ?> :</b>
         <?php echo $msg['message']; ?><br>
         <?php
         }
         ?>
      </div>
      <script>
         setInterval('load_messages()', 2500);
         function load_messages() 
         {
            $('#tout').load("load.php");
         }
      </script>
   </body>
</html>
Mais au fait, je voulais que le pseudo deviennent readonly, disabled ou qu'on puisse pas le changer,
genre tu mets ton pseudo et quand tu click sur message et ben ça devient inchangeable automatiquement, je sais pas si c'est avec javascript, php ou css

merci l'ami
TheOldNoob

TheOldNoob Le 11 novembre 2016 à 19:02

Alors, dans se cas, le mieux c'est de créer un petit système d'inscription rapide (pseudo, mdp, email avec vérification si pseudo/email existe déjà). Pour pouvoir chaté les gens devrons être connecté obligatoirement, mais pourrons quand même lire le chat afin de les incité a s'inscrire. Une fois log, le pseudo ce remet automatiquement 😀
stranger98

stranger98 Le 11 novembre 2016 à 19:10

Oui c'est ce que j'avais fait précédemment pour mon chat il y a 2 mois, mais je voulais le rendre plus simple et juste mettre un pseudo, ou écrire le pseudo et quand je clic sur un bouton et ben le textarea apparaît.
Mais bon je vois que c'est un peu irréalisable merci de toute façon 😀
Balatharas

Balatharas Le 12 novembre 2016 à 12:09

Si j'ai bien compris:
Si tu veux mettre le pseudo a saisir sur la meme page que la textarea, qui doit apparaitre une fois le pseudo saisi, alors tu peux utiliser 3 methodes differentes:
  • du javascript pour afficher la textarea quand on appuie sur le submit
  • Une condition du type: si on a le cookie pseudo, alors on affiche la textarea et une input contenant le pseudo avec l'attribut readonly
  • A la fin de ton script php, rajouter un header qui redirige vers la meme page MAIS avec un parametre get: online (ex: tonchat.php puis apres avoir rentré le pseudo: tonchat.php?online)
Si je me suis trompé dis le moi 😉
TheOldNoob

TheOldNoob Le 12 novembre 2016 à 13:07

Ou simplement en php, faire une condition, qui dit que une fois subit, la div contenant le textarea passe de false a true 😀
Et biensur, pensé a définir au préalable que la div est en false sinon ça marche pas 😋
Balatharas

Balatharas Le 12 novembre 2016 à 17:48

C'est un peu le même principe que ma troisième proposition oui 😀
J'avais juste oublier de préciser que pour
  • A la fin de ton script php, rajouter un header qui redirige vers la meme page MAIS avec un parametre get: online (ex: tonchat.php puis apres avoir rentré le pseudo: tonchat.php?online)
Il faut aussi afficher la textarea si on a ?online
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte