[英]Php SQL inner join?
因此,我正在制作一個投資組合網站,可以在其中發布和編輯博客。
我正在制作博客編輯頁面,但無法將兩個表組合在一起。
第一個表用於博客, 第二個表包含所有不同的博客類別。
這是我獲取博客文章的方式:
$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>
您需要為select(option)元素設置selected屬性,如下所示:
<?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>";
}
?>
您有兩種選擇:
在foreach
循環中添加帶有if條件的selected
屬性:
foreach ($categories as $cat) {
echo '<option';
if ($cat['category_id'] == $post['category_id']) echo ' selected';
echo '>'.$cat['category_name'].'</option>';
}
或在SELECT
查詢后使用INNER JOIN
:
$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
元素作為“默認當前選定”選項:
<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
。 請注意,如果有可能不將Category設置為Post,則應改用LEFT JOIN
並包裝取決於$post['category_id']
的第一個option
元素輸出(不為空)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.