PHP SQL中的一篇文章多类别系统

时间:2012-03-24 14:32:08

标签: php sql categories

文章的多个类别选择系统

早先M使用两张桌子 文章&类别和保存文章表中的类别ID 但在这个系统中,每篇文章只能保存一个类别ID 我想在多个类别中保存文章

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

我理解添加一个关系表的整个概念&保存文章ID&此表中的类别ID。 但是不知道如何在新文章表格中使用数组实现多选系统。编辑文章表格。

之前我在我的表单中显示选择以在添加文章&中显示类别列表编辑文章页面。

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

want to display category List like this screenshot

非常感谢...

修改 我用echo '<input type="checkbox" name="selcats[]" value="$catid"> ' .$catname; 显示类别复选框 它并排显示在一排。 如何更改屏幕截图显示,即滚动条列表 &安培;需要处理此数组并在数据库中插入文章时插入新表。

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

2 个答案:

答案 0 :(得分:1)

您基本上需要两个具有此结构的表

table_categories

_____________________________
|    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);
 }

答案 1 :(得分:1)

在我的情况下,我使用“标签系统”,例如:你有一篇文章有​​一个类别,没有什么会改变它...在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标签的文章,或任何您想要搜索的文章。

这就是你在找什么?