php - 我想让用户只提交一次表单,然后他可以更新它
问题描述
我正在做一个有两张桌子的项目;用户表和电影表
我有代码在用户登录后提交与电影信息相关的表单,但我想要做的只是将该数据插入表中一次,插入后用户可以根据需要更新它。
正如您所知,我已经编写了插入代码,每次提交表单时它都会插入一个包含数据的新行,我希望只插入一行,然后该用户可以更新它。
我的插入代码如下
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";
}
}
}
我怎样才能使表单只提交一次,然后使它可更新任何人都可以帮助我吗
谢谢
解决方案
您可以使用最后插入的 id 重定向到 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';
}
}
}
推荐阅读
- javascript - 5秒后Keycloak javascript示例注销
- c++ - 如何让编译器用尽可能少的代码对奇数多态结构进行偏移计算?
- jquery - 使用 ng-repeat 的指令双向绑定未绑定回模型
- ios - 图表实时更新图表 - 数据记录在一个 VC 并绘制在另一个
- python - CPLEX 中的背包求解总结
- java - 如何使用 serversocket 发送位图
- c# - Iterate over a json input and create the treeview like hierarchy based on the "keys" taking account of the children "keys"
- python - 如何从另一个函数中的一个函数访问数据
- jquery - 当我尝试附加一些字符串时,为什么 jQuery 将等于放在空格中
- javascript - 如何从某个索引开始映射嵌套 json 并将其映射回该 index-1 值