$ThinkPhp学习,shop项目 小记

1,d盘www文件下引入ThinkPHP文件,项目中引入index.php引入thinkphp,include("../ThinkPHP/ThinkPHP.php");

几种路由:

1, http://网址/index.php?m=分组&c=控制器&a=操作方法

该方式是最底层的get形式、传统的参数传递方式、不安全。

get参数传递: m(moduel) c(controller)a(action)

http://localhost/shop/index.php?m=Home&c=Index&a=index

2,pathinfo路径形式[默认方式]

http://网址/index.php/分组/控制器/操作方法

http://localhost/shop/index.php/Home/Index/index

3, rewrite重写形式(伪静态技术)省略index.php入口文件

http://网址/分组/控制器/操作方法

http://网址/Home/Index/index

view视图模板

1. 简单模板view调用

在控制器的方法中调用如下方法:/diaplay()是父类controller的一个方法

$this -> display();    //模板名称与当前操作方法的名称一致

$this -> display(模板名称);   //调用当前控制器对应目录指定名称的模板

$this -> display(控制器/模板名称);  //调用其他控制器下的具体模板文件

在模板中引入静态资源文件

相对路径:相对index.php入口程序文件设置

http://localhost/shop/index.php?m=Home&c=Index&a=index

利用get访问可以访问,但是用pathinfo访问失败

绝对路径:从虚拟主机根目录(d:/www/)设置

在模板中需要通过绝对路径方式引入静态资源文件(css/img/js),绝对路径信息的编写、升级、维护不方便,就给其设置常量进行使用。

在index.php设置全局路径

//给系统静态资源文件请求路径设置常量
define('CSS_URL', '/shop/Home/Public/css/');
define('IMG_URL', '/shop/Home/Public/images/');
define('JS_URL', '/shop/Home/Public/js/');

在D:wwwshopHomeViewIndex 中修改index.html中文件资源的引用地址

<link href="<?php echo CSS_URL;?>style.css" rel="stylesheet" type="text/css" /> 

img和js资源与css同理进行修改

同理修改 Goods商品模块的showlist.html detail.html User模块中的login模块和register.html

创建加载Admin后台文件目录 和资源文件

2. 后台“品字”首页面搭建

控制器:IndexController.class.php

操作方法:function   head()  left()  right()   index()

View视图模板:Admin/View/Index/head.html   left.html  right.html  index.html

2.3 搭建商品相关页面

控制器:GoodsController

操作方法:showlist()、tianjia()、upd()

view视图模板: showlist.html  tianjia.html  upd.html

列表展示、添加、修改

frame的src属性值需要通过“绝对路径”设置

需要设置一个具体的路由地址

获得当前请求的全部常量信息:

tp框架提供了常量:

http://网址/shop/index.php/分组/控制器/操作方法/名称1//名称2/

__MODULE__: 路由地址分组信息 (/shop/index.php/分组

__CONTROLLER__: 路由地址控制器信息  (/shop/index.php/分组/控制器

__ACTION__:路由地址操作方法信息 (/shop/index.php/分组/控制器/操作方法

__SELF__: 路由地址的全部信息(/shop/index.php/分组/控制器/操作方法/名称1//名称2/值)

MODULE_NAME:  分组名称

CONTROLLER_NAME:控制器名称

ACTION_NAME: 操作方法名称

例如:

1,http://网址/index.php/Admin/Order/showlist

__CONTROLLER__:/index.php/Admin/Order

__MODULE__ :/index.php/Admin

__ACTION__ :/index.php/Admin/Order/showlist

2,http://网址/index.php/Admin/Goods/detail

__CONTROLLER__:/index.php/Admin/Goods

__MODULE__ :/index.php/Admin (模块)

__ACTION__ :/index.php/Admin/Goods/detail

以上表示,不同路由地址对应的常量要发生变化。

_blank  : 新标签打开连接地址

_self :  本标签打开连接地址 

_top :   全部frame标签的上边打开连接地址

frame 的 name属性,在指定的frame标签里边打开连接地址

   当前访问路由:/shop/index.php/Admin/Index/left  
               <a class=menuchild 
               href="__MODULE__/Goods/showlist" 
               target="right">产品展示</a>
 <!--  target=_blank/_self/_top/frame的name属性值
        _blank:新标签打开连接地址
        _self:本标签打开连接地址
        _top:全部frame标签的上边打开连接地址
        frame的name属性值:在指定的frame标签里边打开连接地址
 -->

   配置文件介绍

ThinkPHP/Conf/convention.php  系统主要配置文件,集中90%以上的配置变量

② shop/Common/Conf/config.php   当前shop项目的配置文件

针对各个分组起作用

③ shop/Home/Conf/config.php      当前shop项目Home分组的配置文件

以上三个配置文件,如果存在同名的配置变量,后者会覆盖前者

② 和 ③配置文件的具体配置变量都是从① 来的

 页面底部设置跟踪信息

需要在配置文件里边定义配置变量(SHOW_PAGE_TRACE)

 在 config.php文件中 'SHOW_PAGE_TRACE' => true,   开启跟踪信息调试, false则关闭;

默认分组设置  :

5. 开启Smarty模板引擎

二 、 数据库模型操作 

第一次使用GoodsModel,在实例化的时候报错,

$goods = new GoodsModel();报错

$goods = new ModelGoodsModel();不报错

设置操作的数据库数据库复制操作语言:

1,备份一个数据库:

mysqldump -u root -p111111 shop > d:/20151012shop.sql

(意思是打印 shop 这个数据库到新建创的文件 20151012shop.sql 中)

2,创建一个 dbshop数据库,把备份的数据还原到dbshop

create database dbshop; 

3,在新的dos命令窗口,把刚才备份好的数据库还原到 dbshop 数据库:

mysql -u root -p111111 dbshop < d:/20151012shop.sql

实例化基类Model对象

可以实现对数据库的基本操作

$model = D();     //实例化基类Model,没有关联任何表

可以执行原生sql语句

$model = D(‘Goods’);   //实例化基类Model对象,并操作xx_goods业务数据表

(该方式允许我们即使不创建具体的model模型类文件,也可以直接操作某个数据表)

如果一个数据表没有特殊方法要求,就可以通过D(XXX)的方式进行操作。

如果数据表有特殊方法要求(例如用户名和密码判断需要一个特殊方法),就需要在普通model模型类里边定义好,通过new  ModelXXXModel()形式实例化对象,进而操作特殊方法。

. 数据基本操作

1. 数据查询操作

调用方法:model对象->select()

具体使用:

$model -> select();      //查询并返回数据表的全部记录信息

$model -> select(主键id);   //查询主键信息等于条件id值的一条记录

$model -> select(‘id1,id2,id3...’);  //查询主键信息在条件范围内的记录

//where  id  in  (10,12,35)

(使用select()方法会始终返回一个二维数组信息)

模板中通过foreach遍历数据、展示数据:

具体数据操作方法使用

① where()条件

$model -> where(条件值);  //条件值就是sql语句where后边的条件信息

② limit()限制条数

$model -> limit(数字);  //严格查询数字条数的记录

③ field ()限制查询字段

$model -> field(字段1,字段2,字段3);

④ order() 排序

$model -> order(‘排序条件字段asc/desc’);

⑤ group() 分组查询group by

$model -> group(分组条件);

group by 分组查询的具体应用

⑥ having()条件设置方法

having设置查询条件的效果 与 where使用效果类似

区别:

where:语句条件字段,必须是“数据表中存在的”字段

having:语句条件字段  必须是查询结果集中存在的字段

  1. 数据库设置、连接配置、model模型类文件创建
  2. 实例化model对象

两种方式:new  ModelXXXModel();

          D();       实例化父类model

  D(表唯一标识名字参数);  

  1. 查询数据

select()

select(数字)

select(“数字,数字,数字”)

返回二维数组

  1. 辅助方法

where()   limit()  field()

order()   group()   having()

数据添加操作

调用方法:model对象->add()  

具体两种方式使用:

① 数组方式

$数组 = array(

元素(键名=>)

元素(键名=>)

。。。。

)

$model(普通对象) -> add($数组);

注意:数组的元素键名与数据表字段的名称必须一致

          (不正确的键名会被自动过滤掉,完全过滤字段,则记录的添加操作失败)

② AR(Active Record活跃记录)方式

$model -> 属性 = ;

$model -> 属性 = ;

。。。。

$model ->add();

注意:属性值 与 数据表字段一致,否则不给写入数据

AR规范要求:

A.一个model模型类与一个具体的数据表对应

B.model模型类实例化的对象 与 数据表的一条记录对应

C.model对象的属性 与 记录的字段对应

TP框架的AR仿真产品,因为在每个业务/普通Model模型类里边并不存在对应数据表的字段信息。

add()方法返回新记录的主键id

添加数据的两种方式:

数据修改操作

调用方法:model对象->save()

add添加一致具体两种方式使用:

① 数组方式

$model -> save(数组);

② AR方式

$model -> 属性(字段) = ;

$model -> 属性(字段) = ;

$model ->save();

注意:数组的元素下标(属性字段)必须与数据表字段保持一致

save()方法返回受影响的记录条数

 

mysql本身的语法规则允许一次性修改一个表的全部记录结果

在实际的项目里边,一般禁止修改数据表的全部数据

注意:数据修改必须设置条件: 主键id 或 where()方法,二选一即可,否则执行失败。

在tp框架中不允许一次性修改数据表的全部记录信息:

4.在后台实现商品添加逻辑

把常量的访问设置为smarty方式:

1) 制作添加表单

跳转方法:redirect(地址分组/控制器/操作方法参数间隔时间提示信息);

$this ->redirect('showlist',array(),2,'添加商品成功');

5.1 数据修改的实现步骤

给“修改”按钮制作修改页面的连接地址:

在修改按钮上边通过get方式传递被修改商品的主键id信息

   在控制器 upd()方法中

        根据$goods_id 获得被修改商品的信息
            $info = D('Goods') -> select($goods_id);

    //select()  以二维数组返回一条记录信息
            $info = D('Goods') -> find($goods_id);
            //find() 通过一维数组返回一条记录信息

// 设置隐藏域input,把要修改的商品信息id传递过来,

原文地址:https://www.cnblogs.com/dh2608/p/5496513.html