天津 交友 网站建设,网站代备案服务,网站后台使用什么做的,直播视频网站如何做http://blog.csdn.net/yanhui_wei/article/details/25803945 一、大纲 [php] view plaincopy1、codeigniter框架的授课内容安排 2、codeigniter框架的简介 |-----关于框架的概念 |-----使用CI框架的好处 |-----为什么选择CI框架 3、codeigniter框架…http://blog.csdn.net/yanhui_wei/article/details/25803945 一、大纲 [php] view plaincopy 1、codeigniter框架的授课内容安排 2、codeigniter框架的简介 |-----关于框架的概念 |-----使用CI框架的好处 |-----为什么选择CI框架 3、codeigniter框架的具体安装步骤 |-----官网下载http://www.codeigniter.com/ |-----httpd.conf配置文件中rewrite重写机制的开启 |-----httpd.conf配置文件虚拟主机的开启 |-----httpd-vhosts.conf配置文件中虚拟主机的配置 |-----hosts文件中添加DNS映射 4、codeigniter框架的目录结构分析 |-----框架目录结构分析 |-----项目部署 5、codeigniter框架中URL各部分的分析及简单的工作原理:http://域名/入口文件/模块名/控制器/方法/参数列表 6、codeigniter框架详细执行流程分析如果没有模块文件夹的话则为http://域名/入口文件/控制器/方法/参数列表 7、codeigniter框架中config.php配置文件的分析 8、codeigniter框架中使用rewrite重写机制隐藏index.php单一入口文件 9、codeigniter框架中控制器 |-----控制器的创建位置 |-----控制器的命名规范 |-----控制器文件的分目录管理 |-----方法的命名规范1、不能以list命名 2、方法名与类名不同名 |-----方法中如何获取GET方式提交过来的数据,如:$username $this-input-get_post(username, true);//获取post或get方式提交过来的数据 |-----方法中如何获取POST方式提交过来的数据,如:$username $this-input-post(username, true);$username $this-input-get_post(username, true); 10、codeigniter框架中视图 |-----视图的创建位置appcation/views/ 目录下 |-----视图的命名规范login.php login.html |-----如何在控制器中载入视图模板文件:$this-load-view(login); $this-load-view(login.html); |-----如何在控制器中给视图模板文件传递数据:$this-load-view(login.html,$data);//extract函数 |-----视图模板文件的分目录管理$this-load-view(admin/category/addcategory.html); 11、codeigniter框架中的模型 |-----模型的创建位置application/models 目录下 |-----模型的命名规范不区分大小写建议首字母大写 |-----如何在控制器中载入模型自动加载和手动加载$this-load-model(user_model); |-----模型文件的分目录管理:$this-load-model(admin/user_model); 12、codeigniter框架中如何扩展控制器、模型 |-----基控制器的扩展:class Common extends CI_Controller{} |-----基模型的扩展:class Model extends CI_Model{} 13、codeigniter框架中数据库操作 |-----连接mysql数据库的配置application/config/database.php |-----如何在模型中连接mysql数据库自动载入和手动载入$this-load-database(); |-----使用普通查询操作完整数据的增删改查操作:1、$this-db-query($query);//结果集 |-----使用快捷操作类完成数据的增删改查操作将sql语句的拼接放在成员方法中进行 |-----用户管理系统-管理员的查询 |-----用户管理系统-管理员的添加 |-----用户管理系统-管理员的修改 |-----用户管理系统-管理员的删除 14、codeigniter框架中辅助函数 |-----辅助函数的位置application/helpers 目录 或 system/helpers 目录 |-----如何在控制器中载入辅助函数$this-load-helper(url);//载入url_helper.php文件 |-----自定义辅助函数 |-----辅助函数的扩展 |-----辅助函数的载入机制首先考虑载入application/helpers 目录下的文件再考虑载入system/helpers 目录下的文件 |-----用户管理系统-页面的跳转header(location:.site_url(admin/login/));//创建一个url并跳转 15、codeigniter框架中的配置文件 |-----配置文件的位置application/config/ 目录下 |-----如何在CI项目的控制器中载入配置文件手动载入和自动载入$this-config-load(pagination); |-----如何自定义配置文件application/config/pagination.php 配置项变量名必须是 $config[配置项] |-----配置文件中配置项的命名规范$config[配置项] |-----如何动态给配置项设置值$this-config-set_item(配置项,配置项值); |-----如何将分页配置写到配置文件中 |-----如何将配置文件合并$this-config-load(pagination,true);//参数2true 16、codeigniter框架中的通用类库 |-----通用类库的位置application/libraries/ 目录 system/libraries/ 目录 |-----如何在ci项目的控制器中载入通用类库$this-load-library(upload);//文件上传类库的载入 |-----通用类库的载入机制优先考虑载入application/libraries/ 目录下类库其次考虑载入 system/libraries 目录下类库 |-----分页类库的载入定制分页风格:$this-load-library(pagination); |-----用户管理系统-管理员列表页分页功能的完成 17、codeigniter框架与smarty模板引擎的无缝整合 |-----如何将第三方类库smarty模板引擎整合到CI项目中来 |-----如何在控制器中载入smarty模板引擎$this-load-library(tp); 18、codeigniter框架中完成用户登录系统 |-----用户登录系统-session类库的使用 |-----用户登录系统-cookie类库的使用 |-----用户登录系统-使用captache辅助函数完成图像验证码的创建 |-----用户登录系统-验证码原理 |-----用户登录系统-session登录 |-----用户登录系统-cookie登录 |-----用户登录系统-增加公共操作控制器扩展系统核心控制器类文件 |-----用户登录系统-cookie的三种使用方式 |-----php原生态语法结构中设置cookie的函数 |-----ci框架的cookie辅助函数 |-----input类库 19、codeigniter框架与ueditor编辑器的无缝整合 |-----整合步骤 20、codeigniter框架与fckeditor编辑器的无缝整合 |-----整合步骤 21、codeigniter框架中完成无限级分类下拉菜单 |-----无线递归方式完成比较复杂一点效率低不推荐使用 |-----path方式完成最为简便的方式几行代码就可搞定 22、codeigniter框架中使用jquery完成省市区三级联动功能 23、codeigniter框架中完成商品分类管理模块 |-----商品分类管理模块-添加商品分类 |-----商品分类管理模块-添加商品子分类 |-----商品分类管理模块-修改商品分类 |-----商品分类管理模块-商品分类列表 |-----商品分类管理模块-商品分类的删除 |-----商品分类管理模块-商品分类排序 |-----文件上传类库的使用 |-----图像处理类库的使用 |-----商品分类管理模块-添加分类banner |-----如何将文件上传和图像处理的有关配置放到配置文件中 |-----商品分类管理模块-分类banner列表 |-----商品分类管理模块-编辑分类banner |-----商品分类管理模块-banner的启用和禁用 |-----商品分类管理模块-分类banner排序 24、codeigniter框架完成一个权限管理系统 |-----权限管理系统-数据表的创建 |-----权限管理系统-业务分析 |-----权限管理系统-操作权限管理 |-----权限管理系统-添加操作权限 |-----权限管理系统-修改操作权限 |-----权限管理系统-删除操作权限 |-----权限管理系统-模块管理 |-----权限管理系统-添加模块 |-----权限管理系统-修改模块 |-----权限管理系统-删除模块 |-----权限管理系统-角色管理 |-----权限管理系统-添加角色并为角色设置权限 |-----权限管理系统-为当前角色添加操作权限 |-----权限管理系统-为当前角色删除操作权限 |-----权限管理系统-修改角色 |-----权限管理系统-删除角色 |-----权限管理系统-添加管理员的同时为管理员设置多个角色 |-----权限管理系统-添加管理员角色 |-----权限管理系统-修改管理员角色 |-----权限管理系统-删除管理员角色 |-----权限管理系统-当前管理员角色列表 25、显示最后一条查询的sql语句主要用于在连贯操作时检测拼接的sql语句是否正确 echo $this-db-last_query();//如:select * from pt_users where uid10 order by datetime desc limit 0,10 [php] view plaincopy 26、CI_DB_pdo_driver PDO数据库驱动类 $this-db-affected_rows();//影响记录数,区分:$this-db-get(order_master)-num_rows();//获取到的结果集行数 $this-db-count_all(order_master);//对于某个表不带条件的查询 $this-db-count_all_results();//快捷操作类方法,适用于带条件的查询 $this-db-insert_id();//新插入记录的id $this-db-trans_enabled true;//开启事务(默认是false,所以在使用事务前必须将其赋值为true) $this-db-trans_begin();//开始事务 $this-db-trans_rollback();//事务回滚 $this-db-trans_commit();//提交事务 $this-db-trans_status();//事务状态 true 或 false CI_DB_driver驱动类中的方法 [php] view plaincopy 27、CI_DB_mysql_driver mysql数据库驱动类 $this-db-affected_rows();//影响记录数,区分:$this-db-get(order_master)-num_rows();//获取到的结果集行数 $this-db-count_all(order_master);//对于某个表不带条件的查询 $this-db-count_all_results();//快捷操作类方法,适用于带条件的查询 $this-db-insert_id();//新插入记录的id $this-db-trans_enabled true;//开启事务(默认是false,所以在使用事务前必须将其赋值为true) $this-db-trans_begin();//开始事务 $this-db-trans_rollback();//事务回滚 $this-db-trans_commit();//提交事务 $this-db-trans_status();//事务状态 true 或 false CI_DB_driver驱动类中的方法 [php] view plaincopy 28、CI_DB_mysqli_driver mysqli数据库驱动类 $this-db-affected_rows();//影响记录数,区分:$this-db-get(order_master)-num_rows();//获取到的结果集行数 $this-db-count_all(order_master);//对于某个表不带条件的查询 $this-db-count_all_results();//快捷操作类方法,适用于带条件的查询 $this-db-insert_id();//新插入记录的id $this-db-trans_enabled true;//开启事务(默认是false,所以在使用事务前必须将其赋值为true) $this-db-trans_begin();//开始事务 $this-db-trans_rollback();//事务回滚 $this-db-trans_commit();//提交事务 $this-db-trans_status();//事务状态 true 或 false CI_DB_driver驱动类中的方法 [php] view plaincopy 29、model模型类中引用其它model模型类(如:category_model)和数据库(如:product) public function __construct() { parent::__construct(); $this-product_db $this-load-database(product, true);//通过model基类中的__get()方法选择性的引入CI超级对象中已加载类库,如:load $this-load-model(category_model); } [php] view plaincopy 30、控制器中引用其它模型类(如:category_model)和数据库(如:product) public function __construct() { parent::__construct(); $this-product_db $this-load-database(product, true); $this-load-model(category_model); } [php] view plaincopy 31、helper函数中引用CI超级对象的方法 function get_order_status_by_order($order_status){ $CI get_instance();//获取CI超级对象 $CI-load-Model(order_model);//通过CI超级对象可以载入任何模型 } [php] view plaincopy 32、缓存驱动的加载方式 $this-load-driver(cache, array(adapter memcached));//加载缓存驱动或缓存适配器,当前为memcached缓存;注意:CI框架只支持memcached,不支持memcache,windows操作系统下只有memcache扩展 $this-load-driver(cache, array(adapter file));//加载缓存驱动或缓存适配器,当前为file缓存 $this-load-driver(cache, array(adapter redis));//加载缓存驱动或缓存适配器,当前为redis缓存 $this-load-driver(cache, array(adapter apc, backup file));//优先选择apc缓存,file文件缓存作为替代方案;如果服务器不支持apc缓存时,选择file文件缓存 [php] view plaincopy 33、静态html模板文件中如何动态加载区域块内容 //index.html文件 div include/index.php/pub/common_nav relinclude/div //jquery代码 $(document).ready(function () { $([rel\include\]).each(function (e) { var t $(this), url t.attr(include) location.search; url $.get(url, function (data) {//url:/index.php/pub/common_nav t.html(data); }) }) }) [php] view plaincopy 34、拼接insert sql语句 /** *一维关联数组,拼接sql语句 *$data[username]admin; *$data[password]12345; *$data[sex]; */ function add_user( $data ) { if ( empty($data) || !is_array($data) ) { return false; } foreach ($data as $key $value) { if ( $value ) { unset($data[$key]);//删除数组中值为空的元素 } } $cols array_keys($data);//获取数组所有的键名 $values array_values($data);//获取数组所有的值 $cols_str implode(,, $cols);//将数组所有的键名拼接成一个字符串 $values_str .implode(,, $values).;//将数组所有的键值放到单引号中 //拼接sql:INSERT INTO user (username,password) VALUES (admin,12345); $sql INSERT INTO user ({$cols_str}) VALUES ({$values_str});//拼接sql $this-db-query($sql); } [php] view plaincopy 35、拼接insert sql语句 /** *一维关联数组,拼接sql语句 *$data[username]admin; *$data[password]12345; *$data[sex]; */ function add_user( $data ) { if ( empty($data) || !is_array($data) ) { return false; } foreach ($data as $key $value) { if ( $value ) { unset($data[$key]);//删除数组中值为空的元素 } } $cols array_keys($data);//获取数组所有的键名 $values array_values($data);//获取数组所有的值 foreach($values as $k$val){ $values[$k].$val.;//将所有的键值放到单引号中 } $cols_str implode(,, $cols);//将数组所有的键名拼接成一个字符串 $values_str implode(,, $values);//将数组所有的键值拼接成一个字符串 //拼接sql:INSERT INTO user (username,password) VALUES (admin,12345); $sql INSERT INTO user ({$cols_str}) VALUES ({$values_str});//拼接sql $this-db-query($sql); } [php] view plaincopy 36、拼接update sql语句 /** * 编辑用户信息 * $userid1; * $data[username]admin; * $data[password]123; */ function edit_user(userid, $data) { if ( empty($data) || !is_array($data) ) { return; } foreach ($data as $key $value) { $str . isset($str)?, {$key} {$value}:{$key} {$value}; } //拼接sql:UPDATE user SET usernameadmin,password123 WHERE addr_id 1; $sql UPDATE user SET {$str} WHERE addr_id {$addr_id}; $this-db-query($sql); } [php] view plaincopy 37、数据库快捷操作类常用方法 /** * 查询订单 * * param $query */ public function get_order_list($query, $offset 0, $limit 20) { if (is_array($query) !empty($query)) { foreach ($query as $key $val) { if (is_array($val)) { $this-order_db-where_in($key, $val); } else { $this-order_db-where($key, $val); } } } $this-order_db-order_by(updatetime, desc); $this-order_db-order_by(id, desc); if (!$limit) { $query $this-order_db-get(order); } else { $query $this-order_db-get(order, $limit, $offset); } if ($query-num_rows() 0) { return $query-result_array(); } return array(); } [php] view plaincopy 38、拼接select sql语句 function get_user_list($colsarray(username,password)) { $colimplode(,,$cols);//查询的列属性 $sql SELECT $col FROM user ORDER BY addr_id DESC; $this-db-query($sql)-result_array(); } [php] view plaincopy 39、CI框架中cookie的三种使用方式 //第一种设置cookie的方式采用php原生态的方法设置的cookie的值 setcookie(user_id,$user_info[user_id],86500); setcookie(username,$user_info[username],86500); setcookie(password,$user_info[password],86500); //echo $_COOKIE[username]; //第二种设置cookie的方式通过CI框架的input类库设置cookie的值 $this-input-set_cookie(username,$user_info[username],60); $this-input-set_cookie(password,$user_info[password],60); $this-input-set_cookie(user_id,$user_info[user_id],60); //echo $this-input-cookie(password);//适用于控制器 //echo $this-input-cookie(username);//适用于控制器 //echo $_COOKIE[username];//在模型类中可以通过这种方式获取cookie值 //echo $_COOKIE[password];//在模型类中可以通过这种方式获取cookie值 //第三种设置cookie的方式通过CI框架的cookie_helper.php辅助函数库设置cookie的值 set_cookie(username,$user_info[username],60); set_cookie(password,$user_info[password],60); set_cookie(user_id,$user_info[user_id],60); //echo get_cookie(username); [php] view plaincopy 40、array_merge()合并数组函数的使用 ?php header(content-type:text/html;charsetutf-8); $arr1array( 13012array( brand_id2, category_id3 ) ); $arr2array( 13012array( goods_id3576, goods_namesanyang ) ); /** *echo pre;print_r(array_merge($arr1,$arr2)); *结果: *Array * ( * [0] Array //索引重置为数字索引 * ( * [brand_id] 2 * [category_id] 3 * ) * [1] Array * ( * [goods_id] 3576 * [goods_name] sanyang * ) * ) */ /** *echo pre;print_r(array_merge($arr1[13012],$arr2[13012])); *结果: * Array * ( * [brand_id] 2 * [category_id] 3 * [goods_id] 3576 * [goods_name] sanyang * ) */ ? [php] view plaincopy 41.json格式数据: public function json(){ $data[0][goods_id]3567; $data[0][goods_name]sanyang; $data[1][goods_id]3567; $data[1][goods_name]sanyang; echo json_encode($data);exit; /** * 结果: * [ * { * goods_id: 3567, * goods_name: sanyang * }, * { * goods_id: 3567, * goods_name: sanyang * } *] */ } [php] view plaincopy 42.联合查询 left join //controller控制器 $query array( product_id $product_id, activity.status array(1, 2, 0), activity.is_del 0 ); $query[activity.activity_id] $activity_id; $goods_list $this-activity_model-get_activity_good_mapping($query, 0, 0); //model模型 public function get_activity_good_mapping($query,$offset 0, $limit 0,$get){ $this-db $this-activity_db; if (is_array($query) !empty($query)) { foreach ($query as $key $val) { if (is_array($val)) { $this-db-where_in($key, $val); } else { $this-db-where($key, $val); } } } $this-db-from(activity_goods); $this-db-join(activity, activity_goods.activity_id activity.activity_id,left); if (!$limit) { } else { $query $this-db-limit($limit, $offset); } $query $this-db-get(); if ($query-num_rows() 0) { return $query-result_array(); } return array(); } [php] view plaincopy 43.ci框架如何记录sql日志? (1)配置日志目录: 在application/config/config.php 文件中配置日志目录 $config[log_path]/opt/www/logs/; (2)在 system/database/DB_driver.php 文件的query()方法末尾添加如下语句: log_message( db,【sql语句:.$this-last_query().】);//这样所有执行过的sql语句都会按日期时间格式记录到 /opt/www/logs/ 目录下 return $RES; 二、部分截图如下 三、数据库操作类之间的继承关系(区分数据库普通操作类和数据库快捷操作类),如图所示 注意:CI_DB类是在DB()函数中动态定义的,没有单独的类库文件 DB()函数在DB.php文件中定义 DB.php文件中部分代码如下: [php] view plaincopy require_once(BASEPATH.database/DB_driver.php);//类名:CI_DB_driver if ( ! isset($active_record) OR $active_record TRUE) { require_once(BASEPATH.database/DB_active_rec.php); if ( ! class_exists(CI_DB)) { eval(class CI_DB extends CI_DB_active_record { });//继承关系 } } else { if ( ! class_exists(CI_DB)) { eval(class CI_DB extends CI_DB_driver { });//继承关系 } } require_once(BASEPATH.database/drivers/.$params[dbdriver]./.$params[dbdriver]._driver.php);//类名:CI_DB_mysql_driver // Instantiate the DB adapter $driver CI_DB_.$params[dbdriver]._driver;//类名:CI_DB_mysql_driver $DB new $driver($params);//创建一个数据库操作类句柄对象: $DBnew CI_DB_mysql_driver($paams); 继承关系:class CI_DB_mysql_driver extends CI_DB{} if ($DB-autoinit TRUE) { $DB-initialize(); } if (isset($params[stricton]) $params[stricton] TRUE) { $DB-query(SET SESSION sql_modeSTRICT_ALL_TABLES); } return $DB;//返回数据库操作类句柄对象 提示:$this-load-database();//内部通过加载DB.php文件并调用DB()函数来实现不同数据库驱动类的加载 $this-product_db $this-load-database(product, true);//连接product数据库,并返回数据库操作类句柄,参数2-代表返回的数据库句柄 $this-wms_db $this-load-database(wms, true);//连接wms数据库,并返回数据库操作类句柄,参数2-代表返回的数据库句柄 $this-order_db $this-load-database(order, true);//连接order数据库,并返回数据库操作类句柄,参数2-代表返回的数据库句柄 四、模型类分析:CI_Model 模型类分析:CI_Model 数据库普通操作类(CI_DB_driver)中的query()方法内部,通过$driver $this-load_rdriver(); $RES new $driver();两行代码加载并实例化了一个CI_DB_mysql_result结果集对象(总结:以驱动的方式加载结果集对象),经过对结果集对象的一些列初始化操作,最终返回此结果集对象(总结:query()方法中返回了一个CI_DB_mysql_result结果集对象) [php] view plaincopy //CI_DB_driver 基类中的load_rdriver()方法在数据库普通操作基类中的query()方法中被调用,用来返回一个结果集对象 function load_rdriver(){ $driver CI_DB_.$this-dbdriver._result; if ( ! class_exists($driver)) { include_once(BASEPATH.database/DB_result.php);//类名:CI_DB_result include_once(BASEPATH.database/drivers/.$this-dbdriver./.$this-dbdriver._result.php);//类名:CI_DB_mysql_result } return $driver;//继承关系:class CI_DB_mysql_result extends CI_DB_result } 提示:也就是说,类似 $this-db-query(select * from user); 的语句,返回的都是一个结果集对象 $this-db-query(select * from user)-result_array();//将结果集转换为二维关联数组 $this-db-query(select * from user)-row_array();//将结果集转换为一维关联数组 数据库快捷操作类(CI_DB_active_record)中的get()、insert()等多个方法内部都调用了数据库普通操作类中的query()方法,即:间接的返回了CI_DB_mysql_result结果集对象 数据库快捷操作类中很多对结果集的操作函数内部都是通过封装返回的CI_DB_mysql_result结果集对象中的方法来完成相似功能的(总结get()、insert()方法内部最后调用了query()方法,并返回query()方法执行的结果,所以返回的也是一个CI_DB_mysql_result结果集对象) 数据库快捷操作类中的方法其实只干了一件事情,那就是通过函数的方式帮助我们拼接了要执行的sql语句,并执行该sql语句 但是对于复杂的sql语句尤其对于复杂的多表查询语句,个人还是建议直接使用数据库普通操作类中的query()方法(适用于两个表以上的情况) 对于返回的结果集对象而言,结果集对象中的方法是通用的(总结:CI_DB_mysql_result结果集对象中对结果集的处理函数对于数据库普通操作类和数据库快捷操作类是通用的) 我们可以这样理解:数据库快捷操作类是对数据库普通操作类的二次封装 提示数据库操作类的继承关系 class CI_DB_active_record extends CI_DB_driver { //代码 }转载于:https://www.cnblogs.com/kenshinobiy/p/4779042.html