[英]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.