С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
3 / 3 / 1
Регистрация: 24.03.2013
Сообщений: 304

Добавление данных в json, через форму

22.03.2017, 14:14. Показов 1581. Ответов 2
Метки json (Все метки)

Студворк — интернет-сервис помощи студентам
Почему после отправки корректных данных, файл data.json не дополняется?

Изначальный файл

JSON
1
2
3
4
5
6
[
    {
        "email" : "test@test.ru",
        "age" : 18
    } 
]

Я проверил, если после
PHP
1
$data[] = ['email' => $email, 'age' => $age];
вставить

PHP
1
2
3
echo '<pre>';         
var_dump($data);        
echo '</pre>';
то на экране показывает, то, что файл дополнился, а если его открыть, то он не изменён. Почему?

Может проблема в путях $fileName?



PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
 
if($_POST){ 
    $error =[];
    
    $options = [
        'options' => [
            'min_range' => 18,
            'max_range' => 70
        ]
    ];
    $age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT, $options);
    
    if($age === false){
        $error[] = 'Поле возраст должно быть больше 0 и меньше 70';
    }
    
    $email= isset($_POST['email']) ? $_POST['email'] : '';
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    
    if($email === false){
        $error[] = 'Поле Email не корректное';
    }
        
    //если нет ошибок, то значения в поля не подставлять
    if(!$error){
        $fileName = __DIR__  . '\data.json';
        $data = json_decode(file_get_contents($fileName), true);
        
        $data[] = ['email' => $email, 'age' => $age];
        echo '<pre>';
        var_dump($data);
        echo '</pre>';
        
        //если не записали файл
        if(!file_get_contents($fileName, json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE))){
            $error[] = 'Ну удалось сохранить данные';
        }
        
        //это только пример, писать так не нужно
        if(!$error){
            //header("Location:./form3.php");
        }
        
    }
}
 
$fileName = __DIR__  . '\data.json';
$data = json_decode(file_get_contents($fileName), true);
 
echo '<pre>';
var_dump($data);
echo '</pre>';
?>
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Обработка форм</title>
    </head>
<body>
 
<?php 
if($_POST){?>
    <?php foreach($error as $error): ?>
        <p><?php echo $error ?></p>
<?php endforeach; }?> 
 
    <form action="form3.php" method="post">
        <label for="email">Email</label>
        <input id="email" type="text" name="email" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>" placeholder="Email">
        
        
        <label for="age">Возраст</label>
        <input id="age" type="text" name="age" value="<?php echo isset($_POST['age']) ? $_POST['age'] : '';?>" placeholder="Возраст">
        <input type="submit" value="Войти">
    </form>
<body>
</html>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2017, 14:14
Ответы с готовыми решениями:

Добавление данных на БД через форму
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\test.ur\add.php on line 34 как устранить ошибку?...

Добавление данных в БД через форму
Доброго времени суток! Начинаю изучать php, нужно сделать что бы из формы данные добавлялись в БД. Вот сама форма: &lt;form...

Добавление данных в MySQL через форму
Вот код &lt;?php include(&quot;includes/header.php&quot;); ?&gt; &lt;?php include(&quot;includes/header3.php&quot;); ?&gt; &lt;form action=&quot;invite.php&quot;...

2
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
22.03.2017, 16:27
Цитата Сообщение от Dimon3x Посмотреть сообщение
Почему?
Не вижу запись в файл , после того как дополнили.
Цитата Сообщение от Dimon3x Посмотреть сообщение
PHP
1
$data[] = ['email' => $email, 'age' => $age];
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
22.03.2017, 16:28
Цитата Сообщение от Dimon3x Посмотреть сообщение
то на экране показывает, то, что файл дополнился,
дополнился не файл а массив $data
Цитата Сообщение от Dimon3x Посмотреть сообщение
а если его открыть, то он не изменён. Почему?
потому,что вы ничего не записали в файл

Цитата Сообщение от Dimon3x Посмотреть сообщение
if(!file_get_contents($fileName,
file_get_contents - читает из файла, а не пишет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2017, 16:28
Помогаю со студенческими работами здесь

Добавление данных через форму в таблицу базы данных MS SQL
Здравствуйте! Я делаю форму для добавления записи в таблицу базы данных, созданную в MS SQL 2008. В таблице три поля...

Добавление данных в БД через форму
Применил запросо к MySQL в PHP, но столкнулся с тем что в одной и тойже таблице одни поля заполняются а другие нет. Вот отрывок: ...

Добавление данных через форму
Создал форму &quot;прием заявки&quot; для добавления данных о новом заказе. --Не получается ввести данные о номере специалиста. Пишет, что ключ...

Добавление в базу данных через форму
Помогите, пожалуйста! Новичок в этой среде. Не работает обработчик php при подключении, выдает такую ошибку MySQL Error!&quot;; }...

Добавление в базу данных через форму
Доброго времени суток, у меня такая задача: надо добавить штуку (не знаю как называется), чтобы нажав на кнопку на форме, выходило окно с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru