zoukankan      html  css  js  c++  java
  • $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传递过来,

  • 相关阅读:
    LeetCode_222.完全二叉树的节点个数
    LeetCode_219.存在重复元素 II
    LeetCode_217.存在重复元素
    LeetCode_215.数组中的第K个最大元素
    LeetCode_21.合并两个有序链表
    LeetCode_206.反转链表
    LeetCode_205.同构字符串
    LeetCode_202.快乐数
    LeetCode_20.有效的括号
    LeetCode_2.两数相加
  • 原文地址:https://www.cnblogs.com/dh2608/p/5496513.html
Copyright © 2011-2022 走看看