所以,我正在建立一个投资组合网站,我可以发布和编辑博客。
我正在制作博客编辑页面,而我在将两张桌子组合在一起时遇到了麻烦。
第一个表适用于博客,第二个表包含所有不同的博客类别。
以下是我收到博文的方式:
$qStr = "SELECT post_title, post_content, post_description, post_active, category_id FROM posts WHERE post_id = {$post_id}";
以下是我如何获取博客类别:
$qStr = "SELECT category_name FROM categories WHERE category_id = {$category_id}";
因此,在我的编辑博客帖子页面中,我有一个下拉框,我需要显示该博客文章所属的类别,并能够更改它。我的博客表中有一个category_id。我的问题是如何让下拉列表显示帖子属于哪个类别?
现在我的下拉代码看起来像这样(注意:现在我只是填充所有类别的下拉列表)
<div class="form-group">
<label for="categorySelect" class="col-lg-2 control-label">Category</label>
<div class="col-lg-3">
<select class="form-control" id="categorySelect">
<?php
foreach ($categories as $cat) {
echo("<option>{$cat['category_name']}</option>");
}
?>
</select>
</div>
</div>
答案 0 :(得分:0)
您需要为select(option)元素设置所选属性,如下所示:
<?php
foreach ($categories as $cat) {
if ($cat['category_name'] == $category_of_your_post)
echo "<option selected=\"selected\">{$cat['category_name']}</option>";
else
echo "<option>{$cat['category_name']}</option>";
}
?>
顺便说一句,我认为你有错误的查询(如果我理解你的问题)。基本上,您需要检索帖子的category_id并针对类别数组执行相等的问题:
$qStrBlog = "SELECT post_title, post_content, post_description, post_active, category_id FROM posts WHERE post_id = {$post_id}";
$qStrCat = "SELECT category_id, category_name FROM categories";
然后:
<?php
foreach ($categories as $cat) {
if ($cat['category_id'] == $blog_data['category_id'])
echo "<option selected=\"selected\">{$cat['category_name']}</option>";
else
echo "<option>{$cat['category_name']}</option>";
}
?>
答案 1 :(得分:0)
您有两种选择:
在selected
循环中添加带有if条件的foreach
属性:
foreach ($categories as $cat) {
echo '<option';
if ($cat['category_id'] == $post['category_id']) echo ' selected';
echo '>'.$cat['category_name'].'</option>';
}
或在帖子INNER JOIN
查询中使用SELECT
:
$qStr = "SELECT p.post_title, p.post_content, p.post_description, p.post_active, p.category_id, c.category_name FROM posts INNER JOIN categories c ON c.category_id = p.category_id WHERE post_id = {$post_id}";
并将第一个option
元素作为&#34;当前选中的默认值&#34;选项:
<select class="form-control" id="categorySelect">
<option value="<?= $post['category_id'] ?>"><?= $post['category_name'] ?> (current)</option>
<?php
foreach ($categories as $cat) {
echo("<option>{$cat['category_name']}</option>");
}
?>
</select>
我已假设您已将第一个SELECT
查询的结果正确加载到$post
。请注意,如果不可以将类别设置为帖子,则应使用LEFT JOIN
代替并{{1}将第一个option
元素输出包裹起来不是空的。