我在PHP方面并不擅长,我必须做的工作是PHP,因此,由于我仍在学习PHP,因此我寻求的帮助很少。
这是我的表格:
CREATE TABLE `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`user_id` int(11) DEFAULT NULL,
`title` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL UNIQUE,
`body` text NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) );
CREATE TABLE `topics` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL UNIQUE );
CREATE TABLE `post_topic` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`post_id` int(11) DEFAULT NULL UNIQUE,
`topic_id` int(11) DEFAULT NULL,
FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`),
FOREIGN KEY (`topic_id`) REFERENCES `topics` (`id`) );
有“不进行更新”操作,但是我将其保留以保持其清洁。
现在,我添加了“管理”页面,可以在其中添加新帖子和脚本,以使我可以插入帖子的标题,子句和正文
这是 PHP :
$id = "0";
$user_id = 3;
$title = "";
$slug = "";
$body = "";
if (isset($_POST['submit'])) {
$title = $_POST['title'];
$slug = $_POST['slug'];
$body = $_POST['body'];
mysqli_query($db, "INSERT INTO posts (title, slug, body) VALUES ('$title', '$slug','$body')");
}
这是 HTML表单
<form method="post" action="posts.php">
<input type="text" name="title" placeholder="Title">
<input type="text" name="slug" placeholder="Slug">
<textarea name="body" rows="3" placeholder="Text"></textarea>
<button type="submit" name="submit">Submit</button>
</form>
还存在具有DB连接的config.php文件,我的代码的这一部分工作正常。
现在如何使用选择框在帖子中添加类别?例如,我有三个类别,即“体育”,“技术”和“新闻”,在每个帖子上,我希望能够选择一个类别,以后可以在类别下找到。
我尝试了几件事,但只是将新ID添加到post_topic或topics表中。
非常感谢。
已编辑
例如,这就是插入方式:
INSERT INTO `posts` (`id`, `user_id`, `title`, `slug`, `body`) VALUES (1, 1, 'First post', 'first-post','First post text')
INSERT INTO `topics` (`id`, `name`, `slug`) VALUES (1, 'Tech', 'tech')
INSERT INTO `post_topic` (`id`, `post_id`, `topic_id`) VALUES (1, 1, 1)
答案 0 :(得分:-1)
我建议使用数据库中所有可能的<select>
条目填充HTML topic
输入。然后,在提交表单时,通过向post
添加一条记录,将topic
与选定的post_topic
关联起来。
这是一个使用mysqli程序样式的基本示例,因为这似乎就是您所使用的。
查询所有可用主题
$sql = "SELECT * FROM `topics` WHERE 1 ORDER BY `name` ASC;";
$topicsQ = mysqli_query($db, $sql);
用主题填充<select>
<form method="post" action="posts.php">
<input type="text" name="title" placeholder="Title">
<input type="text" name="slug" placeholder="Slug">
<textarea name="body" rows="3" placeholder="Text"></textarea>
<select name="topic_id"><?php
while ($topic = mysqli_fetch_row($topicsQ)) {
?><option value="<?=$topic['id']?>"><?=$topic['name']?></option><?php
}
?></select>
<button type="submit" name="submit">Submit</button>
</form>
插入帖子
$user_id = 1; // this might come from whichever user is logged in, from the form, etc.
$title = $_POST['title'];
$slug = $_POST['slug'];
$body = $_POST['body'];
$topic_id = $_POST['topic_id'];
$sql = "INSERT INTO `posts` (`user_id`, `title`, `slug`, `body`) VALUES (?,?,?,?);";
$stmt = mysqli_prepare($db, $sql);
mysqli_stmt_bind_param($stmt, 'isss', $user_id, $title, $slug, $body);
mysqli_stmt_execute($stmt);
// get the id of the inserted post
$post_id = mysqli_insert_id($db);
将新帖子与所选主题相关联
$sql = "INSERT INTO `post_topic` (`post_id`, `topic_id`) VALUES (?,?);";
$stmt = mysqli_prepare($db, $sql);
mysqli_stmt_bind_param($stmt, 'ii', $post_id, $topic_id);
mysqli_stmt_execute($stmt);