Как вывести в реальном времени, когда число меняется?

У меня есть этот код для вывода:

$tot_clicks6 = $db->FetchArray($db->Query("SELECT SUM(visits) AS sum_visits FROM surf"));

а также

<?=$tot_clicks6['sum_visits']?>

отображать общее число.


person mp3alese mp3alese    schedule 13.05.2013    source источник
comment
Здесь нет тега javascript, но это можно сделать с помощью AJAX.   -  person Mihai Iorga    schedule 13.05.2013
comment
и как мне сделать с ajax?   -  person mp3alese mp3alese    schedule 13.05.2013
comment
Вы можете взглянуть на jQuery   -  person Mihai Iorga    schedule 13.05.2013
comment
@mp3alesemp3alese: Работая над своим кодом, прочитав пару статей и используя JavaScript.   -  person Elias Van Ootegem    schedule 13.05.2013
comment
код лотка: ‹?php $advert = array( 'advert' =› $tot_clicks6['sum_visits'], ); эхо json_encode ($ объявление); ?› и покажи {объявление:2}   -  person mp3alese mp3alese    schedule 13.05.2013


Ответы (2)


Ваш вопрос представляет собой распространенное заблуждение относительно PHP. Блок кода

<?=$tot_clicks6['sum_visits']?>

Есть только этот код на вашем сервере. Когда страница загружается, она обрабатывается как HTML независимо от значения этой переменной. Например,

6

Чтобы обновлять страницу в режиме реального времени, вам необходимо использовать AJAX.

Посмотреть этот вопрос

Получить переменную из файла PHP с помощью JQuery/AJAX

person Code Whisperer    schedule 13.05.2013

Или вы можете использовать структуру реального времени. Я работаю в Realtime.co, и мы делаем именно это.

Вы можете получить бесплатную лицензию на www.realtime.co, получить API PHP на http://www.xrtml.org/downloads_62.html#pubsub%3aphp и используйте следующий код для страница, которая должна транслировать информацию (например, ваша административная страница). Примечание. Этот же код вы можете найти на Github для примера ORTC (https://github.com/RTWWorld/pubsub-examples/tree/master/PHP), адаптированный для ваших нужд.

<?php
error_reporting(E_ALL);
session_start();
require('./ortc.php');

/* -------------------- */
/* REPLACE THESE VALUES */
/* -------------------- */
$URL = 'http://ortc-developers.realtime.co/server/2.1';
$AK = 'YOUR_APPLICATION_KEY';// your realtime.co application key
$PK = 'YOUR_APPLICATION_PRIVATE_KEY';// your realtime.co private key
$TK = 'YOUR_AUTHENTICATION_TOKEN';// token: could be randomly generated in the session
$CH = 'MyChannel'; //channel
$ttl = 180; 
$isAuthRequired = false;
$result = false;
/* -------------------- */
/*        END           */
/* -------------------- */

// ORTC auth
// on a live usage we would already have the auth token authorized and stored in a php session
// Since a developer appkey does not require authentication the following code is optional

if( ! array_key_exists('ortc_token', $_SESSION) ){    
    $_SESSION['ortc_token'] = $TK;       
}   

$rt = new Realtime( $URL, $AK, $PK, $TK );  

    // Your query
    $tot_clicks6 = $db->FetchArray($db->Query("SELECT SUM(visits) AS sum_visits FROM surf"));

if($isAuthRequired){
    $result = $rt->auth(
        array(
            $CH => 'w'
        ), 
        $ttl
    );//post authentication permissions. w -> write; r -> read
    echo 'authentication status '.( $result ? 'success' : 'failed' ).'<br/>';
}

if($result || !$isAuthRequired){
    $result = $rt->send($CH, tot_clicks6['sum_visits'], $response);
    echo ' send status '.( $result ? 'success' : 'failed' ).'<br/>';
}    

?>

На странице получателя вам нужно будет получить данные с помощью JavaScript и отобразить их. В этом примере я просто уведомляю пользователя о данных.

<!doctype html>
<html>
<head>
</head>
<body>

    <script src="http://code.xrtml.org/xrtml-3.2.0.js"></script>
    <script>
        var appkey = 'YOUR_APPLICATION_KEY';
        var url = 'http://ortc-developers.realtime.co/server/2.1';
        var authToken = 'YOUR_AUTHENTICATION_TOKEN';
        var channel = 'MyChannel';

        xRTML.load(function(){

            xRTML.Config.debug = true;

            xRTML.ConnectionManager.create({
                id: 'myConn',
                appkey: appkey,
                authToken: authToken,
                url: url,
                channels: [
                {name: channel}
                ]
            }).bind({
                message: function(e) {
                    alert(e);
                }
        });
        });
    </script>
</body>
</html>

С этим кодом вам не нужно будет использовать AJAX или что-то в этом роде. Вместо этого вы сможете передавать свои данные в браузеры.

Надеюсь, поможет!

person SergioMSCosta    schedule 13.05.2013