我只是学习PHP和MySql,并通过使用CMS创建我自己的简单BLOG来学习它。我在这里遇到了一个问题。
我有一个名为edit_cat.php
的网页。这是为了编辑之前创建的类别。
我的数据库表看起来像这样:
cat_id | cat_title | parent_id
--------------------------------------
1 Comedy 0
2 Standup 1
3 Music 0
4 Film music 3
编辑帖子时,我想要用户(将是我),以便能够选择不同的父类别。
<?php
$cat_id=$_GET['id'];
$result = $db->prepare("SELECT * FROM categories WHERE cat_id=:cat_id");
$result->bindParam(':cat_id', $cat_id);
$result->execute();
$row = $result->fetch(PDO::FETCH_ASSOC);
?>
<div class="col-md-8">
<h2>Edit Category</h2>
<?php
if(isset($succes_update)){
echo $succes_update;
}
?>
<form class="form-inline" action="" method="POST">
<input type="hidden" class="form-control" name="cat_id" value="<?php echo $cat_id; ?>">
Category Title<br>
<input type="text" class="form-control" name="cat_title" value="<?php echo $row['cat_title']; ?>"><br>
Category sub Title<br>
<textarea class="form-control" name="sub_cat_title"><?php echo $row['sub_cat_title']; ?></textarea><br>
Parent Category<br>
<select name="parent_id">
<option selected><?php echo $row['parent_id'];?></option>
<?php
$result = $db->prepare("SELECT DISTINCT parent_id FROM categories");
$result->execute();
for($i=0; $row = $result->fetch(); $i++){
echo "<option>" . $row['parent_id'] . "</option>";
}
?>
</select>
<br><br><br><br>
<input type="submit" value="Save" class="btn btn-primary"/>
</form>
</div>
关于这篇文章:
echo "<option>" . $row['parent_id'] . "</option>";
我希望显示parent_id
,以及与cat_title
相关的parent_id
。就是这样,因此更容易使用(标题/名称比数字更好)。
有人知道如何做到这一点?
答案 0 :(得分:2)
$result = $db->prepare("SELECT parent_id, cat_title FROM categories");
$result->execute();
while($row = $result->fetch()){
echo "<option value = '".$row['parent_id']."'>" . $row['cat_title'] . "</option>";
}
?>
现在不需要DISINCT
,因为您的主键cat_id
将确保每一行都是唯一的(前提是它是主键)。您可以在这里使用while
循环而不是for
,因为您不需要计数变量,因此更加清晰。
答案 1 :(得分:1)
将选择查询更新为
SELECT (parent_id,cat_title) FROM categories
然后当循环考虑你的行时,为每个选项设置一个值
"<option value=\"$row['parent_id']\">".$row['cat_title']."</option>"