2014-12-06 1 views
0

jquery, php 및 mysql을 사용하여 자선 카운터를 만들려고합니다. 'window.setInterval()'을 사용하여 페이지를 업데이트하지 않고 5 초마다 PHP를 사용하여 mysql에서 새 값을 가져 오려고하지만 내 문제는 새로운 값을 가져 오는 것이 아니라 처음 값을 계속 사용한다는 것입니다. 그래서 여기에 코드가 있습니다, 나는 어떤 도움이되기를 바랍니다 :).mysql 및 PHP를 사용하여 jquery 변수를 업데이트하려고 시도했습니다.

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); 

편집

그것은 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

window.setInterval에서 서버 측 값 (Votes got)에 액세스하려면 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); 

지금, 5 초마다 요청이 서버에 화재 최신 값을 검색합니다

다음은 그렇게 할 수있는 방법의 예입니다.

당신은 몇 가지 간단한 JSON 돌아가려면 PHP 스크립트를 조정해야합니다

:

{ 
    "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

이것에 왼쪽 조인을 사용할 수 있습니까? 그렇다면 예제를 작성할 수 있습니까? 서버 querry가 작동하지만 2 개의 다른 테이블에서 데이터를 가져와야하기 때문에 – Thaillie

+0

페이지에 출력 할 때 데이터를 가져와야합니다. 당신이 가지고있는 것을 사용하십시오. –

+0

Im :'TypeError : got has undefined' 그리고 파일의 echo :'[{ "got": "1235.00", "needed": "4350"}]' – Thaillie

관련 문제