#php #mysql #sql
#php #mysql #sql
Вопрос:
В настоящее время я разрабатываю систему личных сообщений, в текущем состоянии системы я могу отправлять и извлекать сообщения, но у меня проблемы с получением ответов на сообщение. я пытаюсь разработать систему входящих сообщений / комментариев типа youtube. у меня есть 3 связанные таблицы fk, СООБЩЕНИЯ (id, sid, rid, тема, сообщение, время отправки) sid — это идентификатор для вошедшего в систему пользователя, rid — это идентификатор для пользователя-получателя, т.Е. profile_id…. M_REPLY(id, mid, uid, reply, senttime) mid — это внешний ключ для идентификатора сообщения, uid — это идентификатор пользователя, отправившего ответ, reply — это фактическое сообщение… ниже приведен мой PHP-код, который выполняет извлечение сообщений
// Initialize the variables
$mail ="";
// Get list of Private Messages
$sql = "SELECT users.*, messages.*
FROM users, messages
WHERE messages.rid= '$log_id'
AND users.id = messages.sid
AND rdelete = '0'
ORDER BY senttime DESC" or die(mysqli_error);
$query = mysqli_query($conx, $sql);
$numrows = mysqli_num_rows($query);
// Gather data about the Pm's
if ($numrows > 0){
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$id = $row['id'];
$avatar = $row['avatar'];
$subject = $row['subject'];
$uname = $row['username'];
$message = $row['message'];
$senttime = $row['senttime'];
$pro_pic = '<img src="user/'.$uname.'/'.$avatar.'" alt="'.$uname.'" align="left" width="50" height="50" style="border:#E5E5E5 thin solid; padding:2px;">';
$mail .= '<div><a href="user_account.php?u='.$uname.'">'.$pro_pic.' '.$uname.'</a> | '.$subject.'</a></span> <div> '.$senttime.' <br /> '.$message.'<div>Replies here....</div></div></div>';
}
} else {
$mail = 'No messages';
}
затем я повторяю $ mail в своем html, чтобы отобразить это….
кроме того, я хотел бы знать, как я могу отобразить текстовое поле ответа, не отображая его снова и снова в цикле … пожалуйста, помогите
Комментарии:
1. Через несколько секунд кто-нибудь скопирует-вставит огромный комментарий о том, что функции mysql_ * и mysqli_ * устарели и небезопасны. Я гарантирую это.
2. @MightyPork Почему? Нигде нет
mysql_
.3. да. но, пожалуйста, имейте в виду, что это не окончательная работа, я буду использовать подготовленные инструкции, а также предварительно заменять и использовать htmlentities, чтобы избежать любых форм атак и взломов
4. @Fred-ii- Я знаю, но все равно — это вставляется почти во все. Все хотят пожаловаться на это 😉
5. Вместо того, чтобы иметь отдельную таблицу для ответов, почему бы просто не рассмотреть сами сообщения ответов? Вы могли бы добавить другое поле в таблицу сообщений, replyTo , и если оно имеет значение NULL , то это исходное сообщение, а если нет, то это ответ на сообщение (или реплика на ответ). Ваш первый запрос будет извлекать все записи
WHERE replyTo=NULL
, затем при отображении сообщения вы будете извлекать все записи, гдеreplyTo=mid
. Это позволило бы потокоподобное представление, подобное gmail. Что касается ответов на ответы, это было бы немного сложнее, но ничего, что не могло бы исправить творческое решение проблемы. 🙂