Запись массива в json файл

500
01 июня 2017, 10:45

Есть 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
 }
Answer 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));
READ ALSO
Форма_обратной_связи

Форма_обратной_связи

На сайте, разработанном с помощью CMS WordPress, установлена форма обратной связи CONTACT FORM 7, все настроено, разрешено отправлять файлы до 50 mb, к отправке...

271
Preg_match_all() PHP

Preg_match_all() PHP

Есть строка

206
Хранение в базе данных

Хранение в базе данных

Задача следующая: Есть таблица nap (общая точка доступа и хранения информации)Есть алгоритмы: 1

226
Убрать расширение .php в nginx

Убрать расширение .php в nginx

Привет всем! Частая проблема, прочитал много по этому поводу но так нифига и не понял

461