Обновление данных без перезагрузки

Подскажите, как это должно работать. Реализован чат между пользователями и нужно обновить число новых сообщений на странице профиля.

Если с перезагрузкой страницы, то всё корректно выводится в 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; //если вот тут вывести любой текст вместо переменной, он корректно выводится в профиле.

надеюсь хоть кто-то понял, что тут написано) не судите строго, я новичок.


Ответы (0 шт):