2012-05-07 99 views
1

我正在製作一個博客類型的網頁,其中包含一個「like」和「dislike」按鈕的div,並且其評分高於mysql的查詢/ likes/)。當用戶點擊喜歡或不喜歡時,我想將他們的投票添加到數據庫,並動態更改評級值,而無需重新加載頁面。這裏有一小段html,我幾乎沒有使用javascript,所以任何幫助都會很棒。使用Javascript動態更改PHP值

<div class="narrow_right_container"> 
    <?php 
    $popularity = get_popularity($row); 
    ?> 
    <div class="yellow_bg">Rating: <?php echo $popularity . "%"; ?></div> 
    <div style="margin-left:2px;"> 
    <div class="dislike"> 
     <a href="#"><img src="ui_images/dislike.png"/></a> 
     <span>Dislike</span> 
    </div> 
    <div class="like"> 
     <a href="#"><img src="ui_images/like.png" /></a> 
     <span>Like</span> 
     </div> 
    </div> 
</div> 

回答

0
$('.like').click(function(){ 
    rate(1); 
}) 
$('.dislike').click(function(){ 
    rate(-1); 
}) 

function rate(_val){ 
$.ajax({ 
    url: 'ajax/rate.php?val='+_val, 
    success: function(data) { 
    alert('Rate was performed.'); 
    $(".narrow_right_container").find(".yellow_bg").append("Rating: "+data+"%"); 
    } 
}); 
} 

rate.php

if(isset($_GET['val'])){ 
    $sql = "UPDATE.........."; //do an update to your rate table 
    echo get_popularity($row); //return rating to ajax 
} 
1

您將不得不使用ajax來完成此操作。它不可能改變PHP變量VIA javascript。

您將不得不調用一個Ajax函數來處理數據庫工作,在完成之後,您將不得不使用javascript更新計數。這將給典故,雖然數量也將在數據庫中更新計數被更新(從阿賈克斯)

這裏是你如何能做到一個很好的例子:

Example Code
Live Demo

+0

我是原來的downvote,因爲它原本只是有了第一句話 - 但我刪除了downvote因爲你的編輯。 –

1

你實際上不會改變PHP值 - 一旦頁面輸出到瀏覽器,考慮PHP消失 - 你不能與它交互,因爲它在服務器上。相反,請考慮與瀏覽器中的文檔進行交互。

做到這一點的最佳方法是對服務器端腳本進行ajax調用。該服務器端腳本可以對數據庫進行類似或不喜歡的操作,然後返回新的評分,您可以使用javascript替換舊評分。

你可能會想看看關於javascript和ajax的一些教程,因爲看起來你對教程的需求比一個特定的問題更普遍。換句話說,如果你填補了一般主題上的知識空白,你就可以很容易地解決你的具體問題。

1

您將需要創建一些PHP代碼來處理保存到服務器端的數據庫。您會將相似/不喜歡的值信息發佈到此服務器端腳本。如果可能的話,我會使用jQuery's AJAX助手將數據發佈到剛剛創建的PHP頁面。

事情是這樣的:

$.ajax({ 
    url: "whatever.php", 
    type: "POST", 
    data: {Like: true}, 
    success: function(data){ /* update view */} 
});