File size: 1.73Kb
<?php
require_once 'db.php';
if (empty($_SESSION['user_id'])) {
exit;
}
$current_user_id = (int)$_SESSION['user_id'];
$partner_id = isset($_GET['user_id']) ? (int)$_GET['user_id'] : 0;
if ($partner_id <= 0 || $partner_id === $current_user_id) {
exit;
}
// помечаем все входящие от собеседника как прочитанные
$stmt = $mysqli->prepare("
UPDATE messages
SET is_read = 1
WHERE to_user_id = ? AND from_user_id = ? AND is_read = 0
");
$stmt->bind_param('ii', $current_user_id, $partner_id);
$stmt->execute();
$stmt->close();
// отдаём сообщения
$stmt = $mysqli->prepare("
SELECT id, from_user_id, body, created_at
FROM messages
WHERE (from_user_id = ? AND to_user_id = ?)
OR (from_user_id = ? AND to_user_id = ?)
ORDER BY created_at ASC
LIMIT 300
");
$stmt->bind_param('iiii', $current_user_id, $partner_id, $partner_id, $current_user_id);
$stmt->execute();
$res = $stmt->get_result();
$stmt->close();
if ($res->num_rows === 0): ?>
<p class="chat-empty">Пока сообщений нет. Напишите что-нибудь первым 🙂</p>
<?php else: ?>
<?php while ($msg = $res->fetch_assoc()): ?>
<?php
$is_me = (int)$msg['from_user_id'] === $current_user_id;
$cls = $is_me ? 'message message-me' : 'message message-them';
?>
<div class="<?= $cls ?>">
<div class="message-body">
<?= nl2br(htmlspecialchars($msg['body'])) ?>
</div>
<div class="message-meta">
<?= htmlspecialchars(date('d.m.Y H:i', strtotime($msg['created_at']))) ?>
</div>
</div>
<?php endwhile; ?>
<?php endif; ?>
<div id="bottom"></div>