在《phpcms二次开发之模型类model.class.php》中讲到了模型类的建立方法,接下来我讲一下模型类的应用。
前段时间我基于phpcms v9开发了一个足球网。足球网是由好几个模块组成的,如图:
我选其中一个比较简单的级别管理模块来说一下模型类的应用,为了明了我对其作了简化,但是功能保持完整,基本上包函了模型类的基本应用,如添加数据,修改数据、查询数据、删除数据。
一、模型操作方法insert()--添加数据
下面是级别模块的后台控制器level.php的代码片断:
02 |
defined('in_phpcms') or exit('no permission resources.'); |
03 |
pc_base::load_app_class('admin', 'admin', 0); |
04 |
pc_base::load_app_func('global'); |
05 |
class level extends admin {//继承后台管理类,所以就含有了权限控制 |
08 |
//控制器的构造函数,加载初始化一些功能操作 ,如加载了level_model |
09 |
public function __construct() { |
11 |
$this->username = param::get_cookie('admin_username'); |
12 |
$this->level = pc_base::load_model('level_model');//加载级别模型类level_model.class.php |
16 |
public function addlevel(){ |
17 |
if(isset($_post['dosubmit'])){//判断如果提交表单则执行下面的插入语句 |
19 |
if($this->level->insert($_post['football'])){ |
1 |
showmessage(l('level_successful_added'),'?m=football&c=level&a=levellists'); |
2 |
include $this->admin_tpl('level_add');//加载后台添加级别的模板 |
insert()是插入数据的模型方法,$_post['football']是提交过来的级别字段,它是一个数组,如图:
模板代码片断:
01 |
<form action="?m=football&c=admin_sl&a=addlevel" method="post" name="myform" id="myform" > |
02 |
<table class="table_form" width="100%" cellspacing="0"> |
05 |
<th width="80"><strong><?php echo l('level_name')?>:</strong></th> |
06 |
<td><input type="text" name="football[level]" size="20" id="level" class="input-text"/></td> |
09 |
<th width="80"><strong></strong></th> |
10 |
<td><input type="submit" name="dosubmit" id="dosubmit" value=" <?php echo l('submit')?> "> <input type="reset" class="dialog" value=" <?php echo l('clear')?> "</td> |
上面的addlevel()方法如果转化为mysql语句为:
01 |
public function addlevel(){ |
02 |
if(isset($_post['dosubmit'])){ |
03 |
$sql = "insert into `fb_level` (`level`) values ('".football[level]."')"; |
04 |
$result=$this->level->query($sql); |
06 |
showmessage(l('level_successful_added'),'?m=football&c=level&a=levellists'); |
10 |
include $this->admin_tpl('level_add'); |
通过两个方法的对比我们知道,使用phpcms v9封装的方法insert()插入数据时更为简单方便。当然上面插入的字段只有一个,如果插入十几二十个字段的话,依然是$this->level->insert($_post['football'])就搞定。如果用mysql语句的话,就显得繁琐不堪了。砍柴不误磨刀工,所以phpcms v9二次开发中,熟悉运用model.class.php数据库模型类的方法,能起到事半功倍的作用。(待续...)
- phpcms v9二次开发之模型类的应用(2)
二.模型操作方法select()--查询语句 //查询级别管理列表信息 public function levellists() { $lelists = $this->l ...
- phpcms v9二次开发之数据模型类
系统模型类:model.class.php数据模型类的位置:/phpcms/libs/classes phpcms v9二次开发中,我们要经常需要对模块的数据表进行查询.添加.修改和删除数据等操作,所 ...
- PHPCMS V9二次开发便捷自定义后台入口文件夹
phpcms v9二次开发便捷自定义后台入口文件夹 最新发布的phpcms v9由于采用了mvc的设计模式,所以它的后台访问地址是固定的,虽然可以通过修改路由配置文件来实现修改,但每次都修改路由配置文 ...
- PHPCMS V9二次开发]自定义字段模型-文本组
phpcms v9,我们在做类似于酒店房型等类型的时候,需要用到文本组字段模型,但phpcms并未提供该模型.如下图所示效果: 展示效果如下: 步骤/方法 打开phpcms\modules\conte ...
- phpcms v9二次开发笔记
phpcms是基于MVC结构的. 安装: 下载phpcms_v9.5.9_UTF8.zip:新建目录phpcms,将压缩包里install_package目录下所有文件复制到phpcms目录.浏览器输 ...
- phpcms V9 二次开发------(获取点击数详解)
关于phpcms V9的点击数的使用应该有不少数是直接调用网上搜索到的代码,但是对于一些想要深入研究开发的人来说,看到网上的代码后更是不解,本人这几天看了看,了解了一些东西,在这里写出来分享一下,首先 ...
- [PHPCMS V9二次开发]自定义字段模型-添加字段类型
步骤/方法 打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups. 打开phpcms\modules\content\fiel ...
- phpcms v9 二次开发 - 自己添加源文件
一.在根目录添加入口文件, 我现在要在根目录添加一个文件名为test.php 这样一个文件,为了调用系统的公用类和函数,必须加入一下包含文件 test.php代码如下 <?phpdefine(' ...
- PHPCMS V9 二次开发常用代码集
0:调用最新文章,带所在版块 {pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url a ...
随机推荐
- Linux2.6内核--对块IO层操作的讨论
当一个块被调入内存时(也就是说,在读入后或等待写出时),它要存储在缓冲区中.每个缓冲区与一个块对应,它相当于是磁盘块在内存中的表示.块包含一个或多个扇区,但大小不能超过一页,所以一页可以容 ...
- 【HDOJ】4986 Little Pony and Alohomora Part I
递推.设n个盒子的Spell次数为S(n),期望为E(n).当有n个盒子时,可能第n把钥匙在第n个盒子中,此时的Spell次数应该为(n-1)!+S(n-1):当第n把钥匙不在第n个盒子中,混合排列, ...
- HDOJ 1287 破译密码(异或运算)
Problem Description 有个叫"猪头帮"的国家,采用一种简单的文法加密,他们所用的语言里面只有大写字母,没有其他任何字符:现在还知道他们加密的方法是:只用一个大写字 ...
- 解决WIN7上 SQL2008r2 由于防火墙问题 客户端无法远程连接的问题
打开防火墙->入站规则->新建规则->选择端口 TCP 1433 允许->... OVER
- LinGo:投资问题——线性规划
一.根据题目所给数据,建立一张表格方便查看 项目A 项目B 项目C 项目D 可投资年 1,2,3,4 3 2 1,2,3,4,5 收回本利年 次年年末 第5年 第5年 当年年末 本利 1.06 1.1 ...
- SRM475 - SRM479(1-250pt,500pt)
SRM 475 DIV1 300pt 题意:玩游戏.给一个棋盘,它有1×n(1行n列,每列标号分别为0,1,2..n-1)的格子,每个格子里面可以放一个棋子,并且给定一个只含三个字母WBR,长度为n的 ...
- linux关闭防火墙及selinux
RHEL6.5 查看linux防护墙状态: service iptables status 关闭linux防火墙: 1)永久关闭,重启后生效 开启: chkconfig iptables on 关闭: ...
- XXE篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题
0x01 Brief Description XXE(XML External Entity) XML外部实体攻击也是常见的web漏洞之一,在学习这个漏洞之前有必要了解一下xml,可以参考w3c的基本 ...
- Android Dialog 系统样式讲解及透明背景
AlertDialog.Builder builder = new AlertDialog.Builder(DialogActivity.this,AlertDialog.THEME_TRADIT ...
- LeetCode Maximum Product Subarray 解题报告
LeetCode 新题又更新了.求:最大子数组乘积. https://oj.leetcode.com/problems/maximum-product-subarray/ 题目分析:求一个数组,连续子 ...