php新建H5牛牛棋牌搭建各种类型表

php新建H5牛牛棋牌搭建各种类型表论坛:aqiulian.com,更多PHP搭建咨询Q:212303635。dede,phpcms等内容模型的概念挺不错的,可以自定义表的字段,可以满足各种网站要显示内容的需求。

比如我有一个文章表,基本字段都有,但是我还需要一个qq,如果去更改表,还得更改后台添加文章时候的表单,非常麻烦,所以就想了想,结合TP的框架,做了一个内容模型的例子,现在分享出来给大家。

这个例子也可以结合下载功能,或者视频站等功能,把自己做的cms打造成一个全面的cms。

流程如下:

1.必须有一个模型表,去保存已经定义的模型,例子的sql语句如下


1

2

3

4

5

6

7

8

9

10

DROP TABLE IF EXISTS `think_category`;

CREATE TABLE `think_category` (

  `id` int(3) NOT NULL AUTO_INCREMENT,

  `name` varchar(20) DEFAULT NULL,

  `addtable` varchar(20) DEFAULT NULL,

  `type` tinyint(1) DEFAULT ‘2‘,

  `fields` text,

  `status` tinyint(1) DEFAULT ‘1‘,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

这个表,name是代表内容模型的名称,addtable是附加表,指明模型所需要依赖的表,type是模型的类型,1是系统模型,防止后台管理员不小心删除,2.是自由模型,可直接删除。fields是保存关于模型的字段等详细信息。

现在先写好前台样式。

在填写模型以后则可以保存到模型表category

至于插入数据库的php代码我就不写了。太简单了

2.在新建好内容模型以后,要做的就是编辑模型的字段,并且生成相应的表。

添加了两个模型软件和图片集,然后下一步的操作是字段管理(包括新建字段,编辑字段,删除字段,以及生成模型)

这是字段管理界面,先新建一个字段,假如我想新建一个qq的字段。 添加字段

表单提示字段是在后台添加文章里面所显示的字段,其中都有相应的说明,重要的几个就是数据类型是在后台添加文章里显示不同的表单元素

在修改了相应的数据类型以后,后台里添加文章等也会随之改变。假如我添加的字段是性别,那么 用到的就是radio单选的表单。

点击保存以后代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

function saveField(){

        $model=M(‘Category‘);

        $map[‘id‘]=$_REQUEST[‘id‘];

        $fields=getField(‘Category‘$map‘fields‘);

        if (!empty($fields)){

            $fields=unserialize($fields);

        }

        $fields[]=$_POST;

        $strField=serialize($fields);

        $data[‘fields‘]=$strField;

        if ($model->where($map)->save($data)){

            $ajax[‘data‘]=‘保存字段成功‘;

            $ajax[‘url‘]=__URL__.‘/setField/id/‘.$_REQUEST[‘id‘];

        }else{

            $ajax[‘data‘]=‘保存字段失败,请联系管理员‘;

        }

        die(json_encode($ajax));

    }

这段代码意思很简单,就是把上面添加字段的表单保存到相应模型的fields字段里,方便以后调用处理,$fields=getField(‘Category‘, $map, ‘fields‘); 这个是获取到此模型里的fields字段里的数据,因为字段不止一个,所以每次添加,都会更新fields里的数据,serialize这个函数真的非常好用,可以把数组或者对象转变成字符串保存在数据库中。

字段列表页面的代码


1

2

3

4

5

6

7

8

function setField(){

        $model=M(‘Category‘);

        $map[‘id‘]=$_REQUEST[‘id‘];

        $fields=getField(‘Category‘$map‘fields‘);

        $fieldList=unserialize($fields);

        $this->assign(‘fieldsList‘,$fieldList);

        $this->display();

    }

获取到指定模型的fields字段的信息,然后unserialize把字符串再转换为数组,显示在页面中

编辑字段代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

function editField(){

        $model=M(‘Category‘);

        $map[‘id‘]=$_REQUEST[‘id‘];

        $fields=getField(‘Category‘$map‘fields‘);

        $fields=unserialize($fields);

        $field=$_REQUEST[‘field‘];

        foreach ($fields as $k=>$v){

            if ($v[‘field_name‘]==$field){

                $fields=$v;

            }

        }

        $this->assign(‘fields‘,$fields);

        $this->display();

    }

更新字段的代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

function updateField(){

        $model=M(‘Category‘);

        $map[‘id‘]=$_REQUEST[‘id‘];

        $fields=getField(‘Category‘$map‘fields‘);

        $fields=unserialize($fields);

        $field=$_REQUEST[‘old_field‘];

        foreach ($fields as $k=>$v){

            if ($v[‘field_name‘]==$field){

                $fields[$k]=$_POST;

            }

        }

                                                                                                 

        $data[‘fields‘]=serialize($fields);

        if ($model->where($map)->save($data)){

            $ajax[‘data‘]=‘编辑字段成功‘;

            $ajax[‘url‘]=__URL__.‘/setField/id/‘.$_REQUEST[‘id‘];

        }else{

            $ajax[‘data‘]=‘编辑失败,请联系管理员‘;

        }

        die(json_encode($ajax));

    }

删除字段的代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

function deleteField(){

        $model=M(‘Category‘);

        $map[‘id‘]=$_REQUEST[‘id‘];

        $fields=getField(‘Category‘$map‘fields‘);

        $fields=unserialize($fields);

        foreach ($fields as $k=>$v){

            if ($v[‘field_name‘]==$_REQUEST[‘field‘]){

                unset($fields[$k]);

            }

        }

        $data[‘fields‘]=serialize($fields);

        if ($model->where($map)->save($data)){

            $ajax[‘data‘]=‘删除字段成功‘;

            $ajax[‘url‘]=__URL__.‘/setField/id/‘.$_REQUEST[‘id‘];

        }else{

            $ajax[‘data‘]=‘删除字段失败,请联系管理员‘;

        }

                                                                                        

        die(json_encode($ajax));

    }

完成以上以后,要做的就是生成最后所要使用的表。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

    function createCategory(){

        //获取模型表名以及字段

        $model=M(‘Category‘);

        $map[‘id‘]=$_REQUEST[‘id‘];

        $fields=getField(‘Category‘$map‘fields‘);

        $fields=unserialize($fields);

        $tableName=getField(‘Category‘$map‘addtable‘);

        $tableName=C(‘DB_PREFIX‘).$tableName;

        //如果表存在则删除

        if(M()->query("show create table ".$tableName)){

            M()->query("drop table ".$tableName);

        }

        $createSql="CREATE TABLE `".$tableName."` (

  `id` int(7) unsigned zerofill NOT NULL AUTO_INCREMENT,

  `title` varchar(100) DEFAULT NULL,

  `content` text,

  `write` varchar(20) DEFAULT NULL,

  `sort` int(7) DEFAULT NULL,

  `view` int(7) DEFAULT NULL,

  `pics` varchar(200) DEFAULT NULL,

  `create_time` int(20) DEFAULT NULL,

  `flag` varchar(50) DEFAULT NULL,

  `info` text,

  `keywords` varchar(300) DEFAULT NULL,

  `nav_id` int(7) DEFAULT NULL,

  `source` varchar(50) DEFAULT NULL,";

        $sql=$this->createSql($fields);

        $createSql.=$sql;

        $createSql.="PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8";

        if (M()->query($createSql)===false){

            $ajax[‘data‘]=‘创建数据表失败,请联系管理员‘;

            die(json_encode($ajax));

        }

                                                                          

        $ajax[‘data‘]=‘生成模型成功‘;

        $ajax[‘url‘]=__URL__.‘/setField/id/‘.$_REQUEST[‘id‘];

        die(json_encode($ajax));

    }

                                                                      

    /*

     * 创建数据库表的sql语句

     */

    function createSql($fields){

        foreach ($fields as $v){

            if (!strpos($v[‘default‘], ‘,‘)&&$v[‘default‘]!=‘‘){

                $sql.="`".$v[‘field_name‘]."` ".$v[‘type‘]."(".$v[‘length‘].") default ".$v[‘default‘].‘,‘;

            }else{

                $sql.="`".$v[‘field_name‘]."` ".$v[‘type‘]."(".$v[‘length‘]."),";

            }

        }

                                                                          

        return $sql;

    }

逻辑方式就是先获取到指定模型里fiels里的数据,然后拼接成sql语句,再结合包含基础字段的sql语句,就可以生成一个自己需要的文章表。

接下来的操作也非常简单,还是根据模型表里的fields字段里获取到的信息,生成对应的表单html代码,然后显示出来即可。

有时候,逻辑真的比技术更加重要。技术只是基础,逻辑思维才是技术提升的技巧。

原文地址:https://www.cnblogs.com/iosiosios/p/8487741.html

时间: 2024-08-05 22:28:52

php新建H5牛牛棋牌搭建各种类型表的相关文章

微信h5牛牛棋牌源码搭建架设详细教程

HTML的文件结构:html head网页头部信息(微信h5牛牛棋牌源码搭建架设Q_2189563389)/head body网页主体正文部分/body /html HTML的基本标记:定义网页背景色--bgcolor body bgcolor="背景颜色 " 设置背景图片--backgroung body background="图片的地址 " 设置文字颜色--text body text="文HTML的文件结构:<(h5牛牛棋牌平台开发www.y

h5牛牛平台搭建中小型棋牌类网络游戏服务端架构

h5牛牛平台搭建相关教程:http://h5.mostsheng.com 相关联系方式:QQ1279829431电联17061863554 用Golang实现基础架构逻辑后,准备再次谈谈我的想法. 已实现的逻辑与前文描述有几点不同: 1. Gateway更名为Proxy,DBProxy更名为DB 2. Proxy同时持有与(Login, Game)不同类型服务器的多条连接 3. DB不参与负载均衡,考虑是棋牌数据库负载不高,即使需要扩展多个也可以通过不同服务器配置指向不同的DB来扩展 4. 消息

h5牛牛棋牌大厅搭建 图文教程

css3实现动态波纹特效,由于css3里面有过渡和动画效果,现在利用css3实现动态波浪效果就很简单了,直接使用transform来实现就ok, 使得translateX 产生偏移就可以不断实现循环动态效果,这样就比传统的flash来实现更为简单.而且对页面也比较友好的. 本文主要和大家介绍css3实现波纹特效.H5实现动态波浪效果,非常不错,具有参考借鉴价值,h5牛牛棋牌大厅搭建 图文教程q-2152876294,需要的朋友可以参考下,希望能帮助到大家. 比如实现以下的背景波纹特效: html

如何提高c/c++大型项目的软件质量微信h5牛牛程序搭建

软件的交付质量一直是我们软件开发项目最为关注的核心问题,那么如何保证软件项目,尤其是大型和超大型软件项目的质量,不管在国内还是国外一直是许多软件企业一直关注和研究的问题. 通常我们会在功能性,可用性,高效性,可测试性,可维护性和可移植性等6个维度来对软件质量进行把控和评定. 1.功能性,即软件是否满足了客户业务要求: 2.可用性,即衡量用户使用软件需要付出多大的努力,简洁容易操作的软件,对于客户来说是非常重要的,就拿国内用户量最大的微信来说,你会不会觉得它的设计总是那么的简洁易用,以至于使用了这

h5牛牛棋牌源码安装服务器教程

h5牛牛棋牌源码安装服务器 材料下载:h5.hubawl.com 1.系统:windows2008独立服务器,8核处理器,内存8G,带宽10M以上,php5.6以上版本+MYSQL 5.5的运行环境/或者Linux均可 2.备案域名+微信公众号+认证服务号 3.特别说明:Php环境要求ssl,需要一个cacert.pem证书文件 架设步骤: 1,导入程序根目录下的db.sql,到你的数据库 2,修改数据库配置文件/application/database.php里的数据库连接信息(请勿使用记事本

h5牛牛棋牌源码下载九人牛牛搭建全套教程

全世界有数十亿台计算机相连,有22台通信.上海的一张网卡发出信号,洛杉矶的另一张收到信号.他们实际上不知道对方的物理位置.你不觉得很神奇吗        Internet的核心是一系列协议,通常称为Internet协议套件(Internet Protocol Suite),他们对计算机如何连接和网络作了详细的规定,通过理解这些协议,我们可以理解Internet的原理.        以下是我的学习笔记.由于这些协议是如此复杂和庞大,我想总结一个简明的框架来帮助我总体上把握它们.为了便于理解,我做

新大番薯棋牌牛牛源码安装搭建 微信h5牛牛大厅开发选择方式

一个完整的客户端棋牌游戏从结构上包括了游戏.游戏大厅.游戏网站.客户端等部分,如果把做棋牌游戏比作建房子,那打造一个自己的棋牌之家就得经过前期的规划设计,中期的建筑施工,后期的装修设计等环节,有的人建房子可能会亲力亲为,有的人为了省钱而去购买小产权房或二手房,更多的人则选择开发商购买商品房.本质上,做棋牌游戏基本也是如此,无论个人还是团队企业,在当前日渐成熟的网络棋牌游戏市场,新大番薯棋牌牛牛源码安装搭建(h5.maliwl.com) 微信h5牛牛大厅开发选择方式   ,要想涉足无非也是以下这几

h5棋牌游戏为何火爆?最新h5房卡棋牌搭建安装

不管承不承认,H5受到了关注.它并不像一款月流水过亿的爆款手游,或者风靡一时的app让人印象深刻.但当你打开微信朋友圈,看好友刷各式各样的动态,最新h5房卡棋牌搭建安装Q-2189563389从厂商的PR新闻,到创业鸡汤,再到个人的生活足迹,H5页面一直没有缺位过,从一开始的眼前一亮,到现在几乎成为各大门户的标配,似乎也不到半年的时间.H5游戏的便捷性,碎片化的特点迎合了移动端用户的使用习惯,并且能够通过微信朋友圈等社交平台快速传播.这种基于HTML5技术的游戏是否已经成为行业的风向标.它的历史

H5牛牛斗牛棋牌架设

H5牛牛斗牛棋牌架设Q2747044651 1.h5.zhengtuwl.com 布局的时候,如果一个元素你想让他的宽高保持一定比例,而不随屏幕变化,宽高设置的时候,使用同一个单位都是CSS3的单位,低版本不兼容 <span style="font-family: Arial, sans-serif; ">1.移动端页面布局,使用相对的数值,不要使用绝对数值,推荐使用%,vw,vh,rem,em</span>  2.兼容性:苹果设备微信强制使用的是os的浏览器s