Список всех сообщений выводится нормально, а с полной версии сообщения выводится последнее отправлен

Glazok

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

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

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

PHP:
$tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login' ORDER BY id DESC",$db);  
$messages = mysql_fetch_array($tmp);
Примечание: $login = $_SESSION['login']; т.е. логин под который открыта сессия. Поля таблицы messages:
 
id (auto_increment)
author
poluchate
text
view
date
Я понимаю, что в запросе к БД ORDER BY id DESC - лишнее, но без этого на странице выдаёт ошибку. Подскажите, пожалуйста, как исправить проблему, и сделать так, чтобы сообщение соответствовало обрезанному сообщению на mes.php. Заранее благодарен. Могу дать ссылку имя и пароль дать, чтобы посмотреть проблему, а могу два эти файла прислать
 

С.

Продвинутый новичок
Код работает совершенно правильно, ровно так, как определено в SQL запросе: последнне сообщение от указанного пользователя.

Чтобы получить какое-то другое сообщение, то надо явно указать какое. К сожалению технология SQL мысли пока читать не умеет.
 

Glazok

Новичок
Код работает совершенно правильно, ровно так, как определено в SQL запросе: последнне сообщение от указанного пользователя.

Чтобы получить какое-то другое сообщение, то надо явно указать какое. К сожалению технология SQL мысли пока читать не умеет.
но если я нажму на предпоследнее, или какое-нибудь ещё ниже, то выведется всё равно последнее. подскажите, как можно сделать, чтобы выводилось сообщение, которое соответствует короткой версии сообщений
 

С.

Продвинутый новичок
Вы как себе это представляете? Вы там на что-то кликаете разное, но запрос в базу шлете ВСЕГДА ОДИН И ТОТ ЖЕ. И база возвращяет один и тот же результат. Сюрприз!
 

С.

Продвинутый новичок
А если попробовать чисто гипотетически поставить себя на место базы. У тебя в кармане карточи с сообщениями. Тебе надо вытащить из карману ВОТ ТУ карточку. Что тебе надо сообщить, что бы ты достал нужную карточку?
 

Glazok

Новичок
А если попробовать чисто гипотетически поставить себя на место базы. У тебя в кармане карточи с сообщениями. Тебе надо вытащить из карману ВОТ ТУ карточку. Что тебе надо сообщить, что бы ты достал нужную карточку?
ну это тоже самое, что в бд сообщения, а мне надо вытащить ВОТ ТО сообщение. какие запросы надо написать, чтоб вытащило нужное сообщение. с карточками наверное указать надо само сообщение, чтобы я понял какая именно карточка. но как это сказать на php - не доходит
 

С.

Продвинутый новичок
с карточками наверное указать надо само сообщение, чтобы я понял какая именно карточка
Как указать, какая именно карточка?

Напоминаю, что в каждой карточке написано:
id (auto_increment)
author
poluchate
text
view
date
 

Glazok

Новичок
Как указать, какая именно карточка?
Напоминаю, что в каждой карточке написано:
id сразу убирается, потому что оно присваивается всем сообщениям автоматически, и сортировать по нему сообщения определённого пользователя - не вариант. date тоже, потому что там дата в таком формате 2011-11-10. view там вообще убрать надо, ставил я его для другого, но работает тоже неправильно. остаётся author, poluchatel и text....наверное их надо указать... хотя, если указать text, то как я буду понимать какой именно text, а если author и poluchatel, то от них может быть много карточек и я не пойму какая именно.
 

С.

Продвинутый новичок
Ну коль так, то выходит, что задача нерешаема.

Может попробуешь с другого конца? Что ты знаешь о ТОМ сообщении, когда имеется их список на предыдущей странице?
 

KorP

Новичок
id сразу убирается, потому что оно присваивается всем сообщениям автоматически
и что это значит? что для каждого сообщения оно уникально, м...? на размышления наводит?

и сортировать по нему сообщения определённого пользователя - не вариант.
при чём тут сортировка, если тебе надо вытащить из базы определённое сообщение?
 

Glazok

Новичок
Ну коль так, то выходит, что задача нерешаема.

Может попробуешь с другого конца? Что ты знаешь о ТОМ сообщении, когда имеется их список на предыдущей странице?
Вот код, который отвечает за вывод в списке всех сообщений:
PHP:
<?php
if (!empty($messages['id'])) {
do //выводим все сообщения в цикле
  {
	$author = $messages['author'];
	$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
	$myrow4 = mysql_fetch_array($result4);
if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
	$avatar = $myrow4['avatar'];
}
else {
	$avatar = "avatars/net-avatara.jpg";
	}
	
  printf("
  <table>
  <tr>
  <td><a class='p4' href='send.php?id=%s'><img alt='аватар' src='%s'></a></td>
  
  <td>Автор: <a href='page.php?id=%s'><strong>%s</strong></a><br>
      Дата: %s<br>
	  Сообщение:<br>
	 <a href='full_mes.php?id=$myrow2[id]'>%s</a>
	 <br>
	 <a href='drop_post.php?id=%s'>Удалить</a>
  
  </td>  
  </tr>
  </table><br>
  ",$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],substr($messages['text'], 0, 20),$messages['id']);
  //выводим само сообщение
  }
  while($messages = mysql_fetch_array($tmp));
  }
else {
//если сообщений не найдено
echo "Сообщений нет";
}				
?>
 

С.

Продвинутый новичок
Либо ты стираешь напрочь весь свой код и начинаешь заново, либо иди разбираться с этим говном к Попову. Ответов больше не будет.
 
Сверху