利用tp5开发智慧软文发布系统中遇到的一些坑
1、
PHP 计算两个时间戳之间相差的时间
假设你两个时间戳为$a,$b;
你可以用$c=$a-$b;(反正就是大的减小的),这时$c就是两个时间间隔的秒数了。
想求两个时间间隔的天数就用:$c/(60*60*24)
一天的毫秒数是:86400,所以直接$c/86400 答案也是一样的
想求两个时间间隔的小时数就用:$c/(60*60)
js 跳转链接的几种方式
1、跳转链接 在当前窗口打开
window.location.href="http://www.baidu.com" 等价于 <a href="baidu.com" target="_self">go baidu</a>
2、跳转链接 在新窗口打开
window.open("http://www.baidu.com") 等价于 <a href="baidu.com" target="_blank">go baidu</a>
3、跳转链接 返回上一页
window.history.back(-1);
4、跳转链接
self.location.href="baidu.com"
self 指代当前窗口对象,属于window 最上层的对象。
location.href 指的是某window对象的url的地址
self.location.href 指当前窗口的url地址,去掉self默认为当前窗口的url地址,一般用于防止外部的引用
top.location.href:为引用test.html页面url的父窗口对象的url
如果你的网页地址是:http://www.a.com,别人的是http://www.b.com, 他在他的页面用iframe等框架引用你的http://www.a.com,那么你可以用:
if(top.location.href!=self.location.href){
location.href="http://www.a.com";
}
来转向你的页面,top指代的是主体窗口,这里top.location.href返回http://www.b.com;
http://www.b.com!=http://www.a.com,返回为真(true),则网页重定向到你的网页,做到防盗用的作用.
tp5 时间间隔查询问题筛选两个时间之间的内容
在做时间统计的时候,一定要注意的是,只有转化成时间戳才能进行时间的运算。
$now=strtotime(date('Y-m-d'));
$end_time=strtotime('2020-5-1');//字符串转换成时间戳
$timediff = $end_time-$now;
$day= intval($timediff/86400);
---------------------
MYSQL 中 LIMIT 用法
mapper文件中的sql:
--------------------------------------------------------------------------------------------
(在实体类中定义的属性)
start:从第几条记录开始。
size:读取几条记录。
select id="findAllUsers" parameterType="Map" resultType="entity.IUser">
select * from newusers
<where>
user_name like
#{user_name,jdbcType=VARCHAR}
</where>
limit #{start,jdbcType=INTEGER},#{size,jdbcType=INTEGER}
</select>
-------------------------------------------------------------------
前端将page:第几页
rows(size):每页多少条
这两个参数,传到后台。
通过这两个参数,可以算出start 计算方法 start=size(page-1)
然后将size和start放入map中
简单代码示例
Map
map=new HashMap();
map.put("start",start);
map.put("size",size);
不要忘记将start和size转换成Integer.
然后将map当作参数传入dao的接口。
注:
limit是mysql的语法
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录
随机查询记录
如果你的字段和mysql关键字有冲突,那么建议采用数组方式调用,例如:
Db::table('think_user')->where('status=1')->order(['order','id'=>'desc'])->limit
(5)->select();
V5.0.17+ 版本开始,当你的order排序中使用了SQL函数的时候,请使用 orderRaw 方法替代
order ,例如:
Db::table('think_user')->where('status=1')->orderRaw('rand()')->limit(5)->se
lect();
php获取数组长度的方法(有实例)
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧。
php如何获取数组的长度,使用php函数count(),或是sizeof()
例如:
|
1 2 3 4 5 6 |
$arr = Array('0','1','2','3','4'); echo count($arr); // 输出 5 $arr = array('A','B','C'); echo sizeof($arr); //输出3 |
sizeof()和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0;
两函数功能一样,手册上讲,sizeof()是函数count()的别名。
那么多维数组长度要怎么统计呢?继续看例子
比如你读取的数组是一个二维数组:
|
1 2 3 4 5 6 |
<?php $arr=array( 0=>array('title' => '新闻1', 'viewnum' => 123, 'content' => 'ZAQXSWedcrfv'), 1=>array('title' => '新闻2', 'viewnum' => 99, 'content' => 'QWERTYUIOPZXCVBNM') ); ?> |
如果你想统计数组$arr的长度,也就是说该二维数组只有两条新闻,你想要的数字也是2,但是如果使用count($arr)不同版本的php,统计的结果是不一样的;
后来在php手册中发现,count函数还有第二个参数,解释如下:
count函数有两个参数:
0(或COUNT_NORMAL)为默认,不检测多维数组(数组中的数组);
1(或COUNT_RECURSIVE)为检测多维数组,
所以如果要判断读取的数组$arr是不是有新闻信息,就要这样写了:
|
1 2 3 4 5 6 7 8 |
<?php if(is_array($arr) && { ..... } else { ..... } ?> |
你可以使用这样的代码来测试该函数:
|
1 2 3 4 5 6 7 8 9 10 |
<?php $arr=array( 0=>array('title' => '新闻1', 'viewnum' => 123, 'content' => 'ZAQXSWedcrfv'), 1=>array('title' => '新闻2', 'viewnum' => 99, 'content' => 'QWERTYUIOPZXCVBNM') ); echo '不统计多维数组:'.count($arr,0);//count($arr,COUNT_NORMAL) echo "<br/>"; echo '统计多维数组:'.count($arr,1);//count($arr,COUNT_RECURSIVE) ?> |
实际环境中我们大多数情况下都是用array().length获取长度即可。
特别注意:
在auth 权限管理的时候,会有三个数据表,auth_rule,auth_group,auth_group_access,在书写的时候有不同的写法:
在控制器中书写可以写成驼峰法AuthGroup.php
控制器也可以写成auth_group.php
模板中不能使用驼峰法必须写成下划线
例如 auth_group.html
Model中和控制器写法一样
Tp5 搜索不传递参数导致分页错误的解决方案:
public function search(){
$conf=db('conf')->where('id',1)->find();
$check['name']="cid";
$check['id']="0";
$title=input('title');
$city=db('city')->select();
$pdtype=db('pdtype')->select();
$where['status']=2;
$lsts=db('media')->where($where)->
where('title','like',"%".$title."%")->alias('a')
->join('city
b','a.area=b.cid','left')->
join('pdtype
c','a.pdtype=c.pid','left')->order('a.price')->
field('a.id,a.title,a.url,a.price,a.sltype,b.city,c.pname,a.status,a.urltype,a.week,a.join,a.uid,a.remarks')->
paginate(20,false, [
'query'
=> request()->param()]);
$this->assign(['city'=>$city,'pdtype'=>$pdtype]);
$this->assign('lsts',$lsts);
$this->assign('check',$check);
$this->assign('conf',$conf);
$lst['title']='媒体价格';
$this->assign('lst',$lst);
return
view();
}
其他的地方无需调整只需要在搜索paginate添加参数
Paginate(20,false,[‘query’=>request()->param()]);
如何实现网页元素浮在最上层?
1、需求:做一个input框,支持手动输入的同时,还支持下拉框;
所以要求这个下拉框要浮在最上层,如图:
要点:如果div较少,如两个div,则可以直接用:
style="position:
absolute;"
而我这里的div较多,且要将下拉框浮在弹框之上,(弹框中有多个div,要将下拉框浮在这些div之上),
则需要加入z-index属性;
style="position:
absolute; z-index: 10"
z-index使用详解:
首先将position定义为,absolute、relative或fixed。
【必须position为以上三个属性,z-index才能层级体现出来,才能起作用】
设置 style 中 z-index:auto
auto可定义为一个值(整数数字),越大代表越置前,如可定义为: z-index:9999。
若定义为-1,代表为最底层。
如果要让div1不被div2遮挡,则将div1的z-index设置比div2大就可以了。
利用tp5开发智慧软文发布系统中遇到的一些坑的更多相关文章
- thinkPHP5开发智慧软文遇到的分页第二页不显示数据的问题
在进行结果查询进行分页的时候,发现分页第一页数据正常,第二页没有数据,后面问题一样,这个是因为直接使用了: 如果此处使用如下语句: $lst=NewsModel::order('sendtime de ...
- wdCP v3.3.8apache阿里云ssl证书实现智慧软文http转换https的详细操作教程
先展示一下效果:智慧软文发布系统(https://www.zhihuiruanwen.com) 之前用的是传统的http,发现360浏览器,火狐浏览器,谷歌浏览器均提示不安全的链接,最主要的是第一次打 ...
- 在开发Thinkphp5.0智慧软文个人微信个人支付宝企业支付宝接口时遇到的坑
在开发Thinkphp5.0智慧软文个人微信个人支付宝企业支付宝接口时遇到回调后提示成功但是不能自动充值的情况,现在记录一下: 两种情况 1.个人支付宝 个人微信遇到的情况 因为个人支付宝 个人微信 ...
- Windows下USB磁盘开发系列二:枚举系统中所有USB设备
上篇 <Windows下USB磁盘开发系列一:枚举系统中U盘的盘符>介绍了很简单的获取系统U盘盘符的办法,现在介绍下如何枚举系统中所有USB设备(不光是U盘). 主要调用的API如下: 1 ...
- Windows下USB磁盘开发系列三:枚举系统中U盘、并获取其设备信息
前面我们介绍了枚举系统中的U盘盘符(见<Windows下USB磁盘开发系列一:枚举系统中U盘的盘符>).以及获取USB设备的信息(见<Windows下USB磁盘开发系列二:枚举系统中 ...
- Windows下USB磁盘开发系列一:枚举系统中U盘的盘符
个时候我们需要区分系统磁盘中,哪些是U盘,这样我们在访问的时候可以区别对待.具体方法如下: 1,调用GetLogicalDrives()返回系统盘符标记位 API GetLogicalDrives() ...
- oracle数据库中将clob字段内容利用java提取出至文本文档中
代码段: 1.执行clob转String public static String ClobToString(Clob sc) throws SQLException, IOException { S ...
- 利用HBuilder开发基于MUI的H5+ app中使用百度地图定位功能
定位功能有两种方法: 首先要初始化内置地图: var map = new plus.maps.Map("map"); 这里黄色的map是html里面的id: <div id= ...
- 发布系统Git使用指南 - the Git Way to Use Git
发布系统Git使用指南 --the Git Way to Use Git 背景 有文章曾归纳,Git是一套内容寻址文件系统,意思是,Git的核心是存储键值对^[1]^.显然,这样的形式不利于普通人 ...
随机推荐
- Java零基础入门之常用工具
Java异常 什么是异常? 在程序运行过程中,意外发生的情况,背离我们程序本身的意图的表现,都可以理解为异常. throwable是所有异常的根类,异常分为两种异常exception和error Er ...
- Codeforces 1178G. The Awesomest Vertex
传送门 首先通过dfs序把子树操作转化为区间操作,求最大值可以用斜率优化. 然后分个块,对每个块维护个凸包.修改时中间的打个标记,边角暴力重构:询问时中间的用斜率优化的方法求,边角的暴力求. 由于此题 ...
- P3067 [USACO12OPEN]平衡的奶牛群(折半暴搜)
暴搜无疑.... 首先考虑纯暴搜...... 考虑每一个数: 选在左边集合 选在右边集合 不选 一共三种情况,用一个数组记录搜到的答案,所以暴搜是3^N的复杂度...直接死亡 于是讲折半暴搜.... ...
- 网页文件打包成.exe可执行文件
网页文件不止可以通过浏览器打开,也可以通过打包程序打包成.exe桌面可执行程序,这样写的网页文件就可以像桌面应用一样打开了.方法如下: 工具:NW.js.Enigma Virtual Box.资源编辑 ...
- javascript JSMpeg.js 播放视频解决不用全屏也能播放(也支持自动播放哦)
javascript JSMpeg.js 播放视频解决不用全屏也能播放(也支持自动播放哦) 缺陷就是 因为采用的是 MPEG1解码器 所以清晰度有点低 做直播可以考虑下 如果要清晰度高点 可以采取序列 ...
- js调用浏览器“打印”与“打印预览”
用到html <object>标签,具体做法如下: 1.在html文档任意位置添加<object>标签: <div style="border: 1px sol ...
- Typings移除Deprecated Warning
使用TypeScript进行开发中,经常遇到如下的Deprecated Warning.虽然没有实际影响,但看多了,确实挺烦. 要想消除这些Warning,需要以下几个步骤: 步骤一,确认Warnin ...
- 了解Spring的基本概念
参考资料:https://www.jianshu.com/p/1c483bd8fd6d 在正式学习Spring框架之前,肯定有很多疑问,比如说: 1.Spring中经常出现的IOC.AOP.DI是什么 ...
- Spring框架AOP学习总结(下)
目录 1. AOP 的概述 2. Spring 基于AspectJ 进行 AOP 的开发入门(XML 的方式): 3.Spring 基于AspectJ 进行 AOP 的开发入门(注解的方式): 4.S ...
- C#面向对象--命名空间
一.在C#中,使用命名空间(Namespace)可以帮助控制自定义类型的作用范围,同时对大量的类型进行组织:使用namespace关键字声明命名空间,命名空间可以嵌套使用: namespace MyN ...