usxr
@usxr

Как вывести данные из json на экран?

Код формы, что обрабатывается на главной странице
<?php
if(isset($_POST["name"]) && isset($_POST["number"])) {
    $fp = fopen('data.json', 'a');
    $arr = ['name' => $_POST['name'], 'number' => $_POST['number']];
    
    $json_data = json_encode($arr).PHP_EOL;

    fwrite($fp, $json_data);
    fclose($fp);

}
?>

Код страницы, где я должен вывести данные из json
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Grid</title>
</head>
<body>
    <table>
        <tr>
            <td>Name</td>
            <td>Number</td>
        </tr>
        <?php
        $r_json = file_get_contents("data.json");
        $arr_json = json_decode("data.json", true);
        

        ?>
    </table>
</body>
</html>

Код data.json где хранятся данные
{"name":"1","number":"86"}
{"name":"12","number":"8"}
{"name":"13","number":"6"}
{"name":"dawd","number":"2134"}
{"name":"авф","number":"213"}
{"name":"14","number":"812"}
{"name":"15","number":"823"}
{"name":"16","number":"82"}
{"name":"17","number":"81"}

Еще хотел бы спросить.. Правильный ли формат для json, что я сохраняю? Или мне как то надо переделать?(если переделать, то как)
  • Вопрос задан
  • 448 просмотров
Решения вопроса 2
nefone
@nefone
Junior PHP разработчик
Правильный ли формат для json, что я сохраняю?

Нет, в JSON должна быть одна пара открывающейся "{" и закрывающейся "}" скобки.

Или мне как то надо переделать?(если переделать, то как)

Да, набудет переделать, как то так:
<?php
$arr = ['name' => $_POST['name'], 'number' => $_POST['number']];

//читаем данные из файла
$r_json = file_get_contents("data.json");
$arr_json = json_decode($r_json, true);

//склеить данные из файла и теми что получили из формы
$result = array_merge($arr_json, $arr);

//сохраняем данные в файл
$fp = fopen('data.json', 'a');
fwrite($fp, $json_data);
fclose($fp);


И вообще лучше сделать сохранение в базу данных и потом на странице отдавать чисто JSON, с помощью задания HTTP заголовков:
header("Content-type: application/json; charset=utf-8");
Ответ написан
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
if(isset($_POST['name']) && isset($_POST['number'])) {
    file_put_contents('data.dat', $_POST['name'] . '|||' . $_POST['number'] . PHP_EOL, FILE_APPEND | LOCK_EX);
}

$data = file('data.dat', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach ($data as $line) {
    $td = explode('|||', $line);
    echo '<tr><td>' . $td[0]. '</td><td>' . $td[1]. '</td></tr>';
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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