将两个“;“不相关”;表单中的字段


combine two "unrelated" fields in form

我只是在学习PHP和MySql,并通过使用CMS创建自己的简单BLOG来学习。不过我在这里遇到了一个问题。

我有一个叫edit_cat.php的页面。这是用于编辑先前创建的类别。

我的DB表如下所示:

 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,但也要显示与parent_id相关的cat_title。这样做更容易使用(标题/名称比数字更好(。

有人知道怎么做吗?

$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循环,这要干净得多,因为您不需要计数变量。

将选择查询更新为

SELECT (parent_id,cat_title) FROM categories

然后,当循环思考您的行时,为每个选项设置一个值

"<option value='"$row['parent_id']'">".$row['cat_title']."</option>"