Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с обменом сообщений при открытой сессии
Форумы портала PHP.SU » » Работа с СУБД » Проблема с обменом сообщений при открытой сессии

Страниц (1): [1]
 

1. Glazok - 19 Ноября, 2011 - 13:42:06 - перейти к сообщению
Переписка на сайте с открытой сессией. Значит, есть файл mes.php - список всех укороченных сообщений (этот файл работает нормально) и есть файл full_mes.php - полная версия сообщения. Т.е. на странице mes.php кликаешь по обрезанному тексту и попадаешь на full_mes.php где должна показываться полная версия сообщения.

Проблема вот в чём: чтобы не заморачиваться сменой аккаунтов, я отправляю сообщения самому себе. И последнее сообщение, которое я отправлю - в полной версии выглядит нормально, а все полученные до этого - отображается последнее отправленное сообщение.

Я знаю где проблема, но не знаю, как её решить. А проблема в файле full_mes.php. Вот строчка кода, которая отвечает за извлечение сообщения:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login' ORDER BY id DESC",$db);  
  2. $messages = mysql_fetch_array($tmp);
  3. Примечание: $login = $_SESSION['login']; т.е. логин под который открыта сессия. Поля таблицы messages:
  4.  
  5. id (auto_increment)
  6. author
  7. poluchate
  8. text
  9. view


Я понимаю, что в запросе к БД ORDER BY id DESC - лишнее, но без этого на странице выдаёт ошибку. Подскажите, пожалуйста, как исправить проблему, и сделать так, чтобы сообщение соответствовало обрезанному сообщению на mes.php. Заранее благодарен. Могу дать ссылку имя и пароль дать, чтобы посмотреть проблему, а могу два эти файла прислать
2. Опоссум - 22 Ноября, 2011 - 14:48:17 - перейти к сообщению
Покажи содержание файла full_mes.php.
3. snikers987 - 23 Ноября, 2011 - 12:52:37 - перейти к сообщению
Цитата:
лишнее, но без этого на странице выдаёт ошибку.


Какую ошибку?
4. Glazok - 23 Ноября, 2011 - 19:51:21 - перейти к сообщению
Опоссум пишет:
Покажи содержание файла full_mes.php.

я понимаю, что он не правильный, но не понимаю как сделать его правильным
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. // вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
  4.  
  5. include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
  6. if (isset($_GET['id'])) {$id =$_GET['id']; } //id "хозяина" странички
  7. else
  8. { exit("Вы зашил на страницу без параметра!");} //если не указали id, то выдаем ошибку
  9. if (!preg_match("|^[\d]+$|", $id)) {
  10. exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
  11. }
  12.  
  13. if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
  14. {
  15. //если существует логин и пароль в сессиях, то проверяем, действительны ли они
  16. $login = $_SESSION['login'];
  17. $password = $_SESSION['password'];
  18. $result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
  19. $myrow2 = mysql_fetch_array($result2);
  20. if (empty($myrow2['id']))
  21.   {
  22.   //Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
  23.    exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
  24.   }
  25. }
  26. else {
  27. //Проверяем, зарегистрирован ли вошедший
  28. exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
  29. $result = mysql_query("SELECT * FROM users WHERE id='$id'",$db);
  30. $myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id
  31.  
  32. if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует
  33.  
  34.  
  35. ?>
  36. <html>
  37. <head>
  38. <title>Сообщения | <?php echo $myrow['login']; ?></title>
  39. <link href="css/style.css" rel="stylesheet" type="text/css" />
  40. <link rel="shortcut icon" href="css/favicon.ico" />
  41.  
  42. </head>
  43. <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  44. <div id="index">
  45.  
  46. <div id="header">
  47. <div id="content">
  48. <?php
  49. $rslt = mysql_query("SELECT ");
  50.  
  51. $mes = "<a href='mes.php?id=$myrow2[id]'>Сообщения<strong>(1)</strong></a>";
  52. $mes2 = "<a href='mes.php?id=$myrow2[id]'>Сообщения</a>";
  53. ?>
  54. <div id="yellow_pol"><div class="ye">Сообщение</div>
  55. </div>
  56. <?php
  57. $tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login' ORDER BY id DESC",$db);
  58. $messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху
  59.  
  60. print <<<HERE
  61. <div id="menu">
  62. <a href='user.php?id=$myrow2[id]'>Главная</a>
  63. <a href='all_users.php'>Люди</a>
  64. HERE;
  65. if($messages['view'] == 0) {echo "$mes";}
  66. else {echo "$mes2";}
  67. print <<<HERE
  68. <a href='exit.php'>Выход</a>
  69. </div>
  70. <br>
  71. HERE;
  72.  
  73. $author = $messages['author'];
  74. $result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
  75. $myrow4 = mysql_fetch_array($result4);
  76. $avatar = $myrow4['avatar'];
  77.  
  78.  <table>
  79.  <tr>
  80.  <td><a class='p4' href='send.php?id=%s'><img alt='аватар' src='%s'></a></td>
  81.  
  82.  <td>Автор: <a href='page.php?id=%s'><strong>%s</strong></a><br>
  83.      Дата: %s<br>
  84.           Сообщение:<br>
  85.          %s
  86.          <br>
  87.          <a href='drop_post.php?id=%s'>Удалить</a>
  88.  
  89.  </td>  
  90.  </tr>
  91.  </table><br>
  92.  ",$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
  93.  
  94. $sms = mysql_fetch_array($result4);
  95. $new_view = $messages["view"] + 1;
  96. $update = mysql_query ("UPDATE messages SET view = '$new_view' WHERE author='$author'",$db);
  97.  
  98.  
  99. print <<<HERE
  100. <div class='jk'>
  101. <form action='post.php' method='post'>
  102. <h2>Отправить сообщение:</h2>
  103. <textarea cols='43' rows='4' name='text'></textarea><br>
  104. <input type='hidden' name='poluchatel' value='$myrow[login]'>
  105. <input type='hidden' name='id' value='$myrow[id]'>
  106. <input type='submit' name='submit' value='Отправить'>
  107. </form>
  108. </div>
  109. HERE;
  110. ?>
  111. </div>
  112.  

 

Powered by ExBB FM 1.0 RC1