首页 » SEO优化 » phpci视频教程技巧_专家动态页面的实现php基于CI框架的进修二

phpci视频教程技巧_专家动态页面的实现php基于CI框架的进修二

访客 2024-11-06 0

扫一扫用手机浏览

文章目录 [+]

打开干系文件,全体定义了一个Expert类

class Expert extends CI_Controller{}

在Expert类里定义了几个参数以及解释其利用了哪些model

phpci视频教程技巧_专家动态页面的实现php基于CI框架的进修二

function __construct() { $this->whitelist = "index"; parent::__construct ( ); $this->load->model ( 'category_model' ); $this->load->model ( "expert_model" );}

然后我们看function index() 里的代码,一行行看下来

phpci视频教程技巧_专家动态页面的实现php基于CI框架的进修二
(图片来自网络侵删)

$navtitle = "问题专家";$cid = intval ( $this->uri->segment ( 3 ) ) ? $this->uri->segment ( 3 ) : 'all'; //分类id$status = null!== $this->uri->segment ( 4 ) ? $this->uri->segment ( 4 ) : 'all'; //排序

可以在页面中逐一对应

if ($cid != 'all') { $category = $this->category [$cid]; //得到分类信息 $navtitle = $category ['name'] . "专家列表"; $cfield = 'cid' . $category ['grade'];//获取分类的等级}

第二行语句有点难以理解,选中后面的category查看引用,可以创造当前category是来自System/core目录下文件controller.php的全局变量。

private static $instance;var $cache;var $currentuid = array ();var $setting = array ();var $category = array ();var $usergroup = array ();var $whitelist;var $time;var $ip;

同时再选中$category右键查看快速引用,会找到下面几行代码

$this->load->database ();$category = $this->category = $this->cache->load ( 'category', 'id', 'displayorder' );

访问缓存数据,通过load()获取数据库里,名字为“category”的数据表里的id和displayorder字段的数据,以下是load函数的源代码

把稳:数据访问之前,会先通过下面的函数从缓存里访问数据,如果失落败就会自动去读取数据然后写入缓存

function fromcache($cachename,$cachetime = 3){}

总之,由上方可以得出全局变量$category中读取的是数据库某条数据,源代码

$category = $this->category [$cid]; //得到分类信息

意为:Expert新定义的$category 为 db.category.id = cid 的整条数据库的信息

//上接源代码,即$cid == 'all'的情形else { $category ['name'] = ''; $category ['id'] = 'all'; $cfield = ''; $category ['pid'] = 0;}if ($cid != 'all') $category = $this->category_model->get ( $cid );$sublist = $this->category_model->list_by_cid_pid ( $cid, $category ['pid'] ); //获取子分类

此段代码包含的函数:

$this->category_model->get ( $cid );该方法里包括了还包括了一个通过cid的值在数据表catagory里获取分类封面图的方法

$this->category_model->list_by_cid_pid ( $cid, $category [‘pid’] )

function list_by_cid_pid($cid, $pid) { $cid=intval($cid); $pid=intval($pid); $sublist = array (); //把cid,pid值即是'all'的分类设置为平级的分类 if ($cid == 'all') { $cid = 0; } if ($pid == 'all') { $pid = 0; } $where=" and onlybackground!=1 "; //在数据表里探求与函数参数pid相同的分类id //使pid分类为id的子分类 $query = $this->db->query ( "select from " . $this->db->dbprefix . "category where pid=$cid and isuseask=1 $where order by displayorder asc,id asc" ); //给子分类添加封面缩略图和大图 foreach ( $query->result_array () as $category ) { $category ['image'] = get_cid_dir ( $category ['id'], 'big' ); $category ['bigimage'] = get_cid_dir ( $category ['id'], 'big' ); $sublist [] = $category; } return $sublist;}

我们可以访问干系的数据库来

几个分类之间等级关系在这里

我们创造默认分类下面没有子分类,打算机分类下面有PHP,结合数据表就能得知,分类A的pid属性值即是某分类B的id值,那么分类A便是分类B的子分类,除子分类外,其他分类平级

然后我们再去查看该函数在浏览界面显示子分类的事理,我们就能更好地理解地源码了

//判断网页是否是付费内容$orderwhere = '';switch ($status) { case 'all' : //全部 $orderwhere = ''; break; case '1' : //付费 $orderwhere = ' and mypay>0 '; break; case '2' : //免费 $orderwhere = " and mypay=0 "; break; default: $orderwhere = ''; break;}$page = max ( 1, intval ( $this->uri->segment ( 5 ) ) );$pagesize = $this->setting ['list_default'];$startindex = ($page - 1) $pagesize;

$page = max ( 1, intval ( $this->uri->segment ( 5 ) ) );令当前页面的page为$this->uri->segment ( 5 )返回的整数值,如果不存在该地址就返回1,此网页返回1,由于最多只有四个分页

$pagesize = $this->setting [‘list_default’];setting同上文的$category一样,都是定义好的全局变量

setting存储的是数据库里的“setting”数据表在此处调用了字段 ‘ list_default ’ 的值,意为一张页面默认显示的列表数量为15条

$startindex = ($page – 1) $pagesize;网页的起始页码设置,为当前页码减1,由于打算机计数是从0开始的

//冗长的,本页面末了一个判断语句$rownum = $cid == 'all' ? returnarraynum ( $this->db->query ( getwheresql ( 'user', " expert=1 " . $orderwhere , $this->db->dbprefix ) )->row_array () ) : returnarraynum ( $this->db->query ( getwheresql ( 'user', " expert=1 " . $orderwhere . "and uid IN (SELECT uid FROM " . $this->db->dbprefix . "user_category WHERE cid=$cid)" , $this->db->dbprefix ) )->row_array () );

该语句中调用了以下方法

大概意思为:

当前cid = ‘all’时查询数据表 user数据中,expert = 1 (代表是专家)的orderwhere 是不是免费的数量

当前cid <> ‘all’时查询数据表 user数据中,expert = 1 (代表是专家)而且 user_category(用户认证的专家分类数据表).cid = 当前的cid ,这条数orderwhere 是不是免费的的数量

//展示专家列表,get_list获取user数据表所有专家用户id//并判断他是否认证,末了一次上岸韶光,关注人数,被关注次数,个人善于分类$expertlist = $this->expert_model->get_list ( 1, $startindex, $pagesize, $cid, $status );//通过page函数,以分类的id号,是否免费重新建立两个分页$departstr = page ( $rownum, $pagesize, $page, "expert/default/$cid/$status" );//使当前页面,每一页面最多可处理15条数据$questionlist = $this->expert_model->get_solves ( 0, 15 );//代码的页面实现include template ( 'expert' );

标签:

相关文章

我国土地利用分类代码的构建与应用

土地利用分类代码是我国土地管理的重要组成部分,是土地资源调查、规划、利用和保护的依据。土地利用分类代码的构建与应用显得尤为重要。本...

SEO优化 2025-02-18 阅读1 评论0

微信跳转微信支付便捷支付体验的秘密武器

移动支付已成为人们日常生活中不可或缺的一部分。作为我国领先的社交平台,微信支付凭借其便捷、安全的支付方式,深受广大用户的喜爱。而微...

SEO优化 2025-02-18 阅读1 评论0

探寻会计科目代码背后的奥秘分类与

会计科目代码是会计信息系统中不可或缺的组成部分,它将企业的经济活动进行分类和归纳,为会计核算、财务分析和决策提供重要依据。本文将从...

SEO优化 2025-02-18 阅读1 评论0