Я хочу, чтобы пользователь мог отправить форму только один раз и после того, как он сможет ее обновить - PullRequest
0 голосов
/ 06 мая 2020

Я работаю над проектом, в котором есть две таблицы; таблица пользователей и mov ie таблица

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

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

Мой код для вставки выглядит следующим образом:


if (isset($_POST['an-submit'])) {
    if (empty($_POST['anfav'])) {
        $errors['anfav'] = 'Favourite required';
    }
    if (empty($_POST['anrank'])) {
        $errors['anrank'] = 'Rank required';
    }
    if (empty($_POST['anrewatched'])) {
        $errors['anrewatched'] = 'Rewatched required';
    }
    if (empty($_POST['anstatus'])) {
        $errors['anstatus'] = 'Status required';
    }
    if (empty($_POST['anrecommend'])) {
        $errors['anrecommend'] = 'Recommend required';
    }

    $anfav = $_POST['anfav'];
    $anrank = $_POST['anrank'];
    $anrewatched = $_POST['anrewatched'];
    $anstatus = $_POST['anstatus'];
    $anrecommend = $_POST['anrecommend'];
    $id = $_SESSION['id'];

    // Select id from users and insert into movie
    if (count($errors) === 0) {
        $query = "INSERT INTO anime SET movie_fav=?, movie_rank=?, movie_rewatch=?, movie_status=?, movie_rec=?, id =?";
        $stmt = $conn->prepare($query);
        $stmt->bind_param('siissi', $anfav, $anrank, $anrewatched, $anstatus, $anrecommend, $id);
        $result = $stmt->execute();

        if ($result) {
            $movie_id = $stmt->insert_id;
            $stmt->close();

            $_SESSION['movieid'] = $movie_id;   
            $_SESSION['anfav'] = $anfav;
            $_SESSION['anrank'] = $anrank;
            $_SESSION['anrewatched'] = $anrewatched;
            $_SESSION['anstatus'] = $anstatus;
            $_SESSION['anrecommend'] = $anrecommend;
            $_SESSION['message'] = 'Details have been submitted successfully!';
            $_SESSION['type'] = 'alert-success';
            header('location: movieinfo.php');
        } else {
            $_SESSION['error_msg'] = "Database error: Could not update details";
        }
    }
}

Как я могу отправить форму только один раз, а затем сделать ее обновляемой Может ли кто-нибудь мне помочь с этим

Спасибо

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете перенаправить на movieinfo. php с последним вставленным идентификатором, например header('location: movieinfo.php?movie_id='.$movie_id);, и нет необходимости хранить данные всех полей в сеансе. В movieinfo. php вы можете получить подробную информацию о movie_id из соответствующей таблицы и отобразить ее в форме HTML для обновления.

Например:

if (isset($_POST['an-submit'])) {
    if (empty($_POST['anfav'])) {
        $errors['anfav'] = 'Favourite required';
    }
    if (empty($_POST['anrank'])) {
        $errors['anrank'] = 'Rank required';
    }
    if (empty($_POST['anrewatched'])) {
        $errors['anrewatched'] = 'Rewatched required';
    }
    if (empty($_POST['anstatus'])) {
        $errors['anstatus'] = 'Status required';
    }
    if (empty($_POST['anrecommend'])) {
        $errors['anrecommend'] = 'Recommend required';
    }

    $anfav = $_POST['anfav'];
    $anrank = $_POST['anrank'];
    $anrewatched = $_POST['anrewatched'];
    $anstatus = $_POST['anstatus'];
    $anrecommend = $_POST['anrecommend'];
    $id = $_SESSION['id'];

    // Select id from users and insert into movie
    if (count($errors) === 0) {
        $query = "INSERT INTO anime SET movie_fav=?, movie_rank=?, movie_rewatch=?, movie_status=?, movie_rec=?, id =?";
        $stmt = $conn->prepare($query);
        $stmt->bind_param('siissi', $anfav, $anrank, $anrewatched, $anstatus, $anrecommend, $id);
        $result = $stmt->execute();

        if ($result) {
            $movie_id = $stmt->insert_id;
            $stmt->close();

            $_SESSION['message'] = 'Details have been submitted successfully!';
            $_SESSION['type'] = 'alert-success';
            header('location: movieinfo.php?movie_id='.$movie_id);
        } else {
            $_SESSION['error_msg'] = "Database error: Could not update details";
$_SESSION['type'] = 'alert-error';
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...