一篇PHP SQL中的多类别系统


One Article multiple categories system in PHP SQL

文章的多类别选择系统

早期M使用两个表文章&类别并将类别ID保存在文章表中但在这个系统中,我只能为每篇文章保存一个类别ID我想保存文章在多个类别

在搜索时,我在StackOverflow 上发现了同样的问题

我理解再添加一个关系表的整个概念;保存文章ID&此表中的类别ID。但不知道如何在NewArticleForm&编辑文章表单.

早些时候,我在我的表单中显示"选择"以在"添加文章"中显示类别列表;编辑文章页面。

请有人解释我如何在我的表单中以多个复选框样式显示类别列表,这样用户就可以选择多个类别,然后在POST后如何获取复选框数据并运行查询以在文章表和文章表中插入数据;具有选定类别ID 的新关系表

想要显示类别列表像这个屏幕截图

非常感谢。。。

编辑:我使用echo '<input type="checkbox" name="selcats[]" value="$catid"> ' .$catname;显示"类别"复选框它并排排成一排。如何更改类似屏幕截图的显示,即带有滚动条的列表&在数据库中插入项目时,需要处理此数组并插入到新表中。

编辑2使用div:D在滚动列表中正确显示复选框<div style="height: 150px; width: 200px; overflow: auto;">

在我的例子中,我使用了一个"标记系统",例如:你有一篇文章只有一个类别,没有什么能改变这一点。。。在adition中,您可以在文章表中创建另一个包含相关单词(或您想要的任何单词)的字段,并用空格或逗号分隔它们。

// Get the data from your database
$tags = 'world, travel, turism, cities';
// Separate the values
$tags = explode(", ", $tags);
// Create a link for each one
foreach($tags as $t)
{
    echo ' <a href="?tag=' . $t . '">' . ucfirst($t) . '</a> ' . "'r'n"; 
}

它应该输出:

 <a href="?tag=world">World</a> 
 <a href="?tag=travel">Travel</a> 
 <a href="?tag=turism">Turism</a> 
 <a href="?tag=cities">Cities</a>

这意味着你可以选择标题为LIKE标签的文章,或者任何你想搜索的东西。

这就是你想要的吗?

您基本上需要两个表,使用这种结构

表_类别

_____________________________
|    id    |      title    |
-----------+---------------+

table_category_detail

______________________________________________
|    id    |  categoryId   |    articleId    |
-----------+---------------+------------------

要提取所有类别,请从table_categories中选择所有类别,并在启用mutiple选择的情况下将其放入选择菜单。

接下来,当发布时,获取选定的框值,并逐个插入table_category_detail

这就是创建选择框的方法

$query = "SELECT * FROM table_categories";
$result = mysql_query($query);
echo '<select multiple="multiple">';
while($row = mysql_fetch_assoc($result)) {
   echo '<option value="'.$row['id'].'">'.$row['title'].'</option>';
}
echo "</select>";

或多复选框

while($row = mysql_fetch_assoc($result)) {
   echo '<input type="checkbox" name="selcats[]" value="'.$row['id'].'"> ' .$row['title'];
}

帖子后:

 // Here write codes to insert the article first
 $articleId = mysql_insert_id(); //get the id
 $values = $_POST['selcats'];
 foreach($values as $value) {
      $query = "INSERT into `table_category_detail` VALUES(NULL, $value, $articleId)";
      $result = mysql_query($result);
 }