2013-03-19 119 views
0

我有一個小任務,其中有一個mysql表「blog」。它包含一列「ID_CAT」。 ID_CAT的每個字段包含單個文章的不同類別的不同值,如「22,44,33,55」。 我想根據類別選擇過濾博客的帖子。我通過ID_CAT選擇成URL和包含頁面GET梅索德那樣根據PHP的類別篩選帖子

<a class="rotated_link" href="?cat='.$categorie->getIDCategorie().'">'.$categorie->getNomCategorie().'</a> 

隨後包括在網頁那樣

$id_categorie = $_GET["cat"]; 
if (isset($id_categorie)) { 

    foreach(Article::getAllArticlebycategorie($id_categorie) as $all){ 
       $article= new Article($all->ID_BLOG); 
       $img=Image::getImageByArticle($article->getIDarticle()); 
       $tblCat=explode(',',$article->getIDCategorie()); 
        echo '<li class="li_blog_post">'; 
          echo'<img class="img_post_mini" src="img/file/'.$img.'" style="width:100%; height:150px; border:1PX solid #9D9D9D;" />'; 
          echo'<span class="post_title0">'.$article->getTitlearticle().'</span>'; 
          echo'<span class="tag_post"><img src="img/tag.png" style="width:16px; height:16px;"/>'; 
        foreach($tblCat as $catt){ 
         $categoriea = new Categorie($catt); 

        echo '<a class="tag_lable" href="">'.$categoriea->getNomCategorie().'</a> </span>'; 
        } 
        echo'<p class="post_prev">'.substr($article->getArticle(), 0, 410).'&nbsp;...</p>'; 
        echo'<span class="date">le&nbsp;'.$article->getDatearticle().'</span> <span class="view_more"><a class="test" href="?article='.$article->getIDarticle().'">voire les détails</a></span>'; 
        echo '</li>'; 
       } 

} 

的probleme是當我例如ID_CAT = 4,則功能選擇getAllArticlebycategorie只有在數字4是ID_CAT(4,33,50) - > selected(3,4,10) - >未選中列中的第一個值時纔會返回帖子。 功能:

public static function getAllArticlebycategorie($id_categorie){ 
    global $db; 
    $req = $db->prepare('SELECT * FROM blog WHERE ID_CAT='.$id_categorie); 
    $req->execute(); 
    return $req->fetchAll(PDO::FETCH_OBJ); 
} 

回答

1

使用FIND_IN_SET()因爲你正在使用PDO利用參數化查詢。

因此改變

$req = $db->prepare('SELECT * FROM blog WHERE ID_CAT='.$id_categorie); 
$req->execute(); 

$req = $db->prepare("SELECT * FROM blog WHERE FIND_IN_SET('$id_categorie', ID_CAT)"); 
$req->execute(array(':id_categorie' => $id_categorie)); 

SQLFiddle您與FIND_IN_SET()

+0

它的工作就像一個魅力發揮,感謝SOOOO了! – 2013-03-19 11:48:57

相關問題