php標籤雲製作 資料表的結構和查詢方法

2022-05-06 06:09:07 字數 1267 閱讀 6316

1.資料表的結構:

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

標籤tag表:

其中mood表中的tag欄位,以tag表的id欄位+「,」+tag表的id欄位,

2.查詢方法:

則在新增文章的時候用

$result=implode(",", $_post['tagid']);//

把獲取的checkbox的陣列用逗號進行分割

$_post['tagid']為獲取前台的核取方塊的陣列,前台html部分**為:
//這裡是thinkphp的寫法,原生的寫法大同小異
這樣儲存文章的時候,只需要mood表中的tag=$result即可。

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

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

用分割函式

$taglist = explode(',',$source); //$source為文章的tag值,例如:把tag=「1,2,3」分割為乙個陣列
然後在前台可以這樣寫:

for($index=0;$index

迴圈輸出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} }

鑑於博主是php新手,所以**有粗糙的地方,請見諒了!

如果你更好的方法,不妨告訴我吧`(*∩_∩*)′

sql複製資料表和表結構

sql複製資料表 select into 與 insert into select into目標表名from源表名 insert into目標表名 fld1,fld2 select fld1,5 from源表名 以上兩句都是將 源表 的資料插入到 目標表,但兩句又有區別的 第一句 select in...

查詢MySQL資料表的欄位名和表結構

查詢表的字段 查詢表的欄位名 select column name group concat a.column name separator as column name 加表別名並用逗號連線 from information schema.columns where table schema he...

SQL語句遍歷樹結構的資料表

資料庫為 sql server create table treetest id int,parentid int,info varchar 10 插入資料 insert into treetest id,parentid,info values 1,null,root insert into tr...