PHP MYSQL JS Что делать не работает обновление сообщений?
У меня есть код для вывода всех сообщений я хочу чтобы они обновлялись в реальном времени я использую knockout js но не работает в консоли хрома пишет ошибку
Uncaught (in promise) TypeError: data.sort is not a function at setUpMessageFetcher (profile.php?id=2:122:14)
profile.php:
$receiver = $myrow['login'];
$tmp = mysql_query("SELECT * FROM messages WHERE receiver= '$receiver'",$db);
$messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху
do {
echo "
<table>
<tr>
<td>
Автор: ".$messages['sender']." <a href='profile.php?id=".$messages['sender_id']."'>Профиль автора</a><br>
Дата: ".$messages['date']."<br>
Сообщение:
<div id='messages' data-bind='foreach: messages'>
<div class='message'>
<b data-bind='text: sender'></b><span data-bind='text: text'></span>
</div>
</div>
</td>
</tr>
</table>
";
}
while($messages = mysql_fetch_array($tmp));
}
<script>
window.currentFrom = 0;
async function setUpMessageFetcher(arr) {
let data = await (await fetch(`/mes.php?id=<?php echo $myrow["id"]; ?>&from=${window.currentFrom}`)).json();
data.sort(function(a, b) {
return a.id - b.id;
});
for(let i = 0; i < data.length; i++) {
let msg = data[i];
if((i + 1) == data.length)
window.currentFrom = msg.id;
arr.push(msg);
}
window.setTimeout(setUpMessageFetcher, 1000, arr);
}
function MessagesModel() {
this.messages = ko.observableArray([]);
setUpMessageFetcher(this.messages);
}
ko.applyBindings(new MessagesModel());
</script>
mes.php:
$id = $_GET['id'];
$my = $_SESSION['login'];
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);
if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");}
$receiver = $myrow['login'];
$tmp = mysql_query("SELECT * FROM messages WHERE receiver= '$receiver' AND id > $_GET[from]",$db);
header('Content-Type: application/json');
$results = [];
while($row = mysql_fetch_array($tmp, mysql_fetch_assoc) {
$results[] = ["id" => $row["id"], "sender_id" => $row["sender_id"], "sender" => $row["sender"], "text" => $row["message"]];
}
echo json_encode($results, JSON_UNESCAPED_UNICODE);