IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

chat Privé entre deux personnes


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut chat Privé entre deux personnes
    Bonjour

    j'ai mis en place un t'chat entre deux personnes en ajax , avant de me dire ici c'est un forum php mon probleme vient justement coté php mysql

    j'affiche les messages via cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     $cUserId = $_SESSION["user_id"];
     $cUserIdto =  $_SESSION["user_to"];
     
        $messages = array();
        $query = <<<QUERY
            SELECT 
              `chat`.`message`, 
              `chat`.`sent_on`,
              `membre`.`id`, 
              `membre`.`pseudo`
            FROM `membre`
            JOIN `chat`
              ON `chat`.`user_id` = `membre`.`id`
            WHERE `chat`.`user_id` = '{$cUserId}' AND `chat`.`user_to` = '{$cUserIdto}' ORDER BY `sent_on`
    QUERY;
    j'ai fait un echo pour voir la requete j'ai bien user_id et user_to qui s'affiche

    user_id et user_to sont tous les deux dans la meme table et je voudrais afficher les messages SEULEMENT entre user_id ET user_to ou alors en fonction de la session entre user_to et user_id

    quelqu'un peut m'aider

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Et quel est le problème ?

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    pour les tests j'appelle les messages comme ça

    http://www.monsite.com/chat.php?user_from=1&user_to=3

    mais comme c'est une messagerie instantanée si l'utilisateur 3 ne voit pas les messages sauf si c'est lui qui les envoi et idem pour l'utilisateur 2

    un exemple ici https://www.deuxtoiamoi.com/test/cha...id=3&user_to=1


    la page d'appelle des fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    <?php
     
     
     
    /**
     * Description of FbChatMock
     *
     * @author Tamil
     */
     
     $cUserId = $_SESSION["user_id"];
     $cUserIdto =  $_SESSION["user_to"];
     
    class FbChatMock {
     
      // Holds the database connection
      private $dbConnection;
     
      //----- Database connection details --/
      //-- Change these to your database values
     
      private $_dbHost = 'madaimmola01.mysql.db';
     
      private $_dbUsername = 'madaimmola01';
     
      private $_dbPassword = 'Didilulu31';
     
      public $_databaseName = 'madaimmola01';
     
      //----- ----/
     
      /**
       * Create's the connection to the database and stores it in the dbConnection
       */
      public function __construct() {
        $this->dbConnection = new mysqli($this->_dbHost, $this->_dbUsername, 
            $this->_dbPassword, $this->_databaseName);
     
        if ($this->dbConnection->connect_error) {
          die('Connection error.');
        }
      }
     
      /**
       * Get the list of messages from the chat
       * 
       * @return array
       */
     
     
      public function getMessages() {
     $cUserId = $_SESSION["user_id"];
     $cUserIdto =  $_SESSION["user_to"];
     
        $messages = array();
        $query = <<<QUERY
            SELECT 
              `chats`.`message`, 
              `chats`.`sent_on`,
              `membre`.`id`, 
              `membre`.`pseudo`
            FROM `membre`
            JOIN `chats`
              ON `chats`.`user_id` = `membre`.`id`
            WHERE `chats`.`user_id` = '$cUserId' AND `chats`.`user_to` = '$cUserIdto' OR `chats`.`user_to` = '$cUserIdto' AND `chats`.`user_id` = '$cUserId' ORDER BY `sent_on`
    QUERY;
     
     
        // Execute the query
        $resultObj = $this->dbConnection->query($query);
        // Fetch all the rows at once.
        while ($row = $resultObj->fetch_assoc()) {
          $messages[] = $row;
        }
     
        return $messages;
      }
     
      /**
       * Add a new message to the chat table
       * 
       * @param Integer $userId The user who sent the message
       * @param String $message The Actual message
       * @return bool|Integer The last inserted id of success and false on faileur
       */
      public function addMessage($userId, $message) {
        $addResult = false;
     
        $cUserId = $_SESSION["user_id"];
     $cUserIdto =  $_SESSION["user_to"];
        // Escape the message with mysqli real escape
        $cMessage = $this->dbConnection->real_escape_string($message);
     
        $query = <<<QUERY
          INSERT INTO `chats`(`id`, `user_id`, `message`, `sent_on`, `user_to`)
          VALUES ('', {$cUserId}, '{$cMessage}', UNIX_TIMESTAMP(), {$cUserIdto})
    QUERY;
     
        $result = $this->dbConnection->query($query);
     
        if ($result !== false) {
          // Get the last inserted row id.
          $addResult = $this->dbConnection->insert_user_id;
        } else {
          echo $this->dbConnection->error;
        }
     
        return $addResult;
      }
     
    }

    et Get_message.php qui est appelle aussi les message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    session_start();
     
    require_once __DIR__ . '/../../core/FbChatMock.php';
     
    $chat = new FbChatMock();
    $messages = $chat->getMessages();
    $chat_converstaion = array();
     
     
     
     
    $pdo = new PDO('mysql:host=madaimmola01.mysql.db;dbname=madaimmola01','madaimmola01','Didilulu31');
     
        $sql = "SELECT COUNT(*) AS nb FROM chats where user_id='$cUserId' and user_to='$cUserIdto' or user_to='$cUserIdto' and user_id='$cUserId' ";
        $result = $pdo->query($sql);
        $columns = $result->fetch();
        $nb = $columns['nb'];
     
     
     
    if ($nb >= "1") {
      $chat_converstaion[] = '<table>';
      foreach ($messages as $message) {
        $msg = htmlentities($message['message'], ENT_NOQUOTES);
        $user_name = ucfirst($message['pseudo']);
        $sent = date('F j, Y, g:i a', $message['sent_on']);
        $chat_converstaion[] = <<<MSG
          <tr class="msg-row-container">
            <td>
              <div class="msg-row">
                <div class="avatar"></div>
                <div class="message">
                  <span class="user-label"><a href="#" style="color: #6D84B4;">{$user_name}</a> <span class="msg-time">{$sent}</span></span><br/>{$msg}
                </div>
              </div>
            </td>
          </tr>
    MSG;
      }
      $chat_converstaion[] = '</table>';
    } else {
      echo '<span style="margin-left: 25px;">Pas de messages ici :D</span>';
    }
     
    echo implode('', $chat_converstaion);
    ?>
    la page index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <?php
        session_start();
     
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title></title>
        <!--    <link href="style/bootstrap.min.css" rel="stylesheet" type="text/css" />
            <link href="style/bootstrap-theme.min.css" rel="stylesheet" type="text/css" />-->
        <link href="style/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" type="text/css" />
        <!--    <link href="style/non-responsive.css" rel="stylesheet" type="text/css" />-->
        <link href="style/core.css" rel="stylesheet" type="text/css" />
      </head>
      <body>
     
        <?php
     
     
        $_SESSION["user_id"] = $_GET["user_id"];
        $_SESSION["user_to"] = $_GET["user_to"];
     
        // Load the messages initially
        require_once __DIR__ . '/../core/FbChatMock.php';
        $chat = new FbChatMock();
        $messages = $chat->getMessages();
        ?>
     
        <div class="container" style="border: 1px solid lightgray;">
          <div class="msg-wgt-header">
     
          </div>
          <div class="msg-wgt-body">
            <table align="left">
              <?php
    $pdo = new PDO('mysql:host=madaimmola01.mysql.db;dbname=madaimmola01','madaimmola01','Didilulu31');
     
        $sql = "SELECT COUNT(*) AS nb FROM chats where user_id='$cUserId' and user_to='$cUserIdto' or user_to='$cUserIdto' and user_id='$cUserId' ";
        $result = $pdo->query($sql);
        $columns = $result->fetch();
        $nb = $columns['nb'];
     
     
     
    if ($nb >= "1") {
                foreach ($messages as $message) {
                  $msg = htmlentities($message['message'], ENT_NOQUOTES);
                  $user_name = ucfirst($message['pseudo']);
                  $sent = date('F j, Y, g:i a', $message['sent_on']);
                  echo <<<MSG
                  <tr class="msg-row-container">
                    <td>
                      <div class="msg-row">
                        <div class="avatar"></div>
                        <div class="message">
                          <span class="user-label"><a href="#" style="color: #6D84B4;">{$user_name}</a> <span class="msg-time">{$sent}</span></span><br/>{$msg}
                        </div>
                      </div>
                    </td>
                  </tr>
    MSG;
                }
              } else {
                echo '<span style="margin-left: 25px;">Pas de Messages </span>';
              }
              ?>
            </table>
          </div>
          <div class="msg-wgt-footer">
            <textarea id="chatMsg" placeholder="Type your message. Press shift + Enter to send"></textarea>
          </div>
        </div>
     
        <script type="text/javascript" src="scripts/jquery-1.11.0.min.js"></script>
        <script type="text/javascript" src="scripts/chat.js"></script>
      </body>
    </html>
    et aussi au cas ou la page chat.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    // OOP Way
    fbChat = {
      bootChat: function() {
        var chatArea = $('#chatMsg'),
                that = this;
     
        // Load the messages every 5 seconds
        setInterval(this.getMessages, 1000);
     
        // Bind the keyboard event
        chatArea.bind('keydown', function(event) {
          if (event.keyCode == 13 && event.shiftKey == false) {
            var message = chatArea.val();
     
            if (message.length !== 0) {
              that.sendMessage(message);
              event.preventDefault();
            } else {
              alert('Provide a message to send!');
            }
          }
        });
      },
      sendMessage: function(message) {
        var that = this;
        $.ajax({
          url: 'ajax/add_msg.php',
          method: 'post',
          data: {msg: message},
          success: function(data) {
            $('#chatMsg').val('');
            that.getMessages();
          }
        });
      },
      getMessages: function() {
        $.ajax({
          url: 'ajax/get_messages.php',
          method: 'GET',
          success: function(data) {
            $('.msg-wgt-body').html(data);
          }
        });
      }
    };
     
    // Initialize the chat
    //fbChat.bootChat();
     
    // Procedural way
    /**
     * Add a new chat message
     * 
     * @param {string} message
     */
    function send_message(message) {
      $.ajax({
        url: 'ajax/add_msg.php',
        method: 'post',
        data: {msg: message},
        success: function(data) {
          $('#chatMsg').val('');
          get_messages();
        }
      });
    }
     
    /**
     * Get's the chat messages.
     */
    function get_messages() {
      $.ajax({
        url: 'ajax/get_messages.php',
        method: 'GET',
        success: function(data) {
          $('.msg-wgt-body').html(data);
        }
      });
    }
     
    /**
     * Initializes the chat application
     */
    function boot_chat() {
      var chatArea = $('#chatMsg');
     
      // Load the messages every 5 seconds
      setInterval(get_messages, 1000);
     
      // Bind the keyboard event
      chatArea.bind('keydown', function(event) {
        // Check if enter is pressed without pressing the shiftKey
        if (event.keyCode == 13 && event.shiftKey == false) {
          var message = chatArea.val();
          // Check if the message is not empty
          if (message.length !== 0) {
            send_message(message);
            event.preventDefault();
          } else {
            alert('Provide a message to send!');
            chatArea.val('');
          }
        }
      });
    }
     
    // Initialize the chat
    boot_chat();

Discussions similaires

  1. Chat vidéo entre une et plusieurs personnes
    Par jerem74 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/02/2016, 15h45
  2. [.NET VC++] ou exclusif entre deux String
    Par benoitB dans le forum MFC
    Réponses: 7
    Dernier message: 25/11/2003, 11h20
  3. Temps de réponse entre deux sites
    Par coup dur dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 16/10/2003, 15h26
  4. Connexion entre deux ordi [Débutant]
    Par Ryadus dans le forum Développement
    Réponses: 2
    Dernier message: 12/06/2003, 21h47
  5. Réponses: 5
    Dernier message: 25/03/2003, 19h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo