@ilya011196
начинаю писать код

Как изменить данные в json по клику на ссылку с использованием php и мб нужен js или jquery ajax?

Добрый день.
Задача такая:
Из json файла php выводит контент. Нужно сделать так, чтобы при клике на ссылку увеличивалось значение viewed и измененные данные записывались в json. И есть некоторые условия:

1) Для увеличения количества просмотров использовать только get-параметр с ИД новости. Запрещено использовать порядковый номер новости внутри массива.
2) После перехода по ссылке и обновлении этой же страницы в браузере, не должно происходить повторного увеличения счетчика viewed

json-файл:
[
    {
        "id": "0001",
        "viewed": 0,
        "name": "News 1",
        "text": "Preview text"
    },
    
    {
        "id": "0005",
        "viewed": 0,
        "name": "News 2",
        "text": "Preview text"
    },
    
    {
        "id": "0010",
        "viewed": 0,
        "name": "News 3",
        "text": "Preview text"
    }
]


PHP код:
<?php

$filename = __DIR__ . "/data.json";
$result = [];
if (file_exists($filename))
    $result = json_decode (file_get_contents ($filename), true);

?>

<? foreach ($result as $item): ?>
<div>
    <b><?=$item['name']?></b><br>
    <small>Viewed: <?=$item['viewed']?></small><br>
    <?=$item['text']?><br><br>
    <a href="?set_viewed=<?=$item['id']?>">I watched</a>
    <hr>
</div>
<? endforeach; ?>


Заранее спасибо за отклик!
  • Вопрос задан
  • 262 просмотра
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Похоже на задание...
1) Для записи нового значения соответственно в вашем массиве $result находите элемент с нужным и увеличиваете значение просмотров на единицу. Сохраняете файл обратно в жсон.
2) Для не повторения увеличения от одного пользователя используйте куки, пишите в них массив уже посещенных id и при повторе не добавляйте просмотр.
Ответ написан
Комментировать
@Stalinko
PHP'шник и фрилансер до мозга костей
Использовать json в качестве БД - очень плохая идея. Возьмите хотя бы SQLite. Оно тоже умеет хранить БД в файле, но делает это гораздо удобнее и быстрее. Для подобных счётчиков ещё можно использовать redis
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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