php標籤雲製作過程(資料表的結構和查詢)

來源:互聯網
上載者:User
1.資料表的結構:

 

建立建兩張資料表,結構如下:

 

標籤tag表:

 

 

文章mood表:

 

 

其中mood表中的tag欄位,以tag表的id欄位+“,”+tag表的id欄位,
 

 

2.查詢方法:

 

例如:如果需要某篇文章中包含tag表中的id為1,2,3的tagname,也就是id為1,2,3的標籤,

 

則在添加文章的時候用

 

$result=implode(“,”, $_POST[‘tagid’]);//把擷取的checkbox的數組用逗號進行分割

 

$_POST[‘tagid’]為擷取前台的複選框的數組,前台html部分代碼為:

 

<input type=”checkbox” name=”tagid[]” value=”{$tag.id}” id=”{$tag.id}”><label for=”{$tag.id}”>{$tag.tagname}</label>//這裡是thinkphp的寫法,原生的寫法大同小異

 

這樣儲存文章的時候,只需要mood表中的tag=$result即可。

 

資料已經存好了,接下來我們需要實現的是,點擊相應的標籤查詢出所有包含該標籤的文章。

 

如果我們需要顯示某篇文章所包含的所有標籤,我們要先擷取該片文章的id,查詢出該篇文章的tag,

 

用分割函數

 

$taglist = explode(‘,’,$source); //$source為文章的tag值,例如:把tag=“1,2,3”分割為一個數組

 

然後在前台可以這樣寫:

 

for($index=0;$index<count($taglist);$index++){ 
$tagsa=$tagdata->where(‘id=%d’,$taglist[$index])->select();
echo “<a id=’tag’ href=’location/tag/”.$tagsa[0][‘id’].”‘>”.($tagsa[0][‘tagname’]).”</a>&nbsp&nbsp&nbsp” ;
}

 

迴圈輸出tagname,url傳tag表的id值,接下來只需要在接收url值的地方寫一個模糊查詢的sql,文章表的tag like %id%。

 

 註:以上的查詢語句都是thinkphp的文法。

 

這樣用模糊查詢會出現一個問題,因為例如:文章表的其中一個tag欄位可能包含1,5    另一個tag欄位可能包含10,23

 

如果查詢tag like %1%的時候會查詢出  tag欄位為1,5   和   tag欄位為10,23   的兩篇文章。即使like條件為%1,%或者%,1,%也是不行的。

 

因此這裡我的寫法是在前台寫php代碼,用兩個嵌套的for迴圈來解決,如下:

 

$map[‘tag’] = array(‘like’,’%’.tagid.’%’);
//dump($selecttag[$i][‘id’]);$arr_mood=$mood->where($map)->select();for($a=0;$a<count($arr_mood);$a++){
$source=$arr_mood[$a][‘tag’];
$taglist = explode(‘,’,$source);

for($index=0;$index<count($taglist);$index++){

if(tagid==$taglist[$index]){//當傳過來的tagid在文章的tag欄位中存在,則輸出。
dump($arr_mood[$a][‘title’]);//這裡可以用echo輸出至前台
}

}

}

 

鑒於博主是php新手,所以代碼有粗糙的地方,請見諒了
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.