кнопка — счетчик кликов PHP

У меня есть скрипт .php, который подсчитывает количество нажатий кнопки и помещает их в файл .txt, здесь все отлично, но то, что у меня сейчас есть, работает только на одном счетчике. Если, скажем, я сделаю две кнопки, на них будет показано одинаковое количество кликов.

Мне нужен скрипт для работы кнопки foreach отдельно …

PHP:

if( isset($_POST['clicks']) ) {
incrementClickCount();
}

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

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

HTML:

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<input type="submit" value="click me!" name="clicks">
</form>
<div>Click Count: <?php echo getClickCount(); ?></div>

3

Решение

Вы должны попробовать другой подход, я думаю. Во-первых, сохранение кликов в файле медленнее, чем в базе данных, поэтому вы должны использовать базу данных вместо файла.

Затем вы можете создать таблицу, с button_id поле и соответствующий click_number поле. Так что если кнопка с id="1" щелкнул ты увеличиваешь click_number значение для этой кнопки.

4

Другие решения

Вы можете дать второй кнопке другое имя и сохранить данные в другом файле?

Другая возможность состоит в том, чтобы сохранить всю информацию о кнопках в одном и том же файле, например, используя explode а также implode

[править: пример]
if( isset($_POST['clicks'])&& isset($_POST['buttonnumber']))
{
incrementClickCount($_POST['buttonnumber']);
}

function getClickCount($num=0)
{
$clickinfo = explode(":",file_get_contents("clickit.txt"));
return (int)$clickinfo[$num];
}

function incrementClickCount($num=0)
{
$clickinfo = explode(":",file_get_contents("clickit.txt"));
$clickinfo[$num]++;
file_put_contents("clickit.txt", implode(":",$clickinfo));
}
1

если две кнопки вызывают одну и ту же функцию:

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

тогда, конечно, вы получите только один счетчик.

Вы можете либо превратить кнопку в другую форму, которая вызывает другую функцию, либо сделать что-то вроде:

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<input type="submit" value="click me!" name="clicks">
<input type="submit" value="click me!" name="clicks2">
</form>
<div>Click Count: <?php echo getClickCount(); ?></div>

if( isset($_POST['clicks']) ) {
incrementClickCount("button1");
}
if( isset($_POST['clicks2']))
{
incrementClickCount("button2");
}

function incrementClickCount($button)
{
if($button == "button1")
{
$count = getClickCount() + 1;
file_put_contents("clickit.txt", $count);
}
elseif($button = "button2")
{
// other counter
}

}
0

Вы должны использовать сессию. сначала установите начальную переменную сеанса 1, если она еще не инициализирована. После инициализации от 2-го клика он будет считаться +1 к каждому клику, потому что он будет удовлетворять выражению else

<?php
session_start();
?>
<html>
<head></head>
<body>
<form method="post" action="submit.php">
<input type="submit" name="count" value="Start counting" />
</form>
<?php
if(isset($_POST['count'])){
if(!($_SESSION['count'])){
$_SESSION['count'] = 1;
}else{
$count = $_SESSION['count'] + 1;
$_SESSION['count'] = $count;
}
}
echo $_SESSION['count'];
?>
</body>
</html>
0
По вопросам рекламы [email protected]