例如:如果需要某篇文章中包含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> " ;
}
循环输出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标签云制作——数据表的结构和查询方法
时间: 2024-10-04 10:27:50
php标签云制作——数据表的结构和查询方法的相关文章
php标签云制作过程(数据表的结构和查询)
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的数组用逗号
ThinkPHP实现非标准名称数据表快速创建模型的方法_php实例
本文实例讲述了ThinkPHP实现非标准名称数据表快速创建模型的方法.分享给大家供大家参考.具体方法如下: 非标准名称数据表,例如:cow_archives_4,类似命名方法常见于齐博cms,08cms等文档模型数据表命名,假设已在配置文件中配置数据表前缀: 复制代码 代码如下: <?php return array( //'配置项'=>'配置值' //数据库配置 'DB_PREFIX'=>'cow_', ); ?> 新建模型,Archives4Model.cla
SQL Server创建数据库和数据表的相关约束实现方法_MsSql
本文分析了SQL Server创建数据库和数据表的相关约束实现方法.分享给大家供大家参考,具体如下: 创建约束语法如下: CREATE DATABASE [test] ON (NAME=N'test',FILENAME=N'd:\SQL2kt_Data\test.mdf',SIZE=3mb,MAXSIZE=UNLIMITED,FILEGROWTH=1MB) LOG ON (NAME=N'test_log',FILENAME=N'd:\SQL2kt_Data\test_log.ldf',SIZE=
SQL Server创建数据库和数据表的相关约束实现方法
本文分析了SQL Server创建数据库和数据表的相关约束实现方法.分享给大家供大家参考,具体如下: 创建约束语法如下: CREATE DATABASE [test] ON (NAME=N'test',FILENAME=N'd:\SQL2kt_Data\test.mdf',SIZE=3mb,MAXSIZE=UNLIMITED,FILEGROWTH=1MB) LOG ON (NAME=N'test_log',FILENAME=N'd:\SQL2kt_Data\test_log.ldf',SIZE=
.net中如何给数据表实体类赋值的方法
数据 今天遇到一个问题,就是数据实体类中如何给属性赋值.因为从数据库中取出来的是一个DataSet如果一个一个给数据实体类中的属性赋值显的非常的笨拙,而且我们的数据表多达24个.在网上搜索了下写出了个简单的方法,代码如下: 首先我们做个实体类 1 public class Class1 2 { 3 private int inttemp; 4 5 public int IntTemp 6 { 7 get
JS网页制作实例:标签云
文章简介:js实现标签云效果. js实现标签云效果: 实现:1.随机方法:JavaScript代码function rand(num){ return parseInt(Math.random()*num+1); } 2.随机取色:JavaScript代码function randomcolor(){ var str=Math.ceil(Math.random()*16777215).toString(16); if(str.length<6){ str="0"+str; }
Excel如何批量制作CSV数据表
众所周知,Excel的功能十分强大,而其最核心的功能在于数据处理.熟练驾奴Excel,您的工作将充满快乐和自信.当您仅花上几分钟就完成了别人花上几天功夫才能完成的数据处理工作时,心中的那份喜悦只有您自己才能体会得到!下面给大家展示的是Excel批量制作数据表-- 目的 1通过数据模板与VBA结合,批量制作CSV数据表,要求使用规则逐步递增的命名方式来命名批量制作出来的数据表,数据表的内容根据实际需求由最初的模板和提供的基础值自动生成.尽量减少手动操作,真正实现全自动!如图所示为批量制作出来的
php mysql数据的导入导出,数据表结构的导入导出
实现数据的导入导出,数据表结构的导入导出 ********************************************************/ // //包含Mysql数据库操作文件 // require_once("MysqlDB.php"); /******************************************************* **类 名:MysqlDB
DedeCMS全局标签arclistsg|独立单表模型列表
arclistsg|独立单表模型列表 标签名称:arclistsg功能说明:单表独立模型的文档列表调用标记 适用范围:全局使用 基本语法:{dede:arclistsg&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; flag='h' typeid='' row='' col='' titlelen='' orderway='' keyword='' limit='0,1'} <a href='[field: