Задать вопрос
@9StarRu

Как сохранять данные из формы в json файл?

С помощью скрипта ниже сохраняю в json файл post данные, сохраняет в таком виде:

{"name":"Bot","email":"bot@bot.ru"}

Каждый раз при нажатии на кнопку Submit данные в json файле просто добавляются так:

{"name":"Bot","email":"bot@bot.ru"}{"name":"Bot","email":"bot@bot.ru"}{"name":"Bot","email":"bot@bot.ru"}

Как сделать, чтобы данные продолжали сохраняться в валидный json файл, по этому образцу:

[{"name":"Bot","email":"bot@bot.ru"},{"name":"Bot2","email":"bot2@bot2.ru"}]

Код формы:

<?php
if(isset($_POST['submit'])) {
$file = "data.json";
$arr = array(
    'name'     => $_POST['name'],
    'email'    => $_POST['email']
);
$json_string = json_encode($arr);
file_put_contents($file, $json_string, FILE_APPEND);
//    echo $json_string;
}
?>


<!doctype html>
<html>
<head>
</head>
<body>
<div style="text-align: center;">
<h1>Form</h1>
<form name="form1" method="post" action="">
    <p>
        <label for="name">Name: </label>
        <input type="text" name="name" id="name" placeholder="Your full name" autofocus required>
    </p>
    <p>
        <label for="email">Email: </label>
        <input type="email" name="email" id="email">
    </p>
    <p style="text-align: center;">
        <input type="submit" name="submit" id="submit" value="Submit">
    </p>
</form>
</div>
</body>
</html>


Спасибо!

p.s. мне необходимо просто сохранять данные из input вводимые на сайте, чтобы потом вывести их на сайте в виде облака тегов. Что-то вроде "Сегодня у нас искали", но без MySQL
  • Вопрос задан
  • 667 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@9StarRu Автор вопроса
Добавил строки кода, где с помощью str_replace добиваюсь нужного формата, но как-то это криво все :(

<?php
if(isset($_POST['submit'])) {
$file = "data.json";
$arr = array(
    'name'     => $_POST['name'],
    'email'    => $_POST['email']
);
$json_string = json_encode($arr);
file_put_contents($file, '['.$json_string.']', FILE_APPEND);

}

// Если включены строгие типы, то есть объявлено (strict_types=1);
$file = file_get_contents('data.json', true);
$file = str_replace('][', ',', $file);
echo $file;
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы