2014-12-06 4 views
0

Я пытаюсь сделать счетчик благотворительности, используя jquery, php и mysql. Я пытаюсь получить новые значения из mysql, используя php каждые 5 секунд, не обновляя страницу с помощью «window.setInterval()», но моя проблема в том, что она не захватывает новые значения, но продолжает использовать значения, полученные в начале. так вот код, я надеюсь, что кто-то может помочь :).Пытается обновить переменные jquery с помощью mysql и php

window.setInterval(function(){ 
    var needed = <?php echo neededGetFirst(); ?>; 
    var got = <?php echo gotGetFirst(); ?>; 
    console.log('needed: ' + needed); 
    console.log('got: ' + got); 
    var gaugeHeight = 223; 
    var gaugeBottom = 318; 
    var percent = (100/needed) * got; 
    var heightOffset = (gaugeHeight/100) * percent; 
    var bottomOffset = gaugeBottom - (gaugeHeight - heightOffset); 

    $('#gauge').animate({ 
     height: heightOffset + 'px', 
     bottom: bottomOffset + 'px' 
    }, 1000); 

    for (var i = 2, limit = 7; i < limit; i++) { 
     var value = (needed/5) * (i - 1); 
     $('#stamp' + i).text(value); 
    }; 
}, 5000); 

EDIT

Можно ли вернуть значение из файла с некоторым типом GET/RUN? путем помещения функций базы данных php/mysql в файл и использования значений return. '

EDIT 2

код PHP используется в файле:

<?php 
    $pdo = new PDO('mysql:host=127.0.0.1;dbname=thermometer', 'root', ''); 
    $sql = 'SELECT `got`.`value` AS got, `needed`.`value` AS needed FROM `needed`, `got`'; 
    $statement = $pdo->prepare($sql); 
    $statement->execute(); 
    $result = $statement->fetchAll(PDO::FETCH_ASSOC); 
    $json = json_encode($result); 
    echo($json); 
?> 
+4

Вы хотите получить доступ к значению на стороне сервера (полученных голосов) в окне.setInterval, для этого вам необходимо использовать AJAX. Ваш текущий код, конечно же, будет использовать значения, которые он получил в начале, потому что вы эхом отдаете «полученное» значение при загрузке страницы, нет кода, который обновляет это значение. – Ananth

ответ

1

Как уже было сказано, чтобы обновить страницу с новыми значениями каждого количество секунд, вы будете нуждаться в каком-то взаимодействие с сервером, возможно, через AJAX.

Вот пример того, как вы могли бы сделать это:

function getNewValues(){ 
    return $.ajax({ 
    url: 'submit.php', 
    type: 'POST', 
    dataType: 'json', 
    cache: false 
    }); 
} 

window.setInterval(function(){ 
    getNewValues() 
    .success(function(data) { 
    var needed = data["needed"], 
     got = data["got"]; 

    var gaugeHeight = 223; 
    var gaugeBottom = 318; 
    var percent = (100/needed) * got; 
    var heightOffset = (gaugeHeight/100) * percent; 
    var bottomOffset = gaugeBottom - (gaugeHeight - heightOffset); 

    $('#gauge').animate({ 
     height: heightOffset + 'px', 
     bottom: bottomOffset + 'px' 
    }, 1000); 

    for (var i = 2, limit = 7; i < limit; i++) { 
     var value = (needed/5) * (i - 1); 
     $('#stamp' + i).text(value); 
    }; 
    }) 
    .fail(function() { 
    console.log("An error ocurred"); 
    }); 
}, 500); 

Теперь каждые пять секунд запрос будет срабатывать на сервер и получить последние значения.

Вы должны настроить PHP скрипт для возврата некоторых простых JSON:

{ 
    "needed": needed_value, 
    "got": got_value 
} 

Может быть что-то вроде:

<?php 
    $pdo = new PDO('mysql:host=host;dbname=db_name', 'user', 'pass'); 
    $sql = 'SELECT needed, got FROM table'; 
    $statement = $pdo->prepare($sql); 
    $statement->execute(); 
    $result = $statement->fetch(); 
    $json = json_encode($result); 
    echo($json); 
?> 

Хотя это не тестируется, то следует надеяться указать вам на правильный путь.

+0

Можно ли использовать левое соединение на этом? если да, можете ли вы написать пример? потому что сервер работает, но мне нужно захватить данные из двух разных таблиц. – Thaillie

+0

Вы должны получать данные в любом случае, так как вы выводите их на страницу. Просто используйте то, что у вас есть. –

+0

Im get the error: 'TypeError: got undefined', а echo из файла:' [{"got": "1235.00", "needed": "4350"}] ' – Thaillie

Смежные вопросы