Обновление данных без перезагрузки
Подскажите, как это должно работать. Реализован чат между пользователями и нужно обновить число новых сообщений на странице профиля.
Если с перезагрузкой страницы, то всё корректно выводится в div
//определение loginid
$login = $_SESSION['login'];
$sql = "SELECT * FROM users WHERE login='$login'";
if($result = $conn->query($sql)){ foreach($result as $row){ $currentloginid = $row["id"]; $currentloginname = $row["name"];} $result->free(); } else{ echo "Ошибка: " . $conn->error; }
//получаем непрочитанные
$sql = "SELECT readed FROM chat WHERE idto='$currentloginid' && readed!='0'";
if ($result=mysqli_query($conn,$sql)) {
$newmessage=mysqli_num_rows($result);
}
if ($newmessage==0) {
$messagetop="";
} else if ($newmessage>=1){
$messagetop="<div id=\"message-top\">" . "Новых сообщений: " . "$newmessage" . "</div>";
}
echo "<a href=\"profile.php\" class=\"btn-top-menu\"><div id=\"chat-message\">$messagetop</div></a>";
Для обновления этой цифры использую Ajax с посекундной проверкой (знаю, что не лучшее решение, но пока хочу так...)
<script>
function show()
{
$.ajax({
url: "incoming.php",
cache: false,
success: function(html){
$("#chat-message").html(html);
}
});
}
$(document).ready(function(){
show();
setInterval('show()',1000);
});
</script>
В файле incoming.php прописан запрос к базе для обновления числа, но это не работает, переменная не передаётся, я не понимаю как это работает. Как передаётся переменная из одного файла php в другой, ведь мне как минимум в файле incoming.php нужно получить значение перменной login из сессии?
//определение loginid
$login = $_SESSION['login'];
$sql = "SELECT * FROM users WHERE login='$login'";
if($result = $conn->query($sql)){ foreach($result as $row){ $currentloginid = $row["id"];} $result->free(); } else{ echo "Ошибка: " . $conn->error; }
//получаем непрочитанные
$sql = "SELECT readed FROM chat WHERE idto='$currentloginid' && readed!='0'";
if ($result=mysqli_query($conn,$sql)) {
$newmessage=mysqli_num_rows($result);
}
if ($newmessage==0) {
$messagetop="";
} else if ($newmessage>=1){
$messagetop="<div id=\"message-top\">" . "Новых сообщений: " . "$newmessage" . "</div>";
}
echo $messagetop; //если вот тут вывести любой текст вместо переменной, он корректно выводится в профиле.
надеюсь хоть кто-то понял, что тут написано) не судите строго, я новичок.