#php #jquery #mysql #notifications
#php #jquery #mysql #уведомления
Вопрос:
Я пытался создать систему уведомлений для веб-сайта со следующим кодом :
setInterval(function() {
$.post('notifications.php', {
email: 123
}, function(data) {
});
}, 30000);
И notifications.php :
$userid = $_SESSION[username];
$notifications = array();
$sql = "SELECT appreciation FROM ms_notifications WHERE email = '$userid' AND new = '1'";
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($res)) {
while ($r = mysql_fetch_object($res)) {
$notifications[] = $r->appreciation;
}
$nb_result = mysql_num_rows($res);
}
$sql = "UPDATE ms_notifications SET new = '0' WHERE email = '$userid'";
mysql_query($sql) or die(mysql_error());
echo $nb_result;
Проблема в том, что, поскольку я новичок в jquery / Js, я не знаю, как поместить результат внутри div. На данный момент он остается в верхней части страницы, над всем остальным.
Я пробовал это внутри функции data, но не работает… :
$('#test_app').html(data);
Я думаю, это очень глупый вопрос, но помощь была бы действительно оценена! Большое вам спасибо.
ОБНОВЛЕНИЕ: Здесь HTML-код
<?php
session_start();
include ('connection/database.php');
include ('login_script.php');
include ('notifications.php');
if($logged_in){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My Home</title>
</head>
<body>
<link rel="stylesheet" type="text/css" href="ms.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/font_i/specimen_files/easytabs.js" type="text/javascript" charset="utf-8"></script>
<!-- FONT SCRIPT-->
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#container').easyTabs({defaultContent:1});
});
</script>
<script type="text/javascript" charset="utf-8">
var scrollSpeed = 70; // Speed in milliseconds
var step = 1; // How many pixels to move per step
var current = 0; // The current pixel row
var imageHeight = 505; // Background image height
var headerHeight = 59; // How tall the header is.
//The pixel row where to start a new loop
var restartPosition = -(imageHeight - headerHeight);
function scrollBg(){
//Go to next pixel row.
current -= step;
//If at the end of the image, then go to the top.
if (current == restartPosition){
current = 0;
}
//Set the CSS of the header.
$('#main_logo').css("background-position","0 " current "px");
}
//Calls the scrolling function repeatedly
var init = setInterval("scrollBg()", scrollSpeed)
</script>
<!-- NOTIFICATIONS_SCRIPT !!!!!! -->
<script type="text/javascript" charset="utf-8">
setInterval(function() {
$.post('notifications.php', {
email: 123
}, function(data) {
});
}, 30000);
</script>
<style>
body{
font-family:SommetRoundedLight;
}
</style>
</head>
<body>
<div id="container">
<div id="header_contain">
<div id="test_app">
</div>
</div>
</div>
</body>
</html>
<?php }
else{
echo '<script language="javascript" type="text/javascript">
<!--
window.location.replace("connexion.php");
-->
</script>';
} ?>
Еще раз спасибо
Комментарии:
1. Не могли бы вы также опубликовать свой html-код, пожалуйста?
2. Вероятно, это как-то связано с вашей разметкой, поэтому было бы полезно, если бы вы могли опубликовать это и здесь.
3. Спасибо за ответ! Я обновил сообщение с помощью HTML
4. Итак, когда вы добавили этот код $ (‘#test_app’).html(data); в функцию (data) и данные отобразились вверху страницы, чего вы ожидали / хотели, чтобы произошло?
5. Я ожидал, что данные появятся внутри test_app div, внутри содержимого страницы, а не на самом верху.
Ответ №1:
Используйте .append()
вместо .html()
Комментарии:
1. Спасибо за ответ! Результат по-прежнему находится вверху страницы, над контейнером div#. Но теперь у меня возникает ошибка через 30 секунд (когда скрипт проверяет, есть ли новые уведомления), в которой говорится «база данных не выбрана». Что странно, так как результат сверху показывает нужное количество новых уведомлений в БД…
2. Вам нужно обновить свой php-код, чтобы в первую очередь выбрать таблицу DB.
Ответ №2:
Вместо
$('#test_app').html(data);
просто используйте:
$('#test_app').html('<div>' data '</div>');
Кажется, это просто. Я что-то упускаю?
Комментарии:
1. Спасибо, теперь это отображается в #test_app. Но только один раз скрипт ищет сервер во второй раз. В первый раз он отображается только сверху, а не в #test_app. Что я делаю не так :/
2. На самом деле, сейчас он обновляется в #test_app, но остается на первом значении выше всего…