Partage
  • Partager sur Facebook
  • Partager sur Twitter

Chat PHP/Javascript.

[résolu]

Sujet résolu
    7 janvier 2009 à 0:39:04

    Bonjour.

    Sur beaucoup de site phpbb, un mini-chat est fait en PHP/Javascript. J'ai fait du PHP mais pas de Javascript. Je voudrai savoir si quelqu'un peut m'aider à améliorer mon mini-chat avec du javascript. Si oui, contactez moi par MP. Je passerai mon script si quelqu'un est intéressé par MP.

    En espèrent que vos réponses seront favorables,

    rizardon.

    Je fais un petit final des codes (pour que ça serva aux autres ;);) )


    la bdd est la même que dans le tuto de m@téo21

    chat.php

    <?php session_start(); ?>
    <!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" >
       <head>
           <title>Pokéfun-Chat</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    	   <link rel="icon" type="image/png" href="http://www.favicon.cc/favicon/0/35/favicon.ico" />
    	   <script type="text/javascript" src="minichat.js"></script>
    
           <?php include "cookie.php" ?>
    	   <?php include "calendar.php" ?>
    	   <?php include "bbc.php" ?>
    	   <?php include "code.php" ?>
    	   <?php include "fonction.php" ?>
       </head>
       <body>
       <div id="en_tete">
    
    </div>
      <?php include "menu.php" ?> 
    <!-- Le corps -->
    
    <div id="corps">
    <h1>Chat</h1>
    <?php mysql_connect("sql.olympe-network.com", "gtr", "gtrgtr"); // Connexion à MySQL
    mysql_select_db("tgrgtrgtrgtr") 
    ?>
    <table>
    <div id="dixmsg"> </div>
    
    <script type="text/javascript">
          setInterval('afficher()', 10);
    </script>
    
    <form action="envoyer.php" method="post">
         
         <tr>
          <td>Pseudo:
          <input type="text" id="pseudo" name="pseudo" maxlength="50" />
         
          Message:
          <input type="text" id="message" name="message" onfocus="this.value='';"></input>
         
          <input type="button" name="env" value="Envoyer" onclick="envoyer();" /></td>
         </tr>
        
       </form>
    </table>
    
        </div>
    


    envoyer.php
    <?php 
    mysql_connect("sql.olympe-network.com", "", ""); // Connexion à MySQL
    mysql_select_db("") 
    ?>
    <?php
    mysql_query("INSERT INTO chat VALUES('', '".$_GET['pseudo']."', '".$_GET['message']."')");
    ?>
    


    afficher.php
    <?php 
    mysql_connect("sql.olympe-network.com", "", ""); // Connexion à MySQL
    mysql_select_db("") 
    ?>
    <?php
    // On se connecte d'abord à MySQL :
    // On utilise la requête suivante pour récupérer les 10 derniers messages :
    $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC ");
    // On se déconnecte de MySQL
    
    // Puis on fait une boucle pour afficher tous les résultats :
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
    <tr><td><p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p></td></tr>
    <?php
    }
    ?>
    


    minichat.js

    function envoyer() {
    	if(window.XMLHttpRequest) // FF
    		xhr_object = new XMLHttpRequest();
    	else if(window.ActiveXObject) // IE
    		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	else
    		return(false);
    	 xhr_object.open("GET","envoyer.php?pseudo=" + document.getElementById("pseudo").value + "&message="+ document.getElementById("message").value, false);// Ouverture de la page Voulu
    	xhr_object.send(null);
    }
    function afficher() {
    	if(window.XMLHttpRequest) // FF
    		xhr_object = new XMLHttpRequest();
    	else if(window.ActiveXObject) // IE
    		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	else
    		return(false);
            xhr_object.open("GET","afficher.php", false);// Ouverture de la page Voulu
    	xhr_object.send(null);
            document.getElementById("dixmsg").innerHTML = xhr_object.responseText; // Ecriture dans dixmsg
    }
    


    Merci à tous :):)

    J'ai juste un problème pour le design. J'aimerai que mes messages soit dans une table et j'ai un problème pour le rafrachissement auto(ca se fait très vite mais c'est pas parfait)......

    Merci encore
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      7 janvier 2009 à 0:44:39

      yo, t'as le forum recrutement pour ça.

      Merci de poster des demandes d'aides publiques, histoire que tout le monde en profite. (non je ne veux pas filer de coup de main).
      • Partager sur Facebook
      • Partager sur Twitter
        7 janvier 2009 à 1:57:23

        Citation : nod_

        yo, t'as le forum recrutement pour ça.

        Merci de poster des demandes d'aides publiques, histoire que tout le monde en profite. (non je ne veux pas filer de coup de main).



        J'hésitais entre les deux... Seulement le forum de recrutement est pour un projet. Je n'appelle pas ca un projet mais une demande d'aide.
        • Partager sur Facebook
        • Partager sur Twitter
          7 janvier 2009 à 2:22:05

          Sinon tu peux aussi tout simplement mettre ton script ici, et demander si quelqu'un voudrait bien se donner la peine de chercher à l'améliorer avec du JS ? (Pas besoin de passer par les mp... sinon le forum sert plus à rien).
          • Partager sur Facebook
          • Partager sur Twitter
            7 janvier 2009 à 5:29:48

            <!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>
                <style type="text/css">
                form
                {
                text-align:center;
                }
                </style>
                <body>
             
             
            <?php
            if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
            {
                if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
                {
                    // D'abord, on se connecte à MySQL
                    mysql_connect("localhost", "sdz", "mot_de_passe");
                    mysql_select_db("coursphp");
             
                    // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
                    $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
                    $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
             
                    // Ensuite on enregistre le message
                    mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
             
                    // On se déconnecte de MySQL
                    mysql_close();
                }
            }
             
             
            // Que l'on ait enregistré des données ou pas...
            // On affiche le formulaire puis les 10 derniers messages
             
            // Tout d'abord le formulaire :
            ?>
             
             
             
            <form action="minichat.php" method="post">
             
            <p>
            Pseudo : <input type="text" name="pseudo" /><br />
            Message :  <input type="text" name="message" /><br />
             
            <input type="submit" value="Envoyer" />
            </p>
             
            </form>
             
             
             
            <?php
             
            // Maintenant on doit récupérer les 10 dernières entrées de la table
            // On se connecte d'abord à MySQL :
            mysql_connect("localhost", "sdz", "mot_de_passe");
            mysql_select_db("coursphp");
             
            // On utilise la requête suivante pour récupérer les 10 derniers messages :
            $reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10");
             
            // On se déconnecte de MySQL
            mysql_close();
             
            // Puis on fait une boucle pour afficher tous les résultats :
            while ($donnees = mysql_fetch_array($reponse) )
            {
            ?>
             
            <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
             
             
             
            <?php
            }
            // Fin de la boucle, le script est terminé !
            ?>
             
             
                </body>
            </html>
            
            • Partager sur Facebook
            • Partager sur Twitter
              7 janvier 2009 à 6:12:28

              Explicitement, tu veux quoi comme amélioration ? De l'Ajax ?
              • Partager sur Facebook
              • Partager sur Twitter
                7 janvier 2009 à 12:43:42

                Concrètement tu veux un minichat ou il n'y a pas besoins de recharger la page.
                C'est ça ?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 janvier 2009 à 2:07:25

                  Oui c'est bien ca. ( c'est pas tout à fait mon vrai code, je travaille pour l'améliorer.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 janvier 2009 à 6:47:51

                    Voici ce que j'ai fait, j'suis parti trop loin avec le JS (du coup, si JS est désactivé, ça ne fonctionne pas)

                    La table SQL nommée `minichat` contenant 4 champs:
                    - `id` type INT auto_increment
                    - `pseudo` type VARCHAR(50)
                    - `message` type TEXT
                    - `date_ajout` type DATETIME

                    L'HTML:
                    <html>
                     <head>
                      <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
                      <title>MiniChat</title>
                      <link rel="stylesheet" type="text/css" title="Original" href="style.css" />
                      <script type="text/javascript" src="minichat.js"></script>
                     </head>
                     <body>
                      <div id="msg"><div id="noJS">Veuillez activer JavaScript, pour participer au chat!</div></div>
                      <div>
                       <form action="" method="post">
                        <table>
                         <tr>
                          <td><label for="pseudo">Pseudo:</label></td>
                          <td><input type="text" id="pseudo" name="pseudo" maxlength="50" /></td>
                         </tr>
                         <tr>
                         <td><label for="message">Message:</label></td>
                          <td><textarea id="message" name="message" cols="50" rows="3" onfocus="this.value='';"></textarea></td>
                         </tr>
                         <tr>
                         <td>&nbsp;</td>
                          <td><input type="button" name="env" value="Envoyer" onclick="ValidForm();" /></td>
                         </tr>
                        </table>
                       </form>
                        <script type="text/javascript">
                         AffMSG();
                         setTimeout('AffMSG()', 5000);
                        </script>
                      </div>
                     </body>
                    </html>
                    


                    Le JS: "minichat.js"
                    function GetObject(){
                     if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
                     else if(window.ActiveXObject) xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
                     else return(false);
                    }
                    
                    function AffMSG(){
                     div = document.getElementById('msg');
                     GetObject();
                     xhr_object.open('GET', 'miniMSG.php?a=l', false);
                     xhr_object.send(null);
                     div.innerHTML = xhr_object.responseText;
                     div.scrollTop = div.scrollHeight;
                    }
                    
                    function ValidForm(){
                     champ_pseudo = document.getElementById('pseudo').value;
                     champ_message = document.getElementById('message').value;
                     if(champ_pseudo.length == 0){
                      alert('Veuillez remplir le champ "Pseudo"');
                      return(false);
                     }
                     else if(champ_message.length == 0){
                      alert('Veuillez remplir le champ "Message"');
                      return(false);
                     }
                     else{
                      GetObject();
                      xhr_object.open('GET', 'miniMSG.php?a=a&p='+escape(champ_pseudo)+'&m='+escape(champ_message), false);
                      xhr_object.send(null);
                      document.getElementById('message').focus();
                      AffMSG();
                     }
                    }
                    


                    Le PHP: "miniMSG.php" (en relation avec le JS)
                    <?php
                    // connexion SQL
                    if($_GET['a'] == 'a'){
                     $p = mysql_real_escape_string($_GET['p']);
                     $m = mysql_real_escape_string($_GET['m']);
                     mysql_query("INSERT INTO minichat(pseudo, message, date_ajout) VALUES('$p', '$m', NOW())");
                    }
                    else if($_GET['a'] == 'l'){
                     $req = mysql_query("SELECT id, pseudo, message, DATE_FORMAT(date_ajout, 'le: %d/%m/%Y à %H:%i') as date_fr FROM minichat ORDER BY id ASC");
                     while($dat = mysql_fetch_assoc($req)){
                      echo '<div class="msgbox">Par: '.utf8_encode($dat['pseudo']).'<br />'.utf8_encode(nl2br($dat['message'])).'<div class="datebox">'.utf8_encode($dat['date_fr']).'</div></div>';
                     }
                    }
                    ?>
                    


                    Et éventuellement le .css "style.css"
                    #noJS{
                     margin-top: 25px;
                     text-align: center;
                     font-weight: bold;
                     color: #FF0000;
                    }
                    #msg{
                     width: 500px;
                     height: 500px;
                     border: 1px solid #000000;
                     overflow: auto;
                    }
                    
                    .msgbox{
                     margin: 5px;
                     padding: 5px;
                     border: 1px solid #FF0000;
                    }
                    
                    .datebox{
                     text-align: right;
                     font-size: 0.8em;
                    }
                    


                    Le JS est surement optimisable... Car le tout à été fait à la vite fait...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Erreur PDO - Installation Wamp - Docs PHP et MYSQL.
                      8 janvier 2009 à 19:58:12

                      Il faut que tu crée une page qui php qui récupère tout et qui affiche tout.
                      Ensuite tu créer une fonction ajax qui va récupérer le contenu de cette page et l'afficher dans un div.
                      Et ensuite tu fait un setInterval pour appeler la fonction ajax et ainsi actualiser ta ou ton div
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 janvier 2009 à 0:34:36

                        Merci.

                        est-ce que je dois inclure la page JS avec la page PHP?

                        EDIT: Bon. J'ai essayer de le faire en une seule page.

                        <?php
                        if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
                        {
                            if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
                            {
                                // D'abord, on se connecte à MySQL
                                
                         
                                // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
                                $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
                                $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
                         
                                // Ensuite on enregistre le message
                                mysql_query("INSERT INTO chat VALUES('', '$pseudo', '$message')");
                         
                                // On se déconnecte de MySQL
                                
                            }
                        }
                         
                         
                        // Que l'on ait enregistré des données ou pas...
                        // On affiche le formulaire puis les 10 derniers messages
                         
                        // Tout d'abord le formulaire :
                        ?>
                        
                         
                          
                           <form action="chat.php" method="post">
                           <div id="msg"><div id="noJS">Veuillez activer JavaScript, pour participer au chat!</div></div>
                            <table>
                             <tr>
                              <td><label for="pseudo">Pseudo:</label></td>
                              <td><input type="text" id="pseudo" name="pseudo" maxlength="50" /></td>
                             </tr>
                             <tr>
                             <td><label for="message">Message:</label></td>
                              <td><textarea id="message" name="message" cols="50" rows="3" onfocus="this.value='';"></textarea></td>
                             </tr>
                             <tr>
                             <td>&nbsp;</td>
                              <td><input type="button" name="env" value="Envoyer" onclick="ValidForm();" /></td>
                             </tr>
                            </table>
                           </form>
                            <script type="text/javascript">
                             AffMSG();
                             setTimeout('AffMSG()', 5000);
                            </script>
                        <?php
                         
                        // Maintenant on doit récupérer les 10 dernières entrées de la table
                        // On se connecte d'abord à MySQL :
                        
                         
                        // On utilise la requête suivante pour récupérer les 10 derniers messages :
                        $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10");
                         
                        // On se déconnecte de MySQL
                        
                         
                        // Puis on fait une boucle pour afficher tous les résultats :
                        while ($donnees = mysql_fetch_array($reponse) )
                        {
                        ?>
                         
                        <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
                         
                         
                         
                        <?php
                        }
                        // Fin de la boucle, le script est terminé !
                        ?>
                        


                        Le JS marche bien mais rien ne s'affiche dans ma BDD. Quand je teste avec l'exemple du site du zero tout va bien mais là.... :euh:

                        Problème identifier. si je remplace <input type="button" name="env" value="Envoyer" onclick="ValidForm();" />
                        par
                        <input type="submit" value="Envoyer" />
                        ca marche. Seulement, ca se recharge...

                        Edit: J'ai compris l'essentiel mais je ne sais pas comment je peux le faire sur deux pages. Si quelqu'un a un code complet qui marche, faites moi signe.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 janvier 2009 à 17:51:21

                          En faites sur ta page deux tu ne doit mettre que la requête et uniquement la requête ainsi que la fonction pour afficher le résultat.

                          Ensuite grâce a une fonction Ajax :
                          function loadPage(url,IDdiv){
                          	if(window.XMLHttpRequest) // FF
                          		xhr_object = new XMLHttpRequest();
                          	else if(window.ActiveXObject) // IE
                          		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                          	else
                          		return(false);
                          	xhr_object.open("POST", url, false);
                          	xhr_object.send(null);
                                  div = document.getElementById(IDdiv);
                                  texte = xhr_object.responseText;
                          	div.innerHTML = texte;
                          }
                          

                          Que tu appelle en passer en paramètre la page avec la requête, puis l'id du div dans lequel tu va l'afficher.
                          Et pour que sa se répète appelle
                          setInterval(function(){ loadPage(" ___.php","div"); }, 1000);
                          


                          1000 étant le nombre de milli sec entre chaque appelle
                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 janvier 2009 à 23:56:29

                            hum hum. Quand j'ai testé l'exemple qu'il m'avait donné rien ne s'affichait dans ma BDD.

                            HELP!

                            Merci d'avance
                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 janvier 2009 à 0:13:50

                              je t'envois un MP avec le lien. (c'est encore trop fragile)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                10 janvier 2009 à 10:28:53

                                Ton bouton est un submit donc il va recharger autaumatiquement la page et envoyer les variable post.
                                Il faut qu'il soit type="button" et onclick="envoyer()".
                                Ensuite, en php, tu créer une page avec ta requête qui récupère variable en get et qui les rentre dans ta base de donnée.
                                Tu fait une fonction ajax qui va executer cette page :

                                chat.php
                                <input type="button" onclick="envoyer()"/>
                                


                                minichat.js
                                function envoyer() {
                                	if(window.XMLHttpRequest) // FF
                                		xhr_object = new XMLHttpRequest();
                                	else if(window.ActiveXObject) // IE
                                		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                                	else
                                		return(false);
                                	 xhr_object.open("GET","envoyer.php?pseudo=" + document.getElementById("pseudo").value + "&message="+ document.getElementById("message").value, false);// Ouverture de la page Voulu
                                	xhr_object.send(null);
                                }
                                


                                envoyer.php
                                <?php
                                mysql_connect("localhost", "blabla", "bidule");
                                mysql_select_db("tabase");
                                mysql_query("INSERT INTO tatable VALUES('', $_GET['pseudo'], $_GET['message'])");
                                mysql_close();
                                ?>
                                


                                Sa devrais marcher
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 janvier 2009 à 17:05:06

                                  http://www.hostingpics.net/viewer.php? [...] s_titre_3.png

                                  Capture d'écran.

                                  Je vais vous montrez mes codes.


                                  Chat.php
                                  <div id="corps">

                                  <?php mysql_connect("sql.olympe-network.com", "bea", "ez"); // Connexion à MySQL
                                  mysql_select_db("base") 
                                  ?>
                                  
                                  
                                    
                                     <form action="chat2.php" method="post">
                                     <div id="msg"><div id="noJS">Veuillez activer JavaScript, pour participer au chat!</div></div>
                                      <table>
                                       <tr>
                                        <td><label for="pseudo">Pseudo:</label></td>
                                        <td><input type="text" id="pseudo" name="pseudo" maxlength="50" /></td>
                                       </tr>
                                       <tr>
                                       <td><label for="message">Message:</label></td>
                                        <td><textarea id="message" name="message" cols="50" rows="3" onfocus="this.value='';"></textarea></td>
                                       </tr>
                                       <tr>
                                       <td>&nbsp;</td>
                                        <td><input type="button" name="env" value="Envoyer" onclick="ValidForm();" /></td>
                                       </tr>
                                      </table>
                                     </form>
                                      <script type="text/javascript">
                                       AffMSG();
                                       setTimeout('AffMSG()', 5000);
                                      </script>
                                  
                                  <?php
                                   
                                  // Maintenant on doit récupérer les 10 dernières entrées de la table
                                  // On se connecte d'abord à MySQL :
                                  
                                   
                                  // On utilise la requête suivante pour récupérer les 10 derniers messages :
                                  $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10");
                                   
                                  // On se déconnecte de MySQL
                                  
                                   
                                  // Puis on fait une boucle pour afficher tous les résultats :
                                  while ($donnees = mysql_fetch_array($reponse) )
                                  {
                                  ?>
                                   
                                  <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
                                   
                                   
                                   
                                  <?php
                                  }
                                  // Fin de la boucle, le script est terminé !
                                  ?>
                                   
                                  	
                                  </div>
                                  


                                  minichat.js

                                  function GetObject(){
                                   if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
                                   else if(window.ActiveXObject) xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
                                   else return(false);
                                  }
                                  
                                  function AffMSG(){
                                   div = document.getElementById('msg');
                                   GetObject();
                                   xhr_object.open('GET', 'chat2.php?a=l', false);
                                   xhr_object.send(null);
                                   div.innerHTML = xhr_object.responseText;
                                   div.scrollTop = div.scrollHeight;
                                  }
                                  
                                  function ValidForm(){
                                   champ_pseudo = document.getElementById('pseudo').value;
                                   champ_message = document.getElementById('message').value;
                                   if(champ_pseudo.length == 0){
                                    alert('Veuillez remplir le champ "Pseudo"');
                                    return(false);
                                   }
                                   else if(champ_message.length == 0){
                                    alert('Veuillez remplir le champ "Message"');
                                    return(false);
                                   }
                                   else{
                                    GetObject();
                                    xhr_object.open('GET', 'chat2.php?a=a&p='+escape(champ_pseudo)+'&m='+escape(champ_message), false);
                                    xhr_object.send(null);
                                    document.getElementById('message').focus();
                                    AffMSG();
                                   }
                                  }
                                  



                                  chat2.php


                                  <div id="corps">
                                  <?php mysql_connect("sql.olympe-network.com", "grgter", "gregr"); // Connexion à MySQL
                                  mysql_select_db("base") 
                                  ?>
                                  <?php
                                  // connexion SQL
                                  if($_GET['a'] == 'a'){
                                   $p = mysql_real_escape_string($_GET['p']);
                                   $m = mysql_real_escape_string($_GET['m']);
                                   mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
                                  }
                                  else if($_GET['a'] == 'l'){
                                   $req =  mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10");
                                   while($dat = mysql_fetch_assoc($req)){
                                    echo '<div class="msgbox">Par: '.utf8_encode($dat['pseudo']).'<br />'.utf8_encode(nl2br($dat['message'])).'<div class="datebox">'.utf8_encode($dat['date_fr']).'</div></div>';
                                   }
                                  }
                                  ?>
                                  
                                  
                                  </div>
                                  


                                  Voilà. Quand je vais sur ma page chat.php, j'ai un "il faut actionner le javascript". Puis il s'efface et mafiche le contenue de mon site... (comme dans la capture d'image)

                                  Merci d'avance.


                                  PS:: J'ai utiliser le même CSS que b-dav m'a donné.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    10 janvier 2009 à 17:16:50

                                    Pourquoi inclue tu ton chat dans ton chat dans le div msg.
                                    Met tes requêtes php et les fonctions pour afficher les dix derniers message dans un fichier.
                                    A la place tu met un <div id="dixmsg"> vide.
                                    Et dans la fonction AffMSG a la place du div msg tu met le div dixmsg et la page ou tu viens de placer tes requêtes.
                                    Et pour finir tu remplace setTimeout par setInterval.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      10 janvier 2009 à 17:23:48

                                      j'ai pas tout à fait compris l'histoire d'inclure de JS dans un div.

                                      EDIT: Ca doit donner quoi au finale? Désolé si je suis si hum... NUL :o
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        10 janvier 2009 à 17:46:29

                                        Ok donc en js il te faut deux fonction :
                                        envoyer() pour ajouter le message dans la base de donnée
                                        quand le visiteur clique
                                        afficher() pour afficher les 10 derniers message
                                        toutes les sec.

                                        function envoyer() {
                                        	if(window.XMLHttpRequest) // FF
                                        		xhr_object = new XMLHttpRequest();
                                        	else if(window.ActiveXObject) // IE
                                        		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                                        	else
                                        		return(false);
                                        	 xhr_object.open("GET","envoyer.php?pseudo=" + document.getElementById("pseudo").value + "&message="+ document.getElementById("message").value, false);// Ouverture de la page Voulu
                                        	xhr_object.send(null);
                                        }
                                        function afficher() {
                                        	if(window.XMLHttpRequest) // FF
                                        		xhr_object = new XMLHttpRequest();
                                        	else if(window.ActiveXObject) // IE
                                        		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                                        	else
                                        		return(false);
                                                xhr_object.open("GET","afficher.php", false);// Ouverture de la page Voulu
                                        	xhr_object.send(null);
                                                document.getElementById("dixmsg").innerHTML = xhr_object.responseText; // Ecriture dans dixmsg
                                        }
                                        


                                        Ensuite 1 page php qui afiche les dix derniers messages :
                                        afficher.php
                                        <?php
                                        // On se connecte d'abord à MySQL :
                                        // On utilise la requête suivante pour récupérer les 10 derniers messages :
                                        $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10");
                                        // On se déconnecte de MySQL
                                        
                                        // Puis on fait une boucle pour afficher tous les résultats :
                                        while ($donnees = mysql_fetch_array($reponse) )
                                        {
                                        ?>
                                        <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
                                        <?php
                                        }
                                        ?>
                                        
                                        ?>
                                        


                                        Un page pour rentrer le message dans la base de donnée
                                        envoyer.php
                                        <?php
                                        mysql_connect("localhost", "blabla", "bidule");
                                        mysql_select_db("tabase");
                                        mysql_query("INSERT INTO tatable VALUES('', '".$_GET['pseudo']."', '".$_GET['message']."')");
                                        mysql_close();
                                        ?>
                                        


                                        Ta page html :
                                        chat.php
                                        <form action="chat2.php" method="post">
                                           <div id="msg"><div id="noJS">Veuillez activer JavaScript, pour participer au chat!</div></div>
                                            <table>
                                             <tr>
                                              <td><label for="pseudo">Pseudo:</label></td>
                                              <td><input type="text" id="pseudo" name="pseudo" maxlength="50" /></td>
                                             </tr>
                                             <tr>
                                             <td><label for="message">Message:</label></td>
                                              <td><textarea id="message" name="message" cols="50" rows="3" onfocus="this.value='';"></textarea></td>
                                             </tr>
                                             <tr>
                                             <td>&nbsp;</td>
                                              <td><input type="button" name="env" value="Envoyer" onclick="envoyer();" /></td>
                                             </tr>
                                            </table>
                                           </form>
                                            <script type="text/javascript">
                                                setInterval(afficher(), 1000);
                                            </script>
                                            <div id="dixmsg">
                                            </div>
                                        </div>
                                        
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          10 janvier 2009 à 23:53:56

                                          Je vais vous montrez tous mes codes. Ca ne marche toujours pas. :colere:


                                          CHAT.PHP

                                          </span>

                                          <?php session_start(); ?>
                                          <!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" >
                                             <head>
                                                 <title>Pokéfun-Page d'acceuil</title>
                                                 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                                          	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
                                          	   <link rel="icon" type="image/png" href="http://www.favicon.cc/favicon/0/35/favicon.ico" />
                                          	   <script type="text/javascript" src="minichat.js"></script>
                                          
                                                 <?php include "cookie.php" ?>
                                          	   <?php include "calendar.php" ?>
                                          	   <?php include "bbc.php" ?>
                                          	   <?php include "code.php" ?>
                                          	   <?php include "fonction.php" ?>
                                             </head>
                                             <body>
                                             <div id="en_tete">
                                          
                                          </div>
                                            <?php include "menu.php" ?> 
                                          <!-- Le corps -->
                                          
                                          <div id="corps">
                                          <h1>Chat</h1>
                                          
                                          <?php mysql_connect("sql.olympe-network.com", "ds", "vdsvs"); // Connexion à MySQL
                                          mysql_select_db("base") 
                                          ?>
                                          <form action="envoyer.php" method="post">
                                               <table>
                                               <tr>
                                                <td><label for="pseudo">Pseudo:</label></td>
                                                <td><input type="text" id="pseudo" name="pseudo" maxlength="50" /></td>
                                               </tr>
                                               <tr>
                                               <td><label for="message">Message:</label></td>
                                                <td><textarea id="message" name="message" cols="50" rows="3" onfocus="this.value='';"></textarea></td>
                                               </tr>
                                               <tr>
                                               <td>&nbsp;</td>
                                                <td><input type="button" name="env" value="Envoyer" onclick="envoyer();" /></td>
                                               </tr>
                                              </table>
                                             </form>
                                              <script type="text/javascript">
                                                  setInterval(afficher(), 1000);
                                              </script>
                                              <div id="dixmsg">
                                              </div>
                                          </div>
                                          	
                                          </div> 
                                          
                                          <!-- Le pied de page -->
                                          <div id="pied_de_page">
                                          
                                           
                                                              <p>Copyright "Copyright", copie non authorisé.</p>
                                          					 
                                          					 
                                          </div>
                                          
                                          
                                             </body>
                                          </html>
                                          


                                          AFFICHER.PHP

                                          </span>

                                          <?php 
                                          mysql_connect("sql.olympe-network.com", "rgegre", "gregrd"); // Connexion à MySQL
                                          mysql_select_db("base") 
                                          ?>
                                          <?php
                                          // On se connecte d'abord à MySQL :
                                          // On utilise la requête suivante pour récupérer les 10 derniers messages :
                                          $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10");
                                          // On se déconnecte de MySQL
                                          
                                          // Puis on fait une boucle pour afficher tous les résultats :
                                          while ($donnees = mysql_fetch_array($reponse) )
                                          {
                                          ?>
                                          <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
                                          <?php
                                          }
                                          ?>
                                          



                                          ENVOYER.PHP

                                          </span>

                                          <?php 
                                          mysql_connect("sql.olympe-network.com", "", ""); // Connexion à MySQL
                                          mysql_select_db("base") 
                                          ?>
                                          <?php
                                          mysql_query("INSERT INTO chat VALUES('', '".$_GET['pseudo']."', '".$_GET['message']."')");
                                          ?>
                                          


                                          MINICHAT.JS

                                          </span>
                                          function envoyer() {
                                          	if(window.XMLHttpRequest) // FF
                                          		xhr_object = new XMLHttpRequest();
                                          	else if(window.ActiveXObject) // IE
                                          		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                                          	else
                                          		return(false);
                                          	 xhr_object.open("GET","envoyer.php?pseudo=" + document.getElementById("pseudo").value + "&message="+ document.getElementById("message").value, false);// Ouverture de la page Voulu
                                          	xhr_object.send(null);
                                          }
                                          function afficher() {
                                          	if(window.XMLHttpRequest) // FF
                                          		xhr_object = new XMLHttpRequest();
                                          	else if(window.ActiveXObject) // IE
                                          		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                                          	else
                                          		return(false);
                                                  xhr_object.open("GET","afficher.php", false);// Ouverture de la page Voulu
                                          	xhr_object.send(null);
                                                  document.getElementById("dixmsg").innerHTML = xhr_object.responseText; // Ecriture dans dixmsg
                                          }
                                          



                                          SI vous trouvez le problème, bravo...

                                          Merci
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            11 janvier 2009 à 18:24:59

                                            salut, je peux te faire ça si tu veux. file ton lien.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              11 janvier 2009 à 18:57:38

                                              Citation : hugogo

                                              salut, je peux te faire ça si tu veux. file ton lien.



                                              Yeah! J'attendais ta venue. Je te passe le lien par MP. Mon site est trop fragile et l'hebergeur plante de temps à autre.

                                              Merci :)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                11 janvier 2009 à 19:32:21

                                                Tu appelle le setInterval avant d'avoir declaré le div "dixmsg".
                                                Donc il ne peut pas le trouvé.
                                                Il faut que tu mettes dans ton js :
                                                window.onload = function() { setInterval(afficher(), 1000); };
                                                
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  12 janvier 2009 à 13:16:57

                                                  Soit tu met ce que je t'ai ecrit dans ton fichier js (n'importe ou du moment que c'est pas dans un fonction).
                                                  Soit tu gardes ton code met tu le place après avoir mis le div dixmsg
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    12 janvier 2009 à 23:35:08

                                                    j'ai tester, ca marche tout toujours pas =P
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      13 janvier 2009 à 21:07:56

                                                      Je suis allé sur ta page et moi je vois sa :
                                                      <script type="text/javascript">
                                                            setInterval(afficher(), 1000);
                                                      </script>
                                                      <div id="dixmsg"> </div>
                                                      

                                                      Tu appelle le setInterval AVANT les div.
                                                      Il faut le mettre APRES :
                                                      <div id="dixmsg"> </div>
                                                      <script type="text/javascript">
                                                            setInterval(afficher(), 1000);
                                                      </script>
                                                      
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        13 janvier 2009 à 21:32:08

                                                        En fait quand on écris fonction(), la fonction s'execute, donc quand tu écris :
                                                        setTimeout(taFonction(), 1000);
                                                        Beh ce qui est envoyé en fait, c'est le return de taFonction, donc si taFonction, c'est :
                                                        function taFonction() {
                                                        return "toto";
                                                        }
                                                        Alors
                                                        setTimeout(taFonction(), 1000);
                                                        Est l'équivalent de setTimeout("toto", 1000);

                                                        Donc mauvais syntaxe, il faut utiliser setTimeout(taFonction, 1000);
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Chat PHP/Javascript.

                                                        × 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.
                                                        • Editeur
                                                        • Markdown