Есть html страница с 3 input-и type="radio"(один из них submit), при выборе одного и нажатия на подтверждающую кнопку данные какая кнопка выбрана обрабатываются php скриптом и записываются в json файл. Но проблема в том, что когда один раз выбираешь первый а потом второй то в файл записывается вместо одной из цифр(кол-ва нажатий конкретно на этот input) какие-то знаки.Переменные $yes и $no меняются в зависимости от того как часто нажимали на каждую из кнопок. Вот весь код php
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="poll">
<h3>How are you?</h3>
<form action="script.php" method="post">
Good:
<input type="radio" name="vote" value="0">
<br> Bad:
<input type="radio" name="vote" value="1">
<br>
<input type="submit">
</form>
</div>
</body>
</body>
</html>
Вот весь код php
<?php
$vote = $_POST['vote'];
$filename = "data.json";
$content = file($filename);
$array = explode(",", $content[0]);
$yes = isset($array[0]) ? $array[0] : 0;;
$no = isset($array[1]) ? $array[1] : 0;;
if ($vote == 0) {
$yes += 1;
}
if ($vote == 1) {
$no += 1;
}
$insertvote =
[
'Good: ' => $yes,
'Bad: ' => $no
];
$pretty = json_encode($insertvote, JSON_PRETTY_PRINT);
$fp = fopen($filename,"w");
fputs($fp,$pretty);
fclose($fp);
?>
Вот вывод json файла
{
"Good: ": "{\n",
"Bad: ": 1
}
Проблема в том, что Вы не декодируете json перед использованием:
$content = json_decode(file_get_contents($filename), true) ?:
['Good' => 0, 'Bad' => 0];
if ($vote == 0) $content['Good'] += 1;
if ($vote == 1) $content['Bad'] += 1;
file_put_contents($filename, json_encode($content));
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости