注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php 王建

php之路

 
 
 

日志

 
 

discuz如何在diy内进行写sql语句调用呢?  

2012-03-06 11:49:37|  分类: php类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

首先创建一个php文件block_sql.php放入./source/class/block/html

文件的内容如下:

<?php
/**
 *
 * diy调用 进行自定义sql语句
 *   把此文件放入./source/class/block/html内进行使用 ,不要忘了 删除模板缓存 否则是没有效果的
 */


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 lang('blockclass', 'blockclass_html_script_sql');//返回一个模块的名字(在./source/language/lang_blockclass.php内进行定义)
 }
 function getsetting() {
  global $_G;
  $settings = array (
   'title' => array (
    'title' => 'sql_title',
     'type' => 'textarea',
     'default' => 'SELECT * FROM `pre_forum_forum`'
    ),
         'template' => array (
          'title' => 'sql_template',
          'type' => 'textarea',
          'default' => '[node]{name}<BR>[/node]'
          ), //自定义html
            'start' => array (
         
    'title' => 'sql_start',
          'type' => 'text',
             'default' => 0
          ),
         'limit' => array (
          'title' => 'sql_limit',
          'type' => 'text',
          'default' => 5
          )
         );
  return $settings;
 }
 function getdata($style, $parameter) {
  require_once libfile ( 'function/home' );

  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 = 'nosql';
  }
  ///
  return array ('html' => $writedata, 'data' => null );
 }
}
?>

然后在diy的时候就可以看到如下的效果:

discuz如何在diy内进行写sql语句调用呢? - wangjian84075041 - php_王建

 

  评论这张
 
阅读(1735)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018