簡體   English   中英

file.txt中的PHP Like按鈕計數器

[英]PHP Like button counter in a file.txt

我想重新創建幾個類似的按鈕,將計數保存在file.txt中,但不起作用:/

<?php

function getClickCount()
{
    return (int)file_get_contents("counter.txt");
}

function incrementClickCount()
{
    $counter = getClickCount() + 1;
    file_put_contents("counter.txt", $counter);
}
?>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<script type="text/javascript">
  var clicks = 0;

  function onClick() {
    clicks = 1;
    document.getElementById("clicks").innerHTML = clicks;
  };

</script>
<button type="button" onClick="onClick()" title="Vous aimez la couverture?" class="btn"><img id="heart" src="https://trello-attachments.s3.amazonaws.com/568304b85fa72dcb958a1edf/584acfc48b82595af77f2030/6257bf1efec79d5baf22309f8f327ce5/favorite.png" /></button>
<p><a id="clicks"><?php echo getClickCount(); ?></a></p>

此處演示

在此先感謝您的幫助,自幾天以來我一直在網上尋找它,但我沒有...

亞歷山大大帝

counter.php

<?php

    function getClickCount() {
        return (int)file_get_contents("counter.txt");
    }

    function incrementClickCount() {
        $counter = getClickCount() + 1;
        file_put_contents("counter.txt", $counter);
    }

    if(!empty($_POST)) {
        if($_POST['click'] == 'true') {
            incrementClickCount();
            echo getClickCount();
        } else {
            echo getClickCount();
        }
    }

?>

counter.txt

0

index.php

<html>
   <head>
      <title>Click Counter</title>
   </head>
   <body>
      <button type="button" onClick="onClick()" title="Vous aimez la couverture?" class="btn"><img id="heart" src="https://trello-attachments.s3.amazonaws.com/568304b85fa72dcb958a1edf/584acfc48b82595af77f2030/6257bf1efec79d5baf22309f8f327ce5/favorite.png" /></button>
      <p><a id="clicks"></a></p>

      <script>
          function onClick() {
              loadClicks(true);
          }

          function loadClicks(isClicked) {
              var click = isClicked === true ? true : false;
              $.ajax({
                 url: 'counter.php',
                 type: 'POST',
                 data: {
                   'click': click
                 },
                 success: function(response) {
                   $('#clicks').text(response);
                 }
              });
          }

          loadClicks(false);
      </script>
   </body>
</html>

代碼說明

每當您單擊按鈕時,都會在后台異步發送一個ajax請求到counter.php 該PHP文件接收請求並進行相應處理。

在代碼中,我們將單個數據發送到ajax POST請求中的PHP文件,該數據是根據條件(例如,單擊按鈕)設置的布爾數據。

在PHP文件中,您將檢查條件是否通過單擊按鈕或其他方式發生。 如果是按按鈕,則將增加點擊次數並發送點擊計數器值作為響應,否則,您只會發送該值。

您會注意到,我已經在onClick函數中調用了參數true loadClicks函數,在函數外部調用了false ,這意味着我首先在腳本開始執行時首先調用loadClicks(false) ,以僅加載clicks值,然后在我執行該操作時單擊按鈕loadClicks(true)被調用,意味着遞增並獲取值。

仔細閱讀它們后,您將理解該代碼。

乍看之下,我發現您的腳本存在3個問題。

1)您正在混合使用JavaScript和PHP。 JavaScript在瀏覽器上運行,PHP在服務器上運行。 如果要在腳本的這些部分之間交換數據,則需要從JS部分向服務器進行服務器調用,例如使用AJAX。 JavaScript中對PHP腳本的簡單HTML請求也將起作用。

2)同樣,您的<button>標記也需要嵌入到<form>中,該標記應指向要執行的腳本(可以是相同的腳本)。

3)您似乎從來沒有調用過incrementClickCount() ,至少在這里沒有顯示。

意見建議

會用PHP編寫所有代碼,然后解決另外兩點。 或者您需要實現某種形式的客戶端/服務器通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM