标签 sql 下的文章

调用栏目下最新文章,很简单,action="postion"改为"lists",一定要加上catid

{pc:content action="lists" catid="72" num="8" order="id DESC"}
<UL>
{loop $data $r}
<LI><a href="{$r[url]}" target="_blank">{str_cut($r[title],36,'')}</a></LI>
{/loop}
</UL>{/pc}

 

Phpcms默认不支持调用全站最新文章,需要修改文件:\phpcms\modules\content\classes\content_tag.class.php,找到以下函数:

  1. /**
  2.       * 列表页标签
  3.       * @param $data
  4.       */
  5.      public function lists($data) {
  6.          $catid = intval($data['catid']);
  7.          if(!$this->set_modelid($catid)) return false;
  8.          if(isset($data['where'])) {
  9.              $sql = $data['where'];
  10.          } else {
  11.              $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
  12.              if($this->category[$catid]['child']) {
  13.                  $catids_str = $this->category[$catid]['arrchildid'];
  14.                  $pos = strpos($catids_str,',')+1;
  15.                  $catids_str = substr($catids_str, $pos);
  16.                  $sql = "status=99 AND catid IN ($catids_str)".$thumb;
  17.              } else {
  18.                  $sql = "status=99 AND catid='$catid'".$thumb;
  19.              }
  20.          }
  21.          $order = $data['order'];
  22.          $return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');
  23.          //调用副表的数据
  24.          if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {
  25.              $ids = array();
  26.              foreach ($return as $v) {
  27.                  if (isset($v['id']) && !emptyempty($v['id'])) {
  28.                      $ids[] = $v['id'];
  29.                  } else {
  30.                      continue;
  31.                  }
  32.              }
  33.              if (!emptyempty($ids)) {
  34.                  $this->db->table_name = $this->db->table_name.'_data';
  35.                  $ids = implode('\',\'', $ids);
  36.                  $r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');
  37.                  if (!emptyempty($r)) {
  38.                      foreach ($r as $k=>$v) {
  39.                          if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);
  40.                      }
  41.                  }
  42.              }
  43.          }
  44.          return $return;
  45.      }

修改为:

  1. /**
  2.       * 列表页标签
  3.       * @param $data
  4.       */
  5.      public function lists($data) {
  6.          $catid = intval($data['catid']);
  7.          if(isset($data['where'])) {
  8.              $sql = $data['where'];
  9.          } else {
  10.              $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
  11.              if(!emptyempty($catid)) {
  12.                  if(!$this->set_modelid($catid)) return false;
  13.                  if($this->category[$catid]['child']) {
  14.                      $catids_str = $this->category[$catid]['arrchildid'];
  15.                      $pos = strpos($catids_str,',')+1;
  16.                      $catids_str = substr($catids_str, $pos);
  17.                      $sql = "status=99 AND catid IN ($catids_str)".$thumb;
  18.                  } else {
  19.                      $sql = "status=99 AND catid='$catid'".$thumb;
  20.                  }
  21.              }
  22.              else {
  23.                  $sql = "status=99".$thumb;
  24.              }
  25.          }
  26.          $order = $data['order'];
  27.          $return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');
  28.          //调用副表的数据
  29.          if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {
  30.              $ids = array();
  31.              foreach ($return as $v) {
  32.                  if (isset($v['id']) && !emptyempty($v['id'])) {
  33.                      $ids[] = $v['id'];
  34.                  } else {
  35.                      continue;
  36.                  }
  37.              }
  38.              if (!emptyempty($ids)) {
  39.                  $this->db->table_name = $this->db->table_name.'_data';
  40.                  $ids = implode('\',\'', $ids);
  41.                  $r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');
  42.                  if (!emptyempty($r)) {
  43.                      foreach ($r as $k=>$v) {
  44.                          if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);
  45.                      }
  46.                  }
  47.              }
  48.          }
  49.          return $return;
  50.      }

修改代码后,即能调取全站最新文章。
调用方法:{pc:content action="lists" num="10" order="id DESC" cache="3600"}

创建数据库

/*****************************************************************************/

CREATE   DATABASE   冉青平

on

(

NAME   =   宿舍楼表 ,

FILENAME   =   'E:\database\宿舍楼表 .mdf' ,

SIZE   =  10 ,

MAXSIZE   =  15 ,

FILEGROWTH   =  5 %,

)

LOG   on  (

NAME   =   宿舍楼表日志 ,

FILENAME   =   'E:\database\宿舍楼表 .ldf' ,

SIZE   =  5 ,

MAXSIZE   =  10 ,

FILEGROWTH   =  1 %,

)

/*****************************************************************************/

创建数据库表

CREATE     TABLE     宿舍楼表     (

宿舍楼名     varchar  ( 12 )     NOT     NULL     PRIMARY     KEY   ,

建造日期     datetime     NOT     NULL,

类型     char ( 8 )     check   (   类型     in     (   '男生宿舍 '   ,   '女生宿舍 '   )),

包含寝室个数     int       NULL

)

/*****************************************************************************/

为表插入数据

INSERT     INTO     宿舍楼表

VALUES   (   '第九寝室楼 '   , '20080903' ,   '男生宿舍 '   ,   '112'   )

INSERT     INTO     宿舍楼表

VALUES   (   '第八寝室楼 '   , '20080904' ,   '男生宿舍 '   ,   '112'   )

INSERT     INTO     宿舍楼表

VALUES   (   '第七寝室楼 '   , '20080905' ,   '男生宿舍 '   ,   '112'   )

/*************************************/

/寝室表 /

CREATE     TABLE     寝室表     (

寝室编号     char  (  7  )     PRIMARY     KEY   ,

宿舍楼名     varchar ( 12 )      FOREIGN     KEY   (   宿舍楼名   )     REFERENCES    宿舍楼表   (   宿舍楼名   ),

可住人数     int   NOT   NULL

)

/********************插入数据 ********************/

INSERT   INTO   寝室表

VALUES  ( ' 606 ' , '第九寝室楼 ' , '8' )

 

INSERT   INTO   寝室表

VALUES  ( ' 606 '   , '第八寝室楼 ' , '8' )

 

INSERT   INTO   寝室表

VALUES  ( ' 606 ' , '第七寝室楼 ' , '8' )

 

INSERT   INTO   寝室表

VALUES  ( ' 606 ' , '第一寝室楼 ' , '4' )

 

INSERT   INTO   寝室表

VALUES  ( ' 606 ' , '第二寝室楼 ' , '4' )

/**********************第三个数据库 ************************/

CREATE     TABLE     寝室学生信息表     (

宿舍楼名     varchar  (  12  )     not     null,

寝室编号     char  (  7  )not     null,

学生姓名     varchar  (  12  )     not     null,

学生专业     varchar  (  24  ),

学生年级     char  (  4  )

)

/********************插入数据 **************************/

INSERT   INTO   寝室学生信息表

VALUES  ( '第九寝室楼 ' , '606' , '冉青平 ' , '计算机应用技术 ' , '10' )

INSERT   INTO   寝室学生信息表

VALUES  ( '第九寝室楼 ' , '606' , '刘志 ' , '计算机应用技术 ' , '10' )

INSERT   INTO   寝室学生信息表

VALUES  ( '第九寝室楼 ' , '606' , '赵小明 ' , '计算机应用技术 ' , '10' )

INSERT   INTO   寝室学生信息表

VALUES  ( '第九寝室楼 ' , '606' , '孙大勇 ' , '计算机应用技术 ' , '10' )

INSERT   INTO   寝室学生信息表

VALUES  ( '第九寝室楼 ' , '606' , '全哲斌 ' , '计算机应用技术 ' , '10' )

/**************SQL查询语句 ********/

1.  写一个查询sql 语句,根据自己的姓名从“寝室学生信息表”和“宿舍楼表”中查询出所在宿舍楼的建造日期。

2.  写一个查询sql 语句,从“寝室学生信息表”查询出自己所在寝室入住的人数

3.  写一个查询sql 语句,查询“宿舍楼名”和“建造日期”两列信息,输出结果按照建造日期排序

1.

SELECT   建造日期   FROM

寝室学生信息表   join   宿舍楼表

on   寝室编号 = 寝室编号   where   学生姓名 =   '冉青平 '

 

 

2.

SELECT   b . 可住人数   FROM   寝室学生信息表   a

join   寝室表   b   on   a . 寝室编号 = a . 寝室编号   where   学生姓名 = '冉青平 '

3.

SELECT   宿舍楼名 , 建造日期   from   宿舍楼表

ORDER   BY   建造日期   DESC