За последние 24 часа нас посетили 17487 программистов и 1719 роботов. Сейчас ищут 1516 программистов ...

Как реализовать смс переписку между авторизованными пользователями сайта PHP MySQL

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 11 май 2017.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не понял
    --- Добавлено ---
    вернее, я не понял, чего ты не понимаешь. мне казалось ты понимаешь.
    давай заново всё распиши в одном сообщении, и задай развёрнутый вопрос.
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    1. Я вытягиваю все диалоги которые есть между пользователям.
    2. Хочу по клику или по ссылке диалога открыть список сообщений между 2-мя пользователями
    3. ну и потом, уже буду дальше действовать с сообщениями, прочтения сообщений ответ на них

    1. Пункт вроде получился, вытащить все диалоги
    2. На втором пункте я завис
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    завис-то почему, друг? ну?
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Я не пойму как будет правильно строится логика.
    1. сперва надо показать все диалоги
    2. потом при клике на один из них открывалась переписка между этими пользователями
    3. у меня проблемы с GET end POST ссылками.
    4. создавать ссылку могу, но не пойму когда перехожу по ней, то ошибки выкидывает, что приходится все делать на GET.
    5. либо создавать именно кнопку типа с формой.(
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Таких ссылок не бывает. Их можно только эмулировать на javascript. Ты не усваиваешь, что тебе пишут. Браузер посылает post-запрос в двух случаях:
    1. Отправлена форма методом post
    2. Из JavaScript специально попросили сделать именно post-запрос (т.е. AJAX)

    Пока не знаешь javascript, научись на css заставлять кнопку выглядеть как ссылку, и пиши где надо формы :) А так есть очень простой приём на javascript
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пост-ссылок не бывает
    --- Добавлено ---
    этого достаточно, чтобы показать диалог

    плюс я тебе рекомендую делать сразу нормальные урлы

    ты на фреймворке? если нет - попробуй пинпай =)
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Да знаю что POST ссылок нету, хотя можно сказать не знал.
    @mkramer
    css знаю до придела нужного, кнопки ссылки превратить в кнопки умею.
    @igordata
    @mkramer
    может объясните как с js отправлять POST, спасибо.
    Я начал с нуля писать опять переписку, + диалоги.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тебе не нужен пост для того, чтобы выбрать диалог
     
    mkramer нравится это.
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    POST не нужен, когда ты выбираешь диалог. POST нужен, когда что-то где-то меняется. Обычно ссылки, которые через js переадресуются на post, используются для удаления, к примеру, чтоб защититься от csrf-атак (тут в соседней теме).
    Если ты о ссылках с имитацией post, то из js создаётся невидимая форма с нужным action и сабмитится.
     
  10. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    То есть мне нужно использовать GET для открытия диалога?
     
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Мужики давайте покажу что я делаю, а вы мне объясните что я не так делаю?
    1. делом я перехожу в диалоги при нажатии на ссылку
    PHP:
    1. <a href="?go=all_d">диалоги</a>
    2. делом открывается скрипт который выводит список диалогов.
    PHP:
    1. <?php
    2. /*
    3.     Appointment: Все диалоги
    4.     File: im.php
    5. */
    6. include($_SERVER['DOCUMENT_ROOT'].'/system/inc/inc.php');
    7. error_reporting(E_ALL); // E_ALL - отображаем ВСЕ ошибки
    8.  
    9. if(!defined('BEZ_KEY'))
    10.     die('Hacking attempt!');
    11.  
    12. $user_id = $_SESSION['user_id'];
    13.  
    14. //################### Вывод всех диалогов ###################//
    15. $vivod_dailog = $pdo->prepare("
    16. SELECT SQL_CALC_FOUND_ROWS
    17. `tb1`.`msg_num`, `im_user_id`,
    18. `tb2`.`user_id`, `user_login`, `user_photo`
    19. FROM `im` tb1, `users` tb2
    20. WHERE `tb1`.`iuser_id` = ?
    21. AND `tb1`.`im_user_id` = `tb2`.`user_id`
    22. ORDER by `idate`
    23. DESC LIMIT 0, 50");
    24. $vivod_dailog->execute([$user_id]);          
    25. $dialog_result = $vivod_dailog->fetchall();
    26.  
    27. if($dialog_result){
    28. echo 'Список всех диалогов<br>';
    29.  
    30. foreach($dialog_result as $row){
    31.  
    32. echo 'ID: '.$row['im_user_id'].' Логин: '.$row['user_login'].'<br>';
    33.  
    34. if($row['user_photo'])
    35. echo '<img src="/uploads/users/full_img/'.$row['user_photo'].'" height="60"><br>';
    36. else
    37. echo '<img src="/uploads/users/full_img/no_ava/no_ava.png" height="50px"><br>';
    38.  
    39. if($row['msg_num'])
    40. echo 'Количество смс'.'<div class="im_new fl_l" id="msg_num'.$row['im_user_id'].'">'.$row['msg_num'].'</div>';
    41. else
    42. echo $row['msg_num'], '';
    43.  
    44. echo'<a href="?go=all_m&act='.$row['im_user_id'].'" onClick="">посмотреть диалог</a>'; ### <<<<<===== вот эта ссылка
    45. echo'<a href="?go=f_del_dialog&for_dlg='.$row['im_user_id'].'" onClick="">удалить диалог</a><br><hr>';
    46. }
    47.  
    48. }else{
    49. echo 'Диалогов нет<br>';
    50. }
    51. ?>
    3. делом я создаю ссылку в этом файле что описан выше, что бы при клике на ссылку открыть весь диалог между пользователями
    PHP:
    1. <?php
    2. /*
    3.     Appointment: Все сообщения
    4.     File: im.php
    5. */
    6. include($_SERVER['DOCUMENT_ROOT'].'/system/inc/inc.php');
    7. error_reporting(E_ALL); // E_ALL - отображаем ВСЕ ошибки
    8.  
    9. //Ключ защиты
    10. if(!defined('BEZ_KEY'))
    11. die('И че ты тут забыл??');
    12.  
    13. //Создаем гет параметр для работы с данными
    14. $act = isset($_GET['act'])  ? $_GET['act'] : false;
    15. $user_id = $_SESSION['user_id'];//Сессия пользователя
    16.  
    17. ################### Вывод всех полученных сообщений ###################
    18.  
    19. $page = 1;
    20. $gcount = 20;
    21. $limit_page = ($page-1)*$gcount;
    22.  
    23. //Запрос в БД на вывод сообщений
    24. $z_inbox = $pdo->prepare('
    25. SELECT SQL_CALC_FOUND_ROWS
    26. `tb1`.`id`, `for_user_id`, `from_user_id`, `text`, `pm_read`, `date`,
    27. `tb2`.`user_id`, `user_login`, `user_photo`
    28. FROM `messages` tb1, `users` tb2
    29. WHERE `tb1`.`for_user_id` = ?
    30. AND `tb1`.`from_user_id` = `tb2`.`user_id`
    31. ORDER by `date` DESC LIMIT ?');
    32. $z_inbox->execute([$user_id, $gcount]);
    33. $res_inbox = $z_inbox->fetchall();
    34.  
    35. //Если есть ответ из БД, то считаем кол-вот ответов
    36. if($res_inbox){
    37.  
    38. //выводим количество сообщений  
    39. $msg_count = $pdo->prepare('
    40. SELECT COUNT(id) AS `cnt`
    41. FROM `messages` `tb1`, `users` `tb2`
    42. WHERE `tb1`.`for_user_id` = ?
    43. AND `tb1`.`from_user_id` = `tb2`.`user_id`');
    44. $msg_count->execute([$user_id]);      
    45. $res_msg_count = $msg_count->fetch();
    46.  
    47. //header сообщений полученные|отправленные|просмотр сообщений
    48. include'./templates/default/messages/head.php';
    49.  
    50. /*if($user_id['user_msg_type'] == 0)
    51. echo $user_id['user_msg_type'].'Показать в виде диалогов';
    52. else
    53. echo $user_id['user_msg_type'], 'Показать в виде сообщений';*/
    54.  
    55.  
    56. #############Выводим количесвто сообщений найденных для пользователя########
    57. if($res_inbox){
    58. echo 'Вы получили <span id="all_msg_num">'.$res_msg_count['cnt'].'</span>msg<br>';
    59. }else{
    60. echo'Нет полученных сообщений<br>';
    61. }
    62.  
    63. //Если есть сообщения то продолжаем, если нет, то выводи информацию
    64. if($res_inbox){
    65. // include'./templates/default/messages/message.php';
    66.  
    67. foreach ($res_inbox AS $mess) {
    68.  
    69. //Строка фото
    70.             if($mess['user_photo']){
    71.                 echo '<img src="/uploads/users/full_img/'.$mess['user_photo'].'" height="50"><br>';
    72.             }else{
    73.                 echo '<img src="/uploads/users/full_img/no_ava/no_ava.png'.$mess['user_photo'] .'" height="50px"><br>';
    74.             }
    75. //Строка сообщения
    76.             echo ' <div>'.stripslashes(strip_tags($mess['text'])).'('.$mess['pm_read'].')'.'</div>';
    77. //Строка от кого
    78.       echo 'От кого ID: '. $mess['from_user_id'].'<br>';
    79. //Строка номер сообщения
    80.       echo '№: '. $mess['id'].'<br>';
    81. //Строка дата
    82.             echo 'Дата: '. $mess['date'].'<br>';
    83. //Строка ответить     сообщение      
    84.       echo '<br><a href="?go=msg&mid='.$mess['id'].'&act=review" onClick="Page.Go(this.href); return false">Ответить</a>';
    85. //Строка удалить сообщение  
    86.       echo '<a href="?go=f_delet&mid='.$mess['id'].'" onClick="">Удалить</a><br>';
    87.        // var_dump($mess);
    88.         }
    89.         if($res_msg_count['cnt'] > $gcount)
    90.         echo $gcount, $res_msg_count['cnt'], '<a href="/index.php?go=msg&page=">Сделующая</a>';                                  
    91.     }else{
    92.         echo 'no_msg1';
    93.     }
    94. }else{
    95. echo 'Пока сообщений нет, у вас.';
    96. }
    97. // }
    98. ?>
    4. при нажатии на ссылку посмотреть диалог у меня открывается полный список смс от разных пользователей, а мне нужно чтобы:
    открывался список смс между двумя пользователями.
    5. как быть в такой ситуации, если таблицы нужны могу показать, ах да связь что в таблице messages(сообщения) что в таблице im(диалоги) связь стоит многие к одному.
    Проконсультируйте меня по коду) спасибо, да признаюсь у меня с логикой проблема(
     
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Покажи обработчик "посмотреть диалог"
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Вот обработчик просмотр сообщений, то есть если юзер нажимает на сообщение или на кнопку ответить то смс считается прочитанным:

    PHP:
    1. //################### Просмотр сообщения ###################//
    2. case "review":
    3. $mid = intval($_GET['mid']);
    4. // $mid = isset($_GET['mid'])  ? $_GET['mid'] : false;
    5.  
    6. if($mid){
    7.  
    8. //SQL Запрос за вывод сообщения
    9. $review = $pdo->prepare('
    10. SELECT
    11. `tb1`.`id`, `from_user_id`, `history_user_id`, `text`, `pm_read`, `date`,
    12. `tb2`.`user_id`, `user_login`, `user_photo`
    13. FROM `messages` `tb1`, `users` `tb2`
    14. WHERE `tb1`.`id` = ?
    15. AND `tb1`.`from_user_id` = `tb2`.`user_id`
    16. AND `tb1`.`for_user_id` = ?');
    17. $review->execute([$mid, $user_id]);
    18. $res_review = $review->fetch();
    19.  
    20. //header сообщений
    21. include'./templates/default/messages/head.php';
    22. echo $mid.'<br>';
    23.  
    24. if($res_review){
    25.  
    26. include'./templates/default/messages/review.php';
    27.  
    28. if($res_review['user_photo']){
    29. echo '<img src="/uploads/users/full_img/'.$res_review['user_photo'].'" height="50"><br>';
    30. }else{
    31. echo '<img src="/uploads/users/full_img/no_ava/no_ava.png'.$res_review['user_photo'] .'" height="50px"><br><br>';
    32. }
    33.  
    34. echo 'От: '.$res_review['user_login'].'<br>';
    35. echo 'Сообщение: '.stripslashes($res_review['text']).'<br>';
    36. echo 'ID: '.$res_review['from_user_id'].'<br>';
    37. echo 'Date: '.$res_review['date'].'<br>';
    38. echo '№смс: '.$mid.'<br>';
    39.  
    40. //Если статус сообщения не прочитано, то обновляем его
    41. if($res_review['pm_read'] == 'no'){
    42.  
    43. $up1 = $pdo->prepare('
    44. UPDATE `messages`
    45. SET `pm_read` = "yes"
    46. WHERE `id` = :id');
    47. $up1->execute(['id' => $mid]);
    48.  
    49. $up2 = $pdo->prepare('
    50. UPDATE `messages`
    51. SET `pm_read` = "yes"
    52. WHERE `id` = :id');
    53. $up2->execute(['id' => $mid+1]);
    54.  
    55. $up3 = $pdo->prepare('
    56. UPDATE `users`
    57. SET `user_pm_num` = `user_pm_num`-1
    58. WHERE user_id = :user_id');
    59. $up3->execute(['user_id' => $user_id]);
    60.  
    61. $up4 = $pdo->prepare('
    62. UPDATE `im`
    63. SET `msg_num` = `msg_num`-1
    64. WHERE `iuser_id` = :iuser_id
    65. AND `im_user_id` = :im_user_id');
    66. $up4->execute(['iuser_id' => $user_id, 'im_user_id' => $res_review['from_user_id']]);
    67. // echo 'сообщение прочитано';
    68. }else{
    69. echo 'сообщение прочитано.';
    70. }
    71.  
    72. }else{
    73. echo 'Сообщения такого не существует, или оно предназначенно не вам!';
    74. }
    75.  
    76. }else{//Конец $mid
    77.     echo 'еще какая та ошибка';
    78. }
    79. break;
    Посмотрите и объясните мою ошибку, спасибо.
     
  14. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, что у тебя хранится в tb1
    --- Добавлено ---
    понял, не внимательно взглянул на твой запрос. В общем, зачем тебе псевдонимы для таблиц вроде бы у тебя нету там конфликтов.
    --- Добавлено ---
    @_ne_scaju_, раз используешь две таблицы, и начал указывать какая колонка к какой относится придерживайся этого подхода всегда. А то одно пишешь так, другое так, и не понятно что откуда.
    Код (Text):
    1. SELECT
    2.   `tb1`.`id`,
    3.   `from_user_id`,
    4.   `history_user_id`,
    5.   `text`,
    6.   `pm_read`,
    7.   `date`,
    8.   `tb2`.`user_id`,
    9.   `user_login`,
    10.   `user_photo`
    11. FROM
    12.   `messages` `tb1`,
    13.   `users` `tb2`
    14. WHERE
    15.   `tb1`.`from_user_id` = `tb2`.`user_id` AND `tb1`.`for_user_id` = ?
    Попробуй такой звпрос.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @_ne_scaju_
    у тебя у диалога нет собственного номер? только по юзеру можешь вытаскивать сообщения?
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Да только по юзеру вытаскивать могу сообщения, а что должен быть, если я создам номер для диалога то это будет выглядеть как то так:
    1 from for msg
    2 for from msg
    и какой тут может собственный номер?
     
  17. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Можете мне коротко рассказать структуру если не сложно, как построена на форумах система сообщений, например как на этом...

    И еще вопрос когда я просто хочу вывести данные лучше использовать в запросе prepare или же query в PDO всегда интересовал этот вопрос, ваша точка зрения...
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    prepare помогает экранировать данные, чтобы запрос не изменили, в query их так же можно экранировать через quote метод из PDO
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    1 2 3 4 5 и тп
     
  20. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    Значит я так понял лучше всегда использовать метод prepare, да?
    @igordata
    Да я знаю что свой номер это id диалога, просто если сообщение идут многие компании многим какой там может быть номер, не будет же для первого диалога такой записи:
    1 from for msg
    1 for from msg
    Запись же идёт по порядку:
    1 from for msg
    2 for from msg
    И т.д.
     
  21. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    В доке это все достаточно подробно расписано, как все работает.
    https://php.ru/manual/pdo.prepared-statements.html почитай.
    --- Добавлено ---
    Самому не приходилось реализовать. А так можешь скачать какой-нибудь движок форму и глянуть, какая у них структура базы. Как я у себя делал скидывал тебе структуру.
     
  22. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Я читал) Не помню когда ты мне скидывал структуру, скачал пару движков посмотрю что в них и как добавляется сообщения в бд. Буду изучать.
    К статье по видео и по примерам создал класс для БД, и почти уточню почти нет разницы в запросах)
    Буду за ноутом покажу класс, который сотворил.
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Всем привет, вот что получается у меня, вытягиваю все диалоги которые пришли пользователю так:
    PHP:
    1. default:
    2. //################### Вывод всех диалогов ###################//
    3. //Вывод диалогов
    4. $vivod_dailog = $pdo->prepare("
    5. SELECT SQL_CALC_FOUND_ROWS
    6. `tb1`.`dialog_id`, `from_dialog`, `for_dialog`,
    7. `tb2`.`user_id`, `user_login`, `user_photo`
    8. FROM `dialogs` tb1, `users` tb2
    9. WHERE `tb1`.`for_dialog` = ?
    10. AND `tb1`.`from_dialog` = `tb2`.`user_id`
    11. OR
    12. `tb1`.`from_dialog` = ?
    13. AND `tb1`.`for_dialog` = `tb2`.`user_id`
    14. ORDER by `idate`
    15. DESC LIMIT 0, 50");
    16. $vivod_dailog->execute([$user_id, $user_id]);          
    17. $dialog_result1 = $vivod_dailog->fetchall();
    18.  
    19. if($dialog_result1){
    20. //подключаем форму диалогов
    21. // include'./templates/default/im/dialog.php';
    22.  
    23. echo 'ALL dialogs<br>';
    24. foreach($dialog_result1 as $row){
    25. echo '<hr>';
    26. echo 'ID: '.$row['for_dialog'].' Логин: '.$row['user_login'].'<br>';
    27. if($row['user_photo'])
    28. echo '<img src="/uploads/users/full_img/'.$row['user_photo'].'" height="60"><br>';
    29. else
    30. echo '<img src="/uploads/users/full_img/no_ava/no_ava.png" height="50px"><br>';
    31. echo'<a href="?go=msg&act=inbox&for_id='.$row['from_dialog'].'" onClick="">просмотреть</a>';
    32. echo'<a href="?go=f_del_dialog&for_dlg='.$row['for_dialog'].'" onClick="">удалить диалог</a><br>';
    33. echo '<hr>';
    34. }
    35.  
    36. }else{
    37.     echo 'no dialog';
    38. }
    39. //header сообщений
    40. // include'./templates/default/im/head.php';
    41. break;
    а теперь хочу при нажатии на ссылку посмотреть вытащить список сообщений между этими пользователями
    пробую сделать так:
    PHP:
    1. ################### Вывод всех полученных сообщений ###################
    2. case 'inbox':
    3. $inbox = intval($_GET['for_id']);
    4.  
    5. if(isset($_GET['info']) == 1 )
    6.     echo'<script type="text/javascript">setTimeout(\'$(".err_yellow").fadeOut()\', 1500);</script>Ваше сообщение успешно отправлено.';
    7.  
    8. //Запрос в БД на вывод сообщений
    9. $z_inbox = $pdo->prepare('
    10. SELECT
    11. SQL_CALC_FOUND_ROWS
    12. `tb1`.`message_id`, `for_user_id`, `from_user_id`, `text`, `pm_read`, `date`,
    13. `tb2`.`user_id`, `user_login`, `user_photo`
    14. FROM
    15. `messages` tb1, `users` tb2
    16. WHERE
    17. `tb1`.`for_user_id` = ?
    18. AND
    19. `tb1`.`from_user_id` = `tb2`.`user_id`
    20. ORDER by
    21. `date`
    22. DESC LIMIT '.$limit_page.', '.$gcount.'');
    23. $z_inbox->execute([$user_id]);
    24. $res_inbox = $z_inbox->fetchall();
    25. //Если есть ответ из БД, то считаем кол-вот ответа
    26. if($res_inbox){
    27.  
    28. //выводим количество сообщений  
    29. $msg_count = $pdo->prepare('
    30. SELECT COUNT(message_id) AS `cnt`
    31. FROM `messages` `tb1`, `users` `tb2`
    32. WHERE `tb1`.`for_user_id` = ?
    33. AND `tb1`.`from_user_id` = `tb2`.`user_id`');
    34. $msg_count->execute([$user_id]);      
    35. $res_msg_count = $msg_count->fetch();
    36.  
    37. #############Выводим количесвто непрочитанных сообщений для пользователя########
    38.    if($res_msg_count){
    39.         echo 'Вы получили <span id="all_msg_num">'.$res_msg_count['cnt'].'</span>msg<br>';
    40.     }else{
    41.         echo'Нет полученных сообщений<br>';
    42.     }
    43.  
    44. //Если есть сообщения то продолжаем, если нет, то выводи информацию
    45. if($res_inbox){
    46. // include'./templates/default/messages/message.php';
    47.  
    48. foreach ($res_inbox AS $mess) {
    49. //Строка фото
    50.         echo '<hr>';
    51.         if($mess['user_photo']){
    52.             echo '<img src="/uploads/users/full_img/'.$mess['user_photo'].'" height="50">';
    53.         }else{
    54.             echo '<img src="/uploads/users/full_img/no_ava/no_ava.png" height="50px">';
    55.         }
    56. //Строка от кого
    57.         echo 'От : '. $mess['user_login'].'<br>';
    58. //Строка номер сообщения
    59.       // echo '№: '. $mess['id'].'<br>';
    60. //Строка сообщения
    61.         echo ' <div>'.stripslashes(strip_tags($mess['text'])).'</div>';
    62. //делаем проверку сообщение прочитано или нет
    63.         if($mess['pm_read'] == 'no'){
    64.             echo'<span style=color:red; >'.'Не прочитано</span><br>';
    65.         }else{
    66.             echo '<span style=color:green; >'.'Прочитанно</span><br>';
    67.         }
    68. //Строка дата
    69.         echo '<span style=color:silver; >'.'Дата: '. $mess['date'].'</span>';
    70. //Строка ответить     сообщение      
    71.         echo '<br><a href="?go=msg&mid='.$mess['message_id'].'&act=review" onClick="Page.Go(this.href); return false">Ответить</a>';
    72. //Строка удалить сообщение    
    73.         echo '<a href="?go=f_delet&mid='.$mess['message_id'].'" onClick="">Удалить</a><hr><br><br>';
    74.       //var_dump($mess);
    75.       //var_dump($user_id);
    76.     }
    77.     if($res_msg_count['cnt'] > $gcount)
    78.         echo $gcount, $res_msg_count['cnt'], '<a href="/index.php?go=msg&page=">Сделующая</a>';                                  
    79. }else{
    80.     echo 'no_msg1';
    81. }
    82. }else{
    83.     echo 'Пока сообщений нет, у вас.';
    84. }
    85. // }
    86. break;
    Но у меня таким образом вытягивается все сообщения пришедшие данному пользователю, не смотря на то даже на какой я диалог нажму, то ли от юзера1 то ли от юзера2.
    Вот вы можете считать меня нубом, или не умения учится правильно...
    Ну помогите поправьте меня в коде.
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    объясни свой SQL
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    SQL запрос?
    Какой именно, там где я пытаюсь вывести сообщения между пользователями?