Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

【diy】增加SQL调用方法 DX1.5版本

[复制链接]
zhaoxun2005 发表于 2010-10-2 14:04:15 | 显示全部楼层 |阅读模式
本帖最后由 zhaoxun2005 于 2010-11-6 18:46 编辑

先声明:此方法是看了bqqcat的帖子,然后修改而成!
亲子在线网 www.qinzi001.com   首页调用的儿歌就是用这个做的!可以参看下!
     增加SQL调用,只需创建一个文件,在“source\class\block\html” 文件夹下创建名为:“block_sql.php”,全文代码如下:

   <?php
/**
*      
*  
*     
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
require_once libfile('commonblock_html', 'class/block/html');
class block_sql extends commonblock_html {
function block_sql() {}
function name() {
  return 'SQL脚本';
}
function getsetting() {
  global $_G;
  $settings = array(
   'sql' => array(
    'title' => 'SQL语句',
    'type' => 'textarea',
    'default' => 'SELECT *
FROM `pre_forum_forum`'
   ),
   
   /*'fieldlist' => array(
    'title' => '可引用字段',
    'type' => 'textarea',
    'default' => '{$tablepre} '
   ),*/
      
   'template' => array(
    'title' => 'HTML模板',
    'type' => 'textarea',
    'default' => '[node]{name}<BR>[/node]'
   ),
   
   'start' => array(
    'title' => '起始数据行数',
    'type' => 'text',
    'default' => 0
   ),
   'limit' => array(
    'title' => '显示数据条数',
    'type' => 'text',
    'default' => 5
   )
  );
  return $settings;
}
function getdata($style, $parameter) {
  require_once libfile('function/home');
///  $return = getstr($parameter['content'], '', 1, 0, 1, 0, 1);
///
global $_G;
$tablepre = $_G['config']['db']['1']['tablepre'];
$sql = !empty($parameter['sql']) ? ($parameter['sql']) : '';
$start = !empty($parameter['start']) ? intval($parameter['start']) : 0;
$limit = !empty($parameter['limit']) ? intval($parameter['limit']) : 5;

$writedata = '';
if ($sql != '')
{
  $searchs1 = $replaces1 = array();
  $searchs1[] = '{$tablepre}';
  $replaces1[] = $tablepre;//'`'.$dbname.'`.'.$tablepre;
  $sql = str_replace($searchs1, $replaces1, stripslashes($sql));
  $sql = ltrim(strtolower($sql));
  $i = strpos($sql , 'select');
  if ($i != 0){
   $writedata = '只能定义SELECT语句';
   return array('html' => $writedata, 'data' => null);
  }
  $sqldata = $sql.' limit '.$start.','.$limit.';';
  $query = DB::query($sqldata);

  $writedata = '';
  $requesttemplatebody = '';
  $requesttemplate = stripslashes($parameter['template']);
  if(preg_match("/\[node\](.+?)\[\/node\]/is", $requesttemplate, $node)) {
   $requesttemplatebody = $requesttemplate;
   $requesttemplate = $node[1];
  }
  while($thread = DB::fetch($query)) {
   $searchs = $replaces = array();
   foreach(array_keys($thread) as $key) {
    $searchs[] = '{'.$key.'}';
    $replaces[] = htmlspecialchars($thread[$key]);
    $searchs[] = '{rawurlencode('.$key.')}';
    $replaces[] = rawurlencode($thread[$key]);
   }
   $writedata .= str_replace($searchs, $replaces, $requesttemplate);
  }
  if ($requesttemplatebody){
   $oldwritedata = $writedata;
   $writedata = str_replace($node[0], $oldwritedata, $requesttemplatebody);
  }
}else{
$writedata = '没有定义SQL';
}
///
  return array('html' => $writedata, 'data' => null);
}
}
?>
ilei365 发表于 2010-10-2 14:12:37 | 显示全部楼层
支持了。
回复

使用道具 举报

Gnagno. 发表于 2010-10-2 14:12:57 | 显示全部楼层
回复

使用道具 举报

 楼主| zhaoxun2005 发表于 2010-10-2 14:16:37 | 显示全部楼层
请注意,由于该文件里包含汉字了,请注意保存时的字符编码,如果你的版本是UTF8,那么你需要保存为UTF8编码的文件
当然你也可以把汉字去掉,全放到LANG里去,不过那就需要更改原来的系统文件,有点不绿色了,呵呵
回复

使用道具 举报

jm611 发表于 2010-10-5 16:01:11 | 显示全部楼层
顶下了。。
回复

使用道具 举报

la367 发表于 2010-10-5 17:19:21 | 显示全部楼层
这样的方法很不错啊·~~
回复

使用道具 举报

yy2bbs 发表于 2010-10-7 15:30:40 | 显示全部楼层
我按说明放上去了用不了
回复

使用道具 举报

 楼主| zhaoxun2005 发表于 2010-10-14 18:22:47 | 显示全部楼层
本帖最后由 zhaoxun2005 于 2010-10-14 18:24 编辑

呵呵,不会吧,1.5版本,我自己就这样用的www.qinzi001.com 你可以看看
回复

使用道具 举报

 楼主| zhaoxun2005 发表于 2010-10-14 18:25:15 | 显示全部楼层
本帖最后由 zhaoxun2005 于 2010-10-14 18:25 编辑
yy2bbs 发表于 2010-10-7 15:30
我按说明放上去了用不了

呵呵,不会吧,1.5版本,我自己就这样用的www.qinzi001.com 你可以看看
回复

使用道具 举报

fengchujun 发表于 2010-10-15 09:58:53 | 显示全部楼层
怎么样调出来??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 07:39 , Processed in 0.024287 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表