将两个“不相关”的字段组合在一起

时间:2015-09-13 21:04:58

标签: php mysql

我只是学习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。就是这样,因此更容易使用(标题/名称比数字更好)。

有人知道如何做到这一点?

2 个答案:

答案 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>"