简介
理解
地址
git地址手册地址离线手册
1.入口文件2.跳转路径3.设置配置文件Config.php
三、git命令4.public公共文件目录5.Controller控制器文件获取分配数据6.Model模型
7.公共控制器
8.数据查询的几种
9.路由配置
10.ajax响应
11.success和error12.模板引擎13.分页14.验证码15.QQ登录16.自动完成17.自动验证
<?php//调试模式define('DEBUG', true);
//定义入口文件define('APP_PATH','App');
//引入框架require 'Hdphp/Hdphp.php';?>
<?php
//跳转到用户header('Location:index.php?m=Admin');
?>
<?php
return array(#读服务器'read'=>array(),#写服务器'write'=>array(),'host' =>'127.0.0.1', //主机'driver' => 'mysql', //数据库类型'charset' => 'utf8', //数据库字符集'user' => 'root', //数据库用户名'password' => '', //数据库密码'database' => 'blog_edu', //数据库名称'prefix' => '', //表前缀
);
use Hdphp\Controller\Controller;//前台默认控制器class IndexController extends Controller{
//前台首页public function index(){
//首页最新3篇文章$arcModel = new \Common\Model\Arc;$arcData = $arcModel->join('category','category_cid','=','cid')->orderBy('sendtime','DESC')->limit(3)->get();//实例中间表模型$arcTagModel = new \Common\Model\ArcTag;foreach ($arcData as $k => $v) {//获得每篇文章的标签,然后压入数组//中间表和标签表关联$data = $arcTagModel->join('tag','tag_tid','=','tid')->where("article_aid={$v['aid']}")->field('tid,tname')->get();$arcData[$k]['tag'] = $data;}View::with('arcData',$arcData);
View::make();}
// public function code(){// Code::num(C('webset.code_len'))->fontColor(C('webset.code_color'))->make();// }
use Hdphp\Model\Model;//文章管理模型class Arc extends Model{//指定表名,固定写法protected $table = "article";//自动验证,固定写法protected $validate = array(array('title','required','文章标题不能为空',3,3),array('category_cid','required','分类必须选择',3,3));//自动完成protected $auto = array(//查手册//3是必须处理的表单,1是在插入时候处理array('sendtime','time','function',3,1),array('updatetime','time','function',3,2),array('user_uid','userUid','method',3,1),//缩略图array('thumb','thumb','method',3,3));
public function thumb(){//如果有文件上传//如果是编辑的时候,只显示图片的时候,没有file类型的表单,所以是不存在$_FILES['thumb']if(isset($_FILES['thumb']) && $_FILES['thumb']['error'] != 4){//执行上传类$files = Upload::type('jpg,png,gif')->size(2000000)->make();//如果上传成功,返回对应的路径if($files){//处理缩略的文件名$newPath = str_replace('.' . $files[0]['ext'], '_thumb.' . $files[0]['ext'], $files[0]['path']);//缩略,返回缩略图的地址$thumbPath = Image::thumb($files[0]['path'],$newPath,200,200,2);//存到数据库return $thumbPath;}}//编辑的时候:如果有隐藏域($_POST['thumb'])的时候,那么就是返回旧地址if($thumb = Q('post.thumb')){return $thumb;}//如果用户没有上传,则返回空字符串存入数据return '';}
//处理字段user_uid的方法,该方法返回什么,数据库就可以存入什么public function userUid(){return $_SESSION['uid'];}
//添加文章public function store(){//一.触发两张表的自动验证//1.验证articleif(!$this->create()) return false;//如果上传失败if($error = Upload::getError()){//给当前模型压入错误$this->error = $error;return false;}//2.验证article_data$arcDataModel = new \Common\Model\ArcData;if(!$arcDataModel->create()){//把arcData模型的错误,压到当前模型,//因为控制器显示的错误,就是当前模型的错误$this->error = $arcDataModel->getError();return false;}//二、添加数据//1.article文章表,返回文章的自增id$aid = $this->add();//2.articel_data文章数据表//给模型的data属性压入值,那么add添加的时候就可以添加到数据库$arcDataModel->data['article_aid'] = $aid;$arcDataModel->add();//3.article_tag文章标签中间表$arcTagModel = new \Common\Model\ArcTag;foreach (Q('post.tid',array()) as $tid) {$data = array('tag_tid' => $tid,'article_aid' =>$aid);$arcTagModel->add($data);}
return true;
}
public function edit(){//一.触发两张表的自动验证//1.验证articleif(!$this->create()) return false;//如果上传失败if($error = Upload::getError()){//给当前模型压入错误$this->error = $error;return false;}//2.验证article_data$arcDataModel = new \Common\Model\ArcData;if(!$arcDataModel->create()){//把arcData模型的错误,压到当前模型,//因为控制器显示的错误,就是当前模型的错误$this->error = $arcDataModel->getError();return false;}//二、修改//1.article$this->save();//2.article_data//接收隐藏域的aid$aid = Q('post.aid',0,'intval');$arcDataModel->where("article_aid=$aid")->save();//3.article_tag//先删除$arcTagModel = new \Common\Model\ArcTag;$arcTagModel->where("article_aid={$aid}")->delete();//再添加foreach (Q('post.tid',array()) as $tid) {$data = array('article_aid' => $aid,'tag_tid' => $tid);$arcTagModel->add($data);}return true;}
first();获取第一个
pluck('username');获取单一字段
Db::table('user')->lists('username');获取所有的username单个数据
//满足条件记录的所有username字段
Array
(
[0] => admin
[1] => hdxj
)
返回一维数组,第一个字段做为键名使用,第 2 个字段做为键值
Db::table('user')->lists('id,username');
//id 字段做为键名使用
Array
(
[1] => admin
[2] => hdxj
)
多个字段返回二维数组,第一个字段值做为键名使用,其余字段做为键值
Db::table('user')->lists('id,username,age');
//返回值如下
Array
(
[1] => Array
(
[id] => 1
[username] => admin
[age] => 22
)
[2] => Array
(
[id] => 2
[username] => hdxj
[age] => 67
)
)
指定查询结果字段
Db::table('user')->field('username AS name','age')->get();
增加查询子句到现有的查询中
$db = Db::table('user')->field('username AS name','age','id');
$db->where('id','>',2)->get();
使用 where 及运算符
Db::table('user')->where('id','>',1)->get();
Db::table('user')->where('id','>',1)->where('id','>',10)->get();
预准备whereRaw
Db::table('user')->whereRaw('age > ? and username =?', [1,'admin'])->get();
使用orwhere
Db::table('user')->where('id','>',1)->orwhere('username','=','向军')->get();
使用 WhereBetween
Db::table('user')->whereBetween('id',[10,30])->get();
使用 WhereNotBetween
Db::table('user')->whereNotBetween('id',[10,30])->get();
使用 WhereIn
Db::table('user')->whereIn('id',[2,3,9])->get();
使用 WhereNotIn
Db::table('user')->whereNotIn('id',[3,5,6])->get();
使用 WhereNull
Db::table('user')->whereNull('id')->get();
使用 WhereNotNull
Db::table('user')->whereNotNull('id')->get();
自动条件设置
Db::table('user')->whereIdOrUsername('1','向军')->get();
Db::table('user')->whereIdAndAge('1',22)->get();
Db::table('user')->whereIdAndAgeOrUsername('1',22,'向军')->get();
指定条件关系
Db::table('user')->where('id','>',1)->logic('AND')->whereBetween('id',[1,10])->get();
排序(Order By)
Db::table('user')->orderBy('id','DESC')->get();
分组GROUP BY
Db::table('user')->groupBy('age')->get();
分组筛选HAVING
Db::table('user')->groupBy('age')->having('count(sex)','>',2)->get();
取部分数据LIMIT
Db::table('user')->limit(2)->get();
Db::table('user')->limit(2,5)->get();
Db::table("user")->count('id');
Db::table("user")->max('id');
Db::table("user")->min('id');
Db::table("user")->avg('id');
Db::table("user")->sum('id');
多表关联INNER JOIN
Db::table('user')
->join('class','user.cid','=','class.cid')
->join('contacts','user.id','=','contacts.uid')
->get()
指定别名
Db::table('user u')->join('class c','u.cid','=','c.cid')->get()
多表关联LEFT JOIN
Db::table('user')->leftJoin('class','user.cid','=','class.cid')->get();
多表关联RIGHT JOIN
Db::table('user')->rightJoin('class','user.cid','=','class.cid')->get();
自增一个字段值
将total字段值加2
Db::table("user")->where('id',1)->increment('total',2);
自减一个字段值
将total字段减少2
Db::table("user")->where('id',1)->decrement('total',2);
测表字段是否存在
检测 news 表是否存在 title 字段
Db::fieldExists('username','user');
检测表是否存在
Db::tableExists('comment');
获所有表信息
获得当前数据库的所有表信息 , 数据大小包括碎片、数据、索引
Db::getAllTableInfo();
获得数据库大小
获得当前数据库大小即所有表碎片、数据、索引之和
Db::getDataBaseSize();
获取表大小
获得 news 表大小,包含表碎片、数据、索引之和
Db::getTableSize('news');
修复表
Db::repair('user');
优化表
Db::optimize('user');
//首页Route::get('/index.php','Home/Index/index');//文章Route::get('a{aid}.html','Home/Content/index');//分类文章Route::get('c{cid}_p{page}.html','Home/List/index');//标签文章Route::get('t{tid}_p{page}.html','Home/List/index');//分类分页Route::get('c{cid}.html','Home/List/index');//标签列表分页Route::get('t{tid}.html','Home/List/index');//关于博主Route::get('blog.html','Home/About/index');
{{a$v['aid'].html}}
HDPHP 框架提供通过 ajax 返回 Ajax 请求数据,使用方法非常简单。
View::ajax($data, $type = 'JSON')
参数说明
$data 异步返回的数据
$type 返回的数据类型,包含 JSON( 默认 ),XML,TEXT
语法
View::success($message = ' 操作成功 ', $url = NULL, $time = 1, $tpl = null)
参数说明
$message 提示信息
$url 跳转地址 ( 默认回调历史记录 )
$time 跳转时间
$tpl 模板文件默认为配置项 TPL_SUCCESS 或 TPL_ERROR 的值
View::make();
//没有参数时使用当前方法名称做为模板文件名
View::make('add');
//添加路径时分2种情况:
//1: 从模块的View目录查找:"模块/view/add.html"
//2: 从网站根目录查找即:"/add.html"
根据数量获取分页
Page::make(100);
获取所有分页属性
可以获取分页属性,如 文字页码、图形页码、下拉列表页码等
Page::all(100);
设置每页显示条数
Page::row(8)->make(100);
设置页码数量
Page::pageNum(5)->make(100);
自定义url
echo Page::url('list/{page}.html')->make(100,1);
定义显示文字
echo Page::desc(['pre'=>'上楼', 'next'=>'下楼','first'=>'首页','end'=>'尾页','unit'=>'个'])->make(200,2);
返回limit语句
Page::limit();
取得所有形式用于定义
$info= Page::all(200);
p($info);
获取分页的总页数
Page::totalPage();
控制器使用
//统计总条数
$proTol=Db::table('project')->where("{$cate}is_recycle=0{$state}")->count();
$page = Page::pageNum(9)->row(12)->make($proTol);
View::with('page',$page);
前台模板分配{{$page}}
配置文件 Config/qq.php
"appid" => "",//qq互联提供的的APP ID
"appkey" => "", //qq互联提供的的APP KEY
"callback" => "http://www.kuaixuewang.com/qq/index.php/qqcallback" //登录成功的回调地址
路由设置
Route::get('qqcallback{_param_?}','Home/Index/qqcallback');
//路由的qqcallback方法要与配置项中的 callback 设置相切尔西
控制器
<?php namespace Home\Controller;
use Hdphp\Controller\Controller;
class IndexController extends Controller
{
//登录页面
public function index()
{
View::make();
}
//QQ登录提交地址
public function Qc()
{
Qq::qq_login();
}
//登录成功回调地址
public function qqcallback()
{
//Qq::qq_callback 方法将 access_token 与 openid 储存到session
//用于其他控制器或模块调用api使用
//Qq::token 方法将accesss_token与openid 储入对象属性
//这样才可以在本函数中执行 get_user_info 接口,否则需要刷新页面使session有效
Qq::token(Qq::qq_callback(),Qq::get_openid());
//调用获取用户信息 api 功能,qqcallback()回调中必须执行Qq::token()才可执行接口
//其他函数就不需要执行Qq::token()了
p(Qq::get_user_info());
}
//其他函数就不需要执行Qq::token(),可直接调用接口,因为access_token已经存在了session中
public function get_user_info(){
//所有 api 接口函数只能在执行完 qqcallback 回调后调用
//因为生成 access_token 与 open_id 的 session数据
//这是调用api接口的前提
p(Qq::get_user_info());
}
}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>QQ登录页面</title>
<script type="text/javascript">
var childWindow;
function toQzoneLogin() {
childWindow = window.open("{{U('Qc')}}", "TencentLogin", "width=850,height=520,menubar=0,scrollbars=1, resizable=1,status=1,titlebar=0,toolbar=0,location=1");
}
function closeChildWindow() {
childWindow.close();
}
</script>
</head>
<body>
<a href="#" onclick='toQzoneLogin()'>qq登录</a>
</body>
</html>
获取 open_id
Qq::get_openid();
获取登录用户的昵称、头像、性别
Qq::get_user_info();
获取登录用户在腾讯微博详细资料
Qq::get_info();
获取微博用户信息
Qq::get_info();
<?php namespace Home\Model;
use Hdphp\Model\RelationModel;
class User extends RelationModel
{
public $table = 'user';
protected $auto=array(
array('addtime','strtotime','function',2,1),
//更新时对 addtime 字段执行strtotime函数
);
}
方法类型:
string(默认) 值为处理方法 如:array('click',100,'string')
function 函数 如:array('click','ucfirst','function')
method 模型方法 如:array('click','getClick','method')
array(字段名,验证方法,错误信息,验证条件,验证时间)
验证条件 (可选):
self::
-
顶
-
1
-
踩
-
0
- 上一篇Mysql数据库常用命令
- 下一篇jquery无法找到其他父级子集解决方法
参考知识库
-
猜你在找
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场