2013-09-12 2 views
0

Поскольку мой последний вопрос был очень расплывчатым, я подумал, что я проясню некоторые вещи. Я изучаю, как создать частное приложение чата (только для образовательных целей), и я пытаюсь выяснить, как лучше всего сделать частный чат. Я создал 2 таблицы, user и chat. В chat, у меня есть 5 столбцов:Извлечение сообщений из идентификатора пользователя в mysql/php

  • message_id
  • User_ID
  • Имя пользователя
  • сообщение
  • отправить

Я хочу получать сообщения только из выбранного user_id.

Прямо сейчас, вот моя форма отправки. Имя ввода send = данные, которые я хочу получить. Пока я не получу вещи, я хочу только получить номер user_id (чтобы вы поместили номер в текстовой области, чтобы поболтать с этим именем пользователя).

<form name="form" method="post"> 
    <input type="text" name="send" id="send" value=""> 
    <input name="user_id" type="hidden" value="<?php echo $_SESSION['user_id'];?>" id="user_id"> 
    <textarea name="message" class="message" onkeydown="if (event.keyCode == 13) document.getElementById('submit').click()"></textarea> 
    <input type="submit" name="Submit" id="submit" value=""> 
</form> 

А вот мой PHP форма поиска

<?php 
class Chat extends Core { 
    public function fetchMessages() { 
     $this->query(" 
     SELECT   chat.message, 
         users.username, 
         users.user_id, 
         chat.send 
     FROM   chat 
     JOIN   users 
     ON    chat.user_id //and chat.send = users.user_id 
     ORDER BY  chat.timestamp 
     DESC 
    "); 

    return $this->rows(); 
    } 

} 

В принципе, я хочу, чтобы задать условие, чтобы что-то вроде:

<?php 
$send=$_POST['send']; 
$userid=$_POST['user_id']; 
if ($send == $userid || (isset($_POST['user_id']))) //this isn't correct- just trying to display my though 
{ 
    //retrieve message from user_id number in sql table, allowing the people that have the same user_id as send to only read the message. 
} 
?> 

Так в основном, как я могу только получить информацию для определенного номера user_id и где разместить это условие?

+0

Действие @Mihai по умолчанию соответствует текущему URL-адресу, поэтому вам не нужно, если код обработки находится в том же скрипте, что и код для отображения формы. – Barmar

+0

@Barmar Но вам не нужно, чтобы он был пустым в этом случае? – Mihai

+0

У меня возникли проблемы с пониманием того, что вы хотите сопоставить: 'user_id' или' send'? – Barmar

ответ

0

Я не совсем уверен, что вы имеете в виду, но если вы хотите получать сообщения от определенного идентификатора пользователя, вы могли бы сделать что-то вроде этого:

if(isset($_POST['getMsgsById']) && isset($_POST['userid'])){ 
    $userid = (int)$_POST['userid']; 

    $chat = new Chat(); // 


    if(!$msgs = $chat->getMsgsByUserId($userid)){ 
     echo "No messages found"; 
    }else{ 
     $length = count($msgs); 

     for($i=0;$i<$length;$i++){ 
      echo $msgs[$i]['msg']. '<br />'; 
     } 

    } 
} 


class Chat{ 

    public function getMsgsByUserId($id){ 
     $result = mysql_query("SELECT * FROM your_message_table WHERE userid=$id"); 
     if(mysql_num_rows($result) == 0) 
      return array(); 

     while($info = mysql_fetch_assoc($result)){ 
      $arr[] = $info; 
     } 

     return $arr; 
    } 

} 

Ofcourse это просто что-то очень быстро.

+0

Спасибо! Я собираюсь немного подправить, и я отправлю его, как только закончу. Но это то, что я искал. – user2760141

Смежные вопросы