View file zip0.ru/messages_fetch.php

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>