discuz万能SQLクエリ呼び出し文の書き方
6773 ワード
まず、最下位のsourceclasstableに最下位のセキュリティコールファイルを書き込みます.たとえば、table_common_friendlink.php
コード:
次にフロントsourcemoduleportalがクエリーファイルを呼び出します:portal_index.php
コード:
テンプレートでtemplatedefaultportal呼び出しファイル:portalcp_index.htm
コード:
コード:
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: table_common_friendlink.php 27449 2012-02-01 05:32:35Z zhangguosheng $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class table_common_friendlink extends discuz_table
{
public function __construct() {
$this->_table = 'common_friendlink';
$this->_pk = 'id';
parent::__construct();
}
public function fetch_all_by_displayorder($type = '')
{
$args = array($this->_table);
if($type) {
$sql = 'WHERE (`type` & %s > 0)';
$args[] = $type;
}
return DB::fetch_all("SELECT * FROM %t $sql ORDER BY displayorder", $args, $this->_pk);
}
public function fetch_all_by_sql($where, $order = '', $start = 0, $limit = 0, $count = 0, $alias = '') {
$where = $where && !is_array($where) ? " WHERE $where" : '';
if(is_array($order)) {
$order = '';
}
if($count) {
return DB::result_first('SELECT count(*) FROM '.DB::table($this->_table).' %i %i %i '.DB::limit($start, $limit), array($alias, $where, $order));
}
return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' %i %i %i '.DB::limit($start, $limit), array($alias, $where, $order));
}
}
?>
次にフロントsourcemoduleportalがクエリーファイルを呼び出します:portal_index.php
コード:
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
include_once libfile('function/portalcp'); // 。
//discuz SQL
$wheresqla = " type=2 ";
$ordera = " ORDER BY id ASC ";
$linksa = C::t('common_friendlink') -> fetch_all_by_sql($wheresqla, $ordera, 0, 20);
include_once template('diy:portal/index');
?>
テンプレートでtemplatedefaultportal呼び出しファイル:portalcp_index.htm
コード:
<section class="wp d_friendlinks mtw">
<div class="d_friendlinksbg"></div>
<div class="d_friendlinksa">
<!--{loop $linksa $value}-->
<a href="http://www.juhutang.com/ $value[url]" target="_blank">$value[name]</a>
<!--{/loop}-->
</div>
</section>