我有 PHP 代码可以从 tbl_categorie 中选择类别,现在我有一个多选形式,其中一篇文章可以有多个类别。在数据库中插入值时,我想将多个类别值存储在一列/属性中。其中 ID_CAT 属性将仅存储 tbl_categorie 的类别 ID,由逗号 (,) 分隔。我在一个数据库中有两个表,
tbl_blog:
ID_BLOG ID_CAT TITLE ARTICL DATE
1 1,3 title1 article1 2013-03-04
2 4,10 title2 article2 2013-03-04
3 3,6 title3 article3 2013-03-04
tbl_categorie:
ID_CAT NOM_CAT
1 HTML
2 CSS
3 DESIGN
4 PHP
5 ..
尽管我使用了 implode() 语句,但我首先遇到了为一篇文章添加两个 ID_CAT 的问题,但是当我将 ID_CAT 的类型从 int 更改为 varchar 时,她可以工作,这是添加文章的过程:
Article::creatArticle(0,$_POST['title'],implode(', ', $_POST['id_categorie']),$_POST['article']);
这是从 class_article 添加文章的功能:
/**
* function créeArticle
*/
public static function creatArticle($id_article,$title,$id_categorie,$article)
{
global $db;
$req = $db->prepare("INSERT INTO blog (ID_BLOG,TITLE,ID_CAT, ARTICLE,DATE) VALUES ('',:title,:id_categorie,:article,'".date('Y-m-d')."')");
$ok = $req->execute(Array('title' =>$title,'id_categorie' => $id_categorie,'article' => $article));
return $db->lastInsertId();
//$erreur = $req->errorInfo();
}
现在我有问题要获取每篇文章中应包含的所有类别,这就是我在后台使用魔术方法 get() 获取文章表的方式,她只返回第一个值中的第一个值:
<?php
foreach(Article::getAllArticle()as $blog ){
$article= new Article($blog->ID_BLOG);
$categorie = new Categorie($article->getIDCategorie());
echo'
<tr>';
echo '<td><input type="checkbox" /></td>';
echo '<td>'.$article->getTitlearticle().'</td>';
echo '<td>'.$categorie->getNomCategorie().'</td>';
echo '<td>'.$article->getDatearticle().'</td>';
echo '<td>35</td>';
echo ' <td class="actions">';
echo '<a href="javascript:editArticle('.$article->getIDarticle().');" title="Edit this content"><img src="img/icons/actions/edit.png" alt="" /></a>';
echo ' <a href="javascript:deleteArticle('.$article->getIDarticle().');" title="Delete this content"><img src="img/icons/actions/delete.png" alt="" /></a></td>';
echo '</tr>';
} ..
我知道我必须使用explode() 语句或制作一个循环,但我无法弄清楚如何:(,而且我怀疑ID_CAT 的类型应该是varchar 导致问题吗?谢谢!