У меня есть скрипт .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>
Вы должны попробовать другой подход, я думаю. Во-первых, сохранение кликов в файле медленнее, чем в базе данных, поэтому вы должны использовать базу данных вместо файла.
Затем вы можете создать таблицу, с button_id
поле и соответствующий click_number
поле. Так что если кнопка с id="1"
щелкнул ты увеличиваешь click_number
значение для этой кнопки.
Вы можете дать второй кнопке другое имя и сохранить данные в другом файле?
Другая возможность состоит в том, чтобы сохранить всю информацию о кнопках в одном и том же файле, например, используя 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));
}
если две кнопки вызывают одну и ту же функцию:
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
}
}
Вы должны использовать сессию. сначала установите начальную переменную сеанса 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>