Можно ли автоматически обновить DIV на MySQL, изменив в: PHP или Java Script или AJAX - PullRequest
1 голос
/ 16 августа 2010

У меня есть Facebook-подобная система, я хочу, чтобы DIV, содержащий сообщения, автоматически обновлялся при публикации нового сообщения.Это возможно?Если да, то как мне это сделать?

<?php include('config.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
    <head>
        <title>Alpha</title>
        <link rel="stylesheet" href="style.css" type="text/css" />  
    </head>
    <body>

<?php 

// Logged IN
if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Email'])) {


// Post to Database
if(!empty($_POST['message']))
{
$message = mysql_real_escape_string($_POST['message']);
$postmessage = mysql_query("INSERT INTO Wall (Message, UserID) VALUES('".$message."', '".$_SESSION['UserID']."')");
}

// Collet Latest Posts

$query = "
    SELECT Users.UserID, Wall.Message, Users.Forename, Users.Surname 
    FROM Wall
    INNER JOIN Users ON Wall.UserID = Users.UserID
    ORDER BY Wall.MessageID DESC
    LIMIT 20;";
$result = mysql_query($query) or die('Invalid query: ' . mysql_error());

// Collet Post User
    ?>
    <div id ="container">
        <div id="insideleft">
            <ul>
                <li><a href="index.php">Home</a></li>
                <li><a href="profile.php">Edit Profile</a></li>
                <li><a href="wall.php">Community Wall</a></li>
                <li><a href="logout.php">Logout</a></li>
            </ul>
        </div>
        <div id="insideright">
            <h1>Community Wall</h1>
            <br />
            <div id="postcontainer">
                <form method="post" action="wall.php" name="wallpost" id="wallpost">
                    <input type="text" name="message" id="message" class="message" />
                    <input type="submit" name="messagesub" id="messagesub" value="Post Message" class="post"/><br /><br />
                 </fieldset>
                </form>
            </div>
            <?php while ($row = mysql_fetch_assoc($result)) { ?>
            <div id="messagecontainer">
            <p class="messageposter">
            <?php echo "<b>{$row['Forename']} {$row['Surname']}</b><br />"; ?>
            </p>
            <p class="message">
            <?php echo stripslashes($row['Message']); ?>
            </p>
            </div>

<?php
} ?>

        </div>
    </div>
    <?php
}

else {echo "<meta http-equiv='refresh' content='0;index.php'>";}

?>
</body>
</html>

Ответы [ 5 ]

2 голосов
/ 06 декабря 2010
<html>
<head>
<!-- For ease i'm just using a JQuery version hosted by JQuery- you can download any version and link to it locally -->
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function() {
    $("#responsecontainer").load("response.php");
    var refreshId = setInterval(function() {
        $("#responsecontainer").load('response.php?randval='+ Math.random());
    }, 9000);
});
</script>
</head>
<body>

<div id="responsecontainer">
</div>
</body>

Как видите, код JS в заголовке вызывает файл response.php.Это файл, который будет обновляться каждые 10 секунд.Просто измените значение, чтобы увеличить / уменьшить период обновления.#responsecontainer div - это место, где будет отображаться response.php.

Это так просто.

1 голос
/ 16 августа 2010

Вы можете использовать один из методов, известных как Комета Или вы можете использовать XMPP поверх BOSH Смотрите также http://xmpp.org/extensions/xep-0124.html и http://xmpp.org/extensions/xep-0206.html

1 голос
/ 16 августа 2010

сделать ajax-запрос для запроса обновленных данных.оберните его в функцию, которая рекурсивно вызывает себя, используя setTimeOut ().По сути, тот же принцип, что и при создании часов javascript (для этого требуется поиск), за исключением того, что вы используете ajax для получения текущих данных вместо отображения времени.

0 голосов
/ 17 августа 2010

XMPP через Bosh - лучшее решение, если ваше приложение действительно нуждается в обновлении в реальном времени (в реальном времени).Библиотека Jaxl обеспечивает интегрированную поддержку XMPP через Bosh, вы можете попробовать это для своего приложения http://github.com/abhinavsingh/JAXL

0 голосов
/ 16 августа 2010

Ajax - это клиентская система без сохранения состояния:
клиент должен связаться с сервером, сервер не может связаться с пользователем, но вы можете создать простую функцию ajax, которая проверяет страницу каждые X секунд, если естьnews.

если вы хотите уменьшить количество запросов ajax, вы можете удерживать страницу, например, в течение 5 секунд, проверяя ее 10 раз и спя 0,5 секунды каждый раз, когда не удается получить новости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...