php学习之路
1.php拼接字符串+查询
$floor_id = M('house_floor_input')->where($map1)->field('id')->select();
$floor_id_str = '';
foreach ($floor_id as $k => $v) {
//去,
if($k==count($floor_id)-1){
$floor_id_str .= $v['id'];
}
//拼接条件带,
else{
$floor_id_str .= $v['id'].',';
}
}
$map['f_id'] = array('in',$floor_id_str);
$list = M('house_input')->where($map)->order('id desc')->select();
3.php拆分
//查看该房型详细内容
$info = M('house_floor_input')->where(array('token' =>get_token() ,'f_name'=>I('id') ))->find();
//特色字段的拆分
$feature = explode(',', $info['f_features']);
$this->assign('feature',$feature);
2.php模糊查询
$map1['f_name'] = array('like','%'.I('lpname').'%');
3.getField获取单挑
$floorinput = M('house_floor_input')->where($map1)->getField('f_name');
4.field获取集合
$floor_id = M('house_floor_input')->where($map1)->field('id')->select();
5.php前端页面运用三元表达式
<a {$type == '1' ? 'class="nav_item active"' : 'class="nav_item flex-box-1"'} href="{:U('index',array('type'=>1))}">最热</a>
<li class="miaosha" <if condition="$fy['h_tuijian'] neq 1">style="display:none"</if> ><div>马上秒杀</div></li>
6.去重查询
$project = M('dreammore_support_person')->distinct(true)->where(array('p_token'=>get_token(),'p_openid'=>get_openid()))->getField('p_project_id',true);
7.php ajax提交
var url="{:U('loginAuth','','')}";
$.ajax({
url:url,
data:"account=" + account + "&password=" + password,
type:"post",
dataType:"json",
error:function(){errorPrompt('账户或密码错误');},
success:function(data){
if (data == "success") {
window.location.href = $("#url").val();
}
}
});
8.thinkphp中的比较符号
Thinkphp中eq,neq,gt,lt等表达式缩写
neq 不等于
gt 大于
egt 大于等于
lt 小于
elt 小于等于
like LIKE
between BETWEEN
notnull IS NUT NULL
null IS NULL
/*thinkphp在另一个问题中的回帖*/
egf 是表示数据库的字段比较,而非字符串比较
例如:
$map['name'] = array('eq','label'); 和
$map['name'] = array('eqf','label');
分别代表 name = 'label' 和 name = label
同样的道理,gt lt 等其他表达式也可以在后面添加f来表示同样的功能~
$myCouponOrder = M('house_coupon_order')->where(array('token'=>get_token(),'openid'=>$openid))->select();
foreach ($myCouponOrder as $c_id => &$vo1) {
$id = $vo1['c_id'];
$myCouponDetail = M('house_coupon')->where(array('id'=>$id))->find();
$myCouponDetails[$id]['c_detail'] = $myCouponDetail;
}
$this->assign('myCouponDetails',$myCouponDetails);
输出前台
<volist name="myCouponDetails" id="vo1">
<li class="ui-border-t">
<div class="ui-list-img">
<span style="background-image:url({$vo1['c_detail']['c_picture']|get_cover_url}); background-size:100%;"></span>
</div>
<div class="ui-list-info">
<h4 class="ui-nowrap lp-title">{$vo1['c_detail']['c_title']}</h4>
<p class="ui-nowrap">总量:{$vo1['c_detail']['c_total']}</p>
<p class="ui-nowrap">已秒杀:{$vo1['c_detail']['c_skilledCount']}</p>
<h5 class="ui-nowrap n-price">¥{$vo1['c_detail']['c_skillprice']}元</h5>
<p class="ui-nowrap fav-box"><i class="ui-icon-emo"></i>感兴趣:{$vo1['c_detail']['c_hot']}</p>
<button class="wantosee" name="test" type="button" value="val">
<a href="{:U('coupondetail',array('c_id'=>$vo1['c_detail']['id']))}">查看详情</a>
</button>
</div>
</li>
</volist>
11.php导出excel
//导出活动支付
public function exportExecel(){
$map['c_title'] = I('c_title');
$map['token'] = get_token();
$row = M('house_coupon_order')->where($map)->select();
$filename=$map['c_title'].date('Y-m-d').".xls";//先定义一个excel文件
header("Content-Type: application/vnd.ms-execl");
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");
echo codeutf8("订单号")."\t";
echo codeutf8("商品名")."\t";
echo codeutf8("支付金额")."\t";
echo codeutf8("客户名")."\t";
echo codeutf8("联系方式")."\t";
echo codeutf8("下单时间")."\n";
foreach ($row as $key => $vo) {
echo codeutf8($vo['orderid'])."\t";
echo codeutf8($vo['c_title'])."\t";
echo codeutf8($vo['price'])."\t";
echo codeutf8($vo['name'])."\t";
echo codeutf8($vo['phone'])."\t";
echo codeutf8($vo['ctime'])."\n";
}
}
//导出excel编码标题(防止乱码)
function codeutf8($str){
return iconv("utf-8","gb2312",$str);
}
12. implode和explode
$imags = array([0]=123,[1]=345,[2]=121)
$imags = implode(',', $imgs);
$imags = explode(',',$imags ,-1);
var_dump($imags);
array([0]=123,[1]=345,[2]=121)
13.json
// public function vote_index_json(){
// $database = C('DB_NAME');
// $table = C('DB_PREFIX').mengvote_baoming;
// $host = C('DB_HOST');
// $user = C('DB_USER');
// $pwd = C('DB_PWD');
// $link = mysql_connect("".$host."","".$user."","".$pwd."");
// $sql = "use ".$database."";
// mysql_query($sql,$link);
// $sql = "set names utf8";
// mysql_query($sql,$link);
// $num = $_POST['num'] *10;
// if($_POST['num'] != 0) $num +1;
// $sql = "select id,m_no,m_name from ".$table." limit ".$num.",10";
// $result = mysql_query($sql,$link);
// $temp_arr = array();
// while($row = mysql_fetch_assoc($result)){
// $temp_arr[] = $row;
// }
// $json_arr = array();
// foreach($temp_arr as $k=>$v){
// $json_arr[] = (object)$v;
// }
// //print_r($json_arr);die;
// echo json_encode( $json_arr );
// }
13.html嵌套php
<?php
$img = $info['m_img'];
$array=explode(',',$img);
$imgs = explode(',',$img,-1);
//数组长度
$len = count($array);
//$imgs = explode(',',$img,-1);
for($i=0; $i < $len; $i++) { ?>
<img src="<?php echo get_cover_url($imgs[$i]); ?>" alt="">
<?php
}
?>
14 json html();
var that = $('#mainPage .user-info ul li .location1'),_html='';
var url="{:U('addressManagement','','')}";
$.ajax({
url:url,
data:"username=" + username + "&userphone=" + userphone+ "&province=" + province+ "&city=" + city+ "&dist=" + dist+ "&address=" + address+ "&community=" + community+ "&area=" + area,
type:"post",
dataType:"json",
error:function(){errorPrompt('账户或密码错误');},
success:function(data){
alert(data.length);
_html ='<span class="title">'+data[0]['user_name']+'</span>'+
'<span class="content">'+
'<span class="btn-link">'+data[0]['user_phone']+'</span><br>'+
'<span class="address">'+data[0]['user_address']+'</span>'+
'</span>'+
'<i class="icon arrow"></i>';
that.html(_html);
$("#mainPage").attr('style','position:absolute;left:0%;');
$("#addressPage").attr('style','position:absolute;left:-100%;');
$("#addressListPage").attr('style','position:absolute;left:-100%;');
$("#addressEditPage").attr('style','position:relative;left:-100%;');
}
});
});
each
$(".location1").click(function(){
var that = $('#addressPage .order-address ul'),_html='';
var url="{:U('addressNew','','')}";
$.ajax({
url:url,
type:"post",
dataType:"json",
success:function(data){
$.each(data, function(idx, obj) {
_html += '<li><a href="javascript:void(0);">'+
'<label data-id="178717" class="active">'+
'<p class="c333">'+
'<span class="name">'+obj.user_name+'</span>'+
'<span class="tel">'+obj.user_phone+'</span>'+
'</p>'+
'<p class="c999 address">'+obj.user_address+'</p>'+
'</label></a></li>';
});
that.html(_html);
}
});
$("#mainPage").attr('style','position:absolute;left:-100%;');
$("#addressPage").attr('style','position:absolute;left:0%;');
$("#addressListPage").attr('style','position:absolute;left:-100%;');
$("#addressEditPage").attr('style','position:relative;left:-100%;');
});
15.ajax 请求到数据库加载到html,用jquery获取加载后html中的元素的方法
$(document).ready(function(e) {
$("#addressPage .order-address ul").delegate("li","click",function(){
var username = $(this).children('a').children('label').children('p:first').children('span:first').text();
var userphone = $(this).children('a').children('label').children('p:first').children('span:last').text();
var useraddress = $(this).children('a').children('label').children('p:last').text();
$('#mainPage .user-info .location1').children('span:first').text(username);
$('#mainPage .user-info .location1').children('span:last').children('span:first').text(userphone);
$('#mainPage .user-info .location1').children('span:last').children('span:last').text(useraddress);
$("#mainPage").attr('style','position:absolute;left:0%;');
$("#addressPage").attr('style','position:absolute;left:-100%;');
$("#addressListPage").attr('style','position:absolute;left:-100%;');
$("#addressEditPage").attr('style','position:relative;left:-100%;');
});
$("#addressListPage ul.b").delegate('li','click',function(){
var name = $(this).children('a').children('label').children('p:first').children('span:first').text();
var tel = $(this).children('a').children('label').children('p:first').children('span:last').text();
var address = $(this).children('a').children('label').children('p:last').text();
$("#mainPage").attr('style','position:absolute;left:-100%;');
$("#addressPage").attr('style','position:absolute;left:-100%;');
$("#addressListPage").attr('style','position:absolute;left:-100%;');
$("#addressEditPage").attr('style','position:relative;left:0%;');
});
});
16.mb_substr()
一、中文截取:mb_substr()
mb_substr( $str, $start, $length, $encoding )
$str,需要截断的字符串
$start,截断开始处,起始处为0
$length,要截取的字数
$encoding,网页编码,如utf-8,GB2312,GBK
实例:
复制代码代码如下:
$str='脚本之家:http://www.jb51.net';
echo mb_substr($str,0,4,'utf-8');//截取头5个字,假定此代码所在php文件的编码为utf-8
?>
结果显示:脚本之家
二、获取中文长度:mb_strlen()
mb_strlen( $str, $encoding )
$str,要计算长度的字符串
$encoding,网页编码,如utf-8,GB2312,GBK
实例:
复制代码代码如下:
$str='脚本之家:http://www.jb51.net';
echo mb_strlen($str,'utf-8');//假定此代码所在php文件的编码为utf-8
?>
结果显示:24
17.计算两个时间戳之间的差
function timediff($begin_time,$end_time) { if($begin_time < $end_time){ $starttime = $begin_time; $endtime = $end_time; } else{ $starttime = $end_time; $endtime = $begin_time; } $timediff = $endtime-$starttime; $days = intval($timediff/86400); $remain = $timediff%86400; $hours = intval($remain/3600); $remain = $remain%3600; $mins = intval($remain/60); $secs = $remain%60; $res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs); return $res; } |
18.判断是否微信内置浏览器
/**
* 判断是否微信内置浏览器
*/
function isWeixin() {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/microMessenger/i) == "micromessenger") {
return true;
} else {
return false;
}
}
19. sql 拼接一列值,例如凭借id的所有值为1,2,3
$category_id = $this->query_all("SELECT id FROM " .get_table('category')." WHERE parent_id = ".$parent);
foreach ($category_id as $k => $v) {
$category_ids[] = $v['id'];
}
$where = implode(',', $category_ids);
var_dump($where);die;
20.{template 'header'} <title>专业装逼30年</title>
引入header时title中文乱码
原因:<header></header>内有没有闭合的标签
21.给一组$orders 加上一列值good_num的构造方法:
$orders = pdo_fetchall("SELECT * FROM ".tablename('hao_water_order')." WHERE uniacid = '{$uniacid}' ORDER BY order_time DESC LIMIT ".($pindex - 1) * $psize.','.$psize); foreach ($orders as $k => &$v) {
$goodId = explode(',',$v['goodsId']);
$num = explode(',',$v['order_count']);
$len = count($v['goodsId']);
for($i=0;$i<$len;$i++){
$good = pdo_fetch("SELECT * FROM ".tablename('hao_water_goods')." WHERE id = :id LIMIT 1",array(':id' => $goodId[$i]));
$good_nums[] = $good['goods_title'].'*'.$num[$i];
}
$v['good_num'] = implode(',',$good_nums);
}
22 占位符替换
<?php
$str = str_replace("#员工#", "豪哥", "i love #员工#, iwind #员工号#");
$str = str_replace("#员工号#", "1101", $str);
var_dump($str);
//输出
'i love 豪哥, iwind 1101' (length=25)
?>
php学习之路的更多相关文章
- jQuery学习之路(1)-选择器
▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- RPC远程过程调用学习之路(一):用最原始代码还原PRC框架
RPC: Remote Procedure Call 远程过程调用,即业务的具体实现不是在自己系统中,需要从其他系统中进行调用实现,所以在系统间进行数据交互时经常使用. rpc的实现方式有很多,可以通 ...
- webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口
webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...
- [精品书单] C#/.NET 学习之路——从入门到放弃
C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...
- Redis——学习之路四(初识主从配置)
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
- Redis——学习之路二(初识redis服务器命令)
上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息 s ...
- 踏上Salesforce的学习之路(一)
相信通过前面的学习,大家已经拥有了一个属于自己的Salesforce开发者账号,下面,我们将用这个账号正式踏上Salesforce的学习之路. 首先,点击网址:https://developer.sa ...
- ReactNative新手学习之路07ListView_ renderHeader使用StaticContainer
react native新手学习之路07ListView_ renderHeader使用StaticContainer 1.某些特殊场景需要用ScrollView滚动和ListView配合但是不幸运的 ...
随机推荐
- SCJP_104——题目分析(3)
11. what is reserved words in java?A. run B. default C. implement D. import Java 中,给标识符取名的时候,不能使用关键字 ...
- struts2整合spring的思路
struts2整合spring有有两种策略: >sping容器负责管理控制器Action,并利用依赖注入为控制器注入业务逻辑组件. >利用spring的自动装配,Action将自动会从Sp ...
- 『在线工具』 基于 xsser.me 源码 + BootStrap 前端 的 XSS 平台
乌云社区上一个小伙伴的对xsser.me 的源码做了 BS 的优化,本人已经搭建好,提供给大家免费使用,大牛求绕过,多谢. 地址: http://xss.evilclay.com (目前开放注册,不需 ...
- [Android] 混音器AudioMixer
AudioMixer是Android的混音器,通过混音器可以把各个音轨的音频数据混合在一起,然后输出到音频设备. 创建AudioMixer AudioMixer在MixerThread的构造函数内创建 ...
- Sublime一些设置
很喜欢sublime text 2 总是在新窗口中打开文件,很麻烦,文件打多了,就会出现N多窗口,虽然可以直接打开当前目录可以解决,但有时候查看其它项目中的单个文件,就比较麻烦.百度一直在搜索,无果. ...
- 【Android官方Training教程】Getting Started部分学习笔记
Getting Started Welcome to Training for Android developers. Here you'll find sets of lessons within ...
- 2013=12=2 bitree
#include "stdio.h" #include "stdlib.h" #define OVERFLOW -1 #define ERROR -1 #def ...
- HDU_1254——推箱子,两次BFS
这题做的一把鼻涕一把泪,果断考虑不周555 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱 ...
- P - 奔小康赚大钱 - hdu 2255(带权值的匹配)
分析:这是一个KM的模板题,也就不多说了,KM最复杂的情况都能过,下面是没有优化过的代码: ****************************************************** ...
- ORACLE 索引概述
索引是数据库中一种可选的数据结构,她通常与表或簇相关.用户可以在表的一列或数列上建立索引,以提高在此表上执行 SQL 语句的性能.就像本文档的索引可以帮助读者快速定位所需信息一样,Oracle 的索引 ...