2014-02-24 104 views
0

我正在用PHP來做一個相當原始的投票系統。用PHP創建一個簡單的投票系統

MySQL的PHP​​

while($row = mysql_fetch_array($query)): ?> 
<div class="item" data-postid="<?php echo $row['id'] ?>" data-score="<?php echo $row['vote'] ?>"> 
    <div class="vote-span"><!-- voting--> 

// 
    <div class="vote" data-id="<?php echo $row['id']?>" data-action="up" title="Vote up"> 
// 

     <img src="//placekitten.com/10/10"/> 
    </div><!--vote up--> 
    <div class="vote-score"><?php echo $row['vote'] ?></div> 

//  
    <div class="vote" data-id="<?php echo $row['id']?>" data-action="down" title="Vote down"> 
//   

     <img src="//placekitten.com/g/10/10"/> 
    </div><!--vote down--> 
    </div> 

    <div class="post"><!-- post data --> 
    <h2><?php echo $row['name']?></h2> 
    <p><?php echo $row['title'] ?></p> 
    </div> 
</div><!--item--> 
<?php endwhile?> 

我主要集中在//之間的文本。首先,我設置了兩個數據屬性,希望稍後用javascript來使用它們;我將data-action設置爲updown以判斷它是upvote還是downvote。我還將data-id屬性設置爲我的MySQL表中的當前行ID密鑰。

通過我的邏輯,我可以通過javascript jquery並導致PHP代碼在單擊時執行,並在MySQL中正確的行中添加/減去數字。

我試過的Javascript只是或多或少爲expirement:

$('.vote').click(function(){ 
    if ($(this).data('action')=='up'){ 
     //PHP code here 
    } 
}); 

不用說,沒有工作,因爲PHP和JavaScript不喜歡玩,因爲PHP是服務器端。接下來,我想我可以在我的Javascript條件中調用一個PHP函數 - 但似乎必須有一個更簡單的方法來完成我正在嘗試的操作。我一直在看很多教程,他們或者過時,或者針對其他項目。我檢查了一下,發現this question,但它的目的是允許IP有投票限制。 This question看起來類似於我在做什麼,除非我無法弄清楚他們是如何設置的,因爲他們沒有如何調用函數

TL; DR我的問題是調用PHP函數在div點擊,將數據放入MySQL行的正確ID。 AJAX似乎要走,但我不確定如何實現它。

+0

您需要查看AJAX,以便在Javascript事件(如單擊)中向PHP腳本發出請求,傳入數據,然後獲取並顯示響應。 – thescientist

+0

正如你所猜測的,javascript(客戶/瀏覽器)不能直接執行php,因爲它是服務器端的。基本上你需要使用ajax(javascript)向執行你想要的php腳本發出請求 –

+0

我認爲AJAX只是針對PHP的異步內容,我是否也可以將特定於每列的變量傳遞給該PHP?我將如何設置? –

回答

2

您可以創建一個AJAX調用:

$('.vote').click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "your-script.php", 
      data: { 
       id: $(this).data('id'), 
       vote: $(this).data('action') 
      } 
     }) 
      .done(function (msg) { 
      alert("Data Saved: " + msg); 
     }); 
}); 

現在,您可以通過$_POST['id']$_POST['action']拿到劇本的值。

如果你想在PHP中創建它,你必須圍繞向上和向下按鈕放置一個表單,並給提交按鈕所需的文本/圖像。

祝你好運!

1

您將需要使用AJAX此功能......你接近,加上一個Ajax調用您的處理程序中:

$('.vote').click(function(){ 
    if ($(this).data('action')=='up'){ 
     //jquery ajax call 
     $.ajax({ 
      url: "../pathToPhpFile/phpFile.php", 
      data: { dataToBeSentToServer: someData }, 
      success: function(data){ 
       //var data is data passed back from PHP script 
       $("#idOfDiv").html(data.html); 
      } 
     }); 
    } 
}); 

https://api.jquery.com/jQuery.ajax/

我還要補充,你應該使用PDO爲你的mysql連接。

http://us3.php.net/PDO