在数组中,也可以使用函数,如:

  1. $data = array(
  2. 'username'=> I('username','', 'htmlspecailchars'),
  3. 'content'=> I('content', '', 'htmlspecialchars'),
  4. 'time'=> time(),
  5. );

在php中就只能使用php的 函数, (可以包含thinkphp为我们定义的函数) , 不要跟mysql中的函数弄混淆了!

thinkphp中的数据库连接?

你不用自己显式的去写数据库连接代码, 只要在config.php中写上数据库连接配置就行了:

  1. 'DB_HOST'=>'127.0.0.1',
  2. 'DB_USER'=>'root',
  3. 'DB_PWD'=>'', // 注意这里不是password, 根据"写得最少..."的原则
  4. 'DB_NAME'=> '使用的数据库的名称',
  5. 'DB_PREFIX'=> 'th_',
  6. 以后在项目中就直接使用模型方法即可, 如:
  7. // M('table_name') = new Model('table_name')
  8. $id = M('table_name') -> data($data) -> add();
  9. // data($数组) 创建一个插入记录的数据对象
  10. // add方法返回插入记录的 id号.

在控制器( "是一个类") 中的方法里, 写代码, 成员方法中的 $this 指的是 当前这个 控制器类的 一个对象实例! 使用的$this-> function(...)是控制器类的 成员方法. 而所有的 "单字母方法" 如:I方法, M()方法等等应该就是全局方法. 不需要$this的!

成功和失败的方法?

$this->success('成功提示信息', '成功时跳转的页面 --- 对应的方法 名称');

$this-> error('失败时的提示信息', ['默认的是返回原来的提交页面'] );

think的删除数据记录?

  1. $result = M('table_name')->where('id>0')->delete(); // delete函数必须带 where条件方法, 否则执行失败!
  2. $result = M('table_name')->where(array('id'=> array('gt',0)))->delete();
  3. $result 是表示删除的记录数;
  4. 因为think不允许不带条件的 直接调用delete方法, 那样是很危险的!

think的查询?

  1. M('table_name')->select();
  2. // 查询全部记录;

form表单中, action="", 默认提交到当前页面.

模板中的{} 就相当于, 是一种简单写法:

输出不同的 "模板值"方法不同:

  • 如果是变量, 直接{$var}就可以输出;
  • 如果是函数, 需要加冒号: {:function()}
  • 如果是函数, 不加冒号, 会执行,但没有输出: {func()}, {~func()};
  • 输出session: {@var}
  • 输出cookie: {#var}
  • 输出get变量: {.var}, 输出post变量: {^var}, 输出常量{*ar}, 输出配置变量{&ar}等等

从控制器方法中, 分配变量到模板有三种方法:

  1. $this->assign('a',11);
  2. $this->a = 11;
  3. $this->assign('a', 11)->display();
  4. // 分配变量的时候, 不需要加$ 符合.

thinkphp的大括号和尖括号

大括号{ }表示输出变量或函数,

尖括号<> 表示think的Tag lib标签库, 跟html的标签一样的. 由think的模板引擎来解析.如:

  1. <foreach name='wish' item="v">
  2. ... // 注意, 因为是一个标签, 所以, foreach不能分开写...
  3. </foreach>
  4. <foreach name="wish" key='k' item='v'>
  5. ... {$v['id']} 等于 {$v.id}
  6. 这里最好是使用 点号, 这样会自动检测:
  7. 如果是数组, 就转换为 $v['id']
  8. 如果是对象, 就转换为$v->id.
  9. </foreach>
  10. // 那么, 如果你知道是解析的数组, 不需要解析判断 对象的时候, 可以提高解析速度, 配置为:
  11. 'TMPL_VAR_IDENTIFY'=>'array', 即可!

那么, 如果你知道是解析的数组, 不需要解析判断 对象的时候, 可以提高解析速度, 配置为: 'TMPL_VAR_IDENTIFY'=>'array', 即可!

在thinkphp的模板中使用函数?

  1. {$v.time|date="y-m-d H:i",###}
  2. 在模板中对 前面的变量内容 使用函数, 要用 竖线| 即可
  3. = 表示传递参数, 多个参数之间用逗号风隔, 前面的变量, 用###表示.

随机数: 不要用rand, 而是用 mt_rand(min, max): mt表示: mersenne twister算法, 比rand快.好.

===============================================================

thinkphp的项目分组

  1. 同样是建一个单入口index.php, 只不过名字叫做 App

    // 注意, 这个单一入口文件index.php, 以及生成的项目文件夹, 其实跟之前的任何一个 "非分组" 的项目入口文件都是完全相同的

    // 并不是你叫App就有什么不同, 真的要使它们成为 "分组"项目, 发生不同的是你随后的配置和分别创建的子项目文件夹!

  2. 其他配置/ 文件夹, 都是创建 相应 "子项目" 的配置 或者文件夹.

主要有 几个 地方: Conf, Common, Lib, Model等等.

  1. 第一, Conf 下的config.php是所有项目都可以 公用 的配置,
  2. 而在Conf下创建对应的分组项目文件夹及其配置, 则是单独有效的:
  3. Conf/Index/config.php(仅仅前台有效), Conf/Admin/config.php(仅后台有效)
  4. 第二, Lib控制器下的控制器:
  5. 删除原来创建的 IndexAction.class.php;
  6. 分别创建Index Admin文件夹
  7. 分别在对应的文件夹下创建 IndexAction.class.php则对应着对应的项目 控制器...

/* !!!!!!!!!!!!!!!!!!!

  1. Conf/config.php下配置 项目分组:
  2. return array(
  3. 'APP_GROUP_LIST' => 'Index, Admin, Member, Register....',
  4. 'DEFAULT_GROUP' => 'Index', // 注意是default group不是group _ default.
  5. );
  6. 第三, common文件夹下的公用文件
  7. common下的common.php中的函数, 所有项目都可以使用, 是公用的
  8. 而在common文件夹下分别创建的Index/ Admin文件夹下的
  9. 分别创建的 function.php( 特别注意, 不是common.php!!!)则只能是对应的项目可以使用的函数!
  10. 第四, Tpl模板分组:
  11. App/Tpl目录下分别创建IndexAdmin文件夹, 作为分组项目的模板文件夹,
  12. 然后再创建控制器对应的文件夹Index 方法对应的模板文件index.html
  13. 如:
  14. App/Tpl/Index(分组子项目)/Index(对应控制器)/index.html(对应方法)
  15. App/Tpl/Admin/Index/index.html......
  16. 为了减少模板 文件 对应的目录层次太深, 可以配置
  17. 'TMPL_FILE_DEPR' => '_'
  18. 这样就可以将 控制器和 模板文件名之间用 上面定义的符合 连接起来, 从而 减少一个 控制器的目录.
  19. 比如, 这时后的模板文件的目录就是: App/Tpl/Index/Index_index.html

===============================================================

thinkphp-许愿墙-2的更多相关文章

  1. CentOS系统中基于Apache+php+mysql的许愿墙网站的搭建

    1.首先,我们需要两台虚拟机(CentOS7,Linux文本). 2.给两台虚拟机配置网络环境分别为桥接模式 CentOS7 ip为192.168.100.139.24,linux文本ip为192.1 ...

  2. 基于Apache+php+mysql的许愿墙网站的搭建create database xyq; //创建xyq数据库

    1.准备CentOS7与CentOS5的基础配置 2.在两台虚拟机中配置yum. 3.在CentOS7中安装httpd与php与php-mysql PS:截图时已安装 CentOS7 关闭防火墙与se ...

  3. 【jquery】jquery 实现许愿墙效果,可拖拽

    最近整理做过的项目,发现有个许愿墙的效果,今天拿出来给大家分享下. 先简单的介绍下功能点: 随机显示背景图或背景色 出现的位置随机 可以通过拖拽改变位置 好了,附上代码: <!doctype h ...

  4. 许愿墙的搭建基于mysql

    首先需要两个服务器(也可以用一台,但不推荐) 1服务器用yum安装Apache+php+php-mysql 2服务器用yum安装mysql 1服务器 用yum安装Apache和php+php-mysq ...

  5. 许愿墙的搭建(基于Apache+php+mysql)

    一.准备部分:CentOS 7  , Linux 文本   各自配置好环境 二. CentOS 7准备如下: yum install httpd -y #安装httpd yum install php ...

  6. linux 搭建php网站许愿墙

    网站素材在:https://i.cnblogs.com/Files.aspx 首先需要搭建本地yum源,详情参考: http://www.cnblogs.com/jw35/p/5967677.html ...

  7. 许愿墙JQ

    <!doctype html> <html> <head>     <meta charset="utf-8">     <t ...

  8. thinkphp学习笔记13-15集

    13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...

  9. [转载]jquery版小型婚礼(可动态添加祝福语)

    原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...

  10. jquery版小型婚礼(可动态添加祝福语)

    前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我的百度生涯,一直寻觅许愿墙背景图片和便利贴图片,觅了好久……一直没找到满意的……无意间看到祝福语和一些卡通婚礼图片.最 ...

随机推荐

  1. 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理

    4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 95  Solved: 33[Submit][Statu ...

  2. centos7安装mplayer的方法

    首先是要获取源代码. 首先是主程序的源代码. 打开你的终端,按照我的命令一步一步来: cd Download svn checkout svn://svn.mplayerhq.hu/mplayer/t ...

  3. HDU 1231 最大连续子序列(水题)

    题目链接: 传送门 最大连续子序列 Time Limit: 1000MS     Memory Limit: 32768 K Description 给定K个整数的序列{ N1, N2, ..., N ...

  4. UOJ#246. 【UER #7】套路

    题目传送门 官方题解传送门 一句话题意的话就是给定一个序列,从中找出至少$k$个连续的元素形成子序列,使得子序列中任意两个元素差值的最小值于其长度-1的乘积最大. 题目中给出了$ 1 \leq a_i ...

  5. 高可用与负载均衡(8)之聊聊 LVS重要参数和优化以及监控

    preface 在明白LVS-DR模式的部署之后,我们看看LVS的几个重要参数: 如有问题,请联系我18500777133@sina.cn [root@localhost ~]# ls /proc/s ...

  6. ng-controller event data

    $emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data 例子 ...

  7. jQuery基础(1) -- jQuery 语法

    通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行"操作"(actions).jQuery 语法jQuery 语法是通过选取 HTML 元素,并对选取 ...

  8. 符号(void *)何解?符号(void **)又何解??

    http://bbs.csdn.net/topics/70050852 对于多级指针或者数组,要掌握正确的识别方法:void*  是说: 这是一个指针,去掉一个(*)就是它所指向的,在这里是指向放vo ...

  9. 利用jquery实现网站中对应栏目下面内容切换效果。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Jquery 实现密码框的显示与隐藏【转载自http://blog.csdn.net/fengzhishangsky/article/details/11809069】

    <html> <head>  <script type="text/JavaScript"  src="jQuery-1.5.1.min.j ...