Как сохранить данные JSON в новый файл JSON с помощью итераций с использованием AJAX и PHP? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть простой редактор фильмов с боковой панелью, в котором пользователь просто перетаскивает элемент на правую сторону. Пользователь может редактировать этот элемент по своему усмотрению и сохранять данные в JSON. Я хочу, чтобы пользователь нажимал, чтобы сохранить его, должен создать новый файл и сохранить в нем новые данные.

пока вот что у меня есть

HTML

        <div class="col-2 save-details">
          <div id="save-block">
            <button type="button" class="btn btn-success btn-save">Save</button>
          </div>
        </div>

здесь js для сохранения файла

var moviesblocks =null;

$(document).ready(function(){

$.getJSON('moviesblocks.json', function (data) {

    moviesblocks = data.moviesblocks;
    console.log(moviesblocks);

});

$("#main-btn-save").on("click", function () {

    var moviesparams = JSON.stringify({
        moviesblocks: moviesblocks
    });

    $.ajax({
            type: 'POST',
            data: {
                moviesparams: moviesparams
            },
            url: 'save_movies_block.php',
            success: function (data) {
                    $('#msg').html(data).fadeIn('slow');
                    $('#msg').delay(2000).fadeOut('slow');
            },
            error: function () {
                    $('#error-msg').html(data).fadeIn('slow');
                    $('#error-msg').delay(2000).fadeOut('slow');
            }
    });

    console.log(moviesparams);
});

})

Вот php-файл для обработки процесса

<?php
if(isset($_POST['moviesparams'])){
    $moviesparams = json_decode($_POST['moviesparams']);
    // do whatever checks you need on $moviesparams to verify valid data
    $success = file_put_contents("moviesblocks.json", json_encode($moviesparams));
    if($success === false){
        echo "sorry , something is wrong";
        die();
    }else{
        echo "Data successfully saved";
        die();
    }
} else {
    echo "nic";
}

$data=file_get_contents("data.json");
$result=json_decode($data);
?>

Как вы можете видеть теперь, после того как пользователь щелкнет, сохраните его в этом файле

moviesblocks.json

Теперь я хочу, чтобы когда пользователь нажимал сохранить, он должен сохранять в новый файл что-то вроде moviesblocks1.json вместо moviesblocks.json

Вот живое демо живое демо

Как мне добиться того, чего я хочу?

1 Ответ

2 голосов
/ 02 июля 2019

Если вы не хотите использовать базу данных, вам нужно создать еще один файл для сохранения номеров версий файлов.Каждый раз, когда вы хотите создать новый файл, получите последний номер версии из этого файла version.txt и добавьте его к имени файла.Например: moviesblocks1.json, moviesblocks2.json.

После создания нового файла обновите версию из version.txt.Это поможет вам создать новый номер версии в следующий раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...