一个DEDE下载页面的函数,动态显示所有一级栏目名


//以下为获取栏目列表,By 尘缘
$dsql = new DedeSql(false);
$menuquerysql = "Select typedir,typename from `#@__arctype` where reid='0'";
$dsql->Execute('me',$menuquerysql);
while($row = $dsql->getarray())
{
$menus= $menus."

  • ".$row['typename']."
  • \r\n";
    }
    $dsql->Close();

  • 将以上代码加到plus/download.php中,位置任意,在模板中调用< ?=menus?>即可.
    这里主要是分析了DEDE的Mysql函数,感觉好用。
    记号一下。


    //
    //用指定参数初始数据库信息
    //
    function SetSource($host,$username,$pwd,$dbname,$dbprefix="dede_")
    {
    $this->dbHost = $host;
    $this->dbUser = $username;
    $this->dbPwd = $pwd;
    $this->dbName = $dbname;
    $this->dbPrefix = $dbprefix;
    $this->result["me"] = 0;
    }
    function SelectDB($dbname)
    {
    mysql_select_db($dbname);
    }
    //
    //设置SQL里的参数
    //
    function SetParameter($key,$value){
    $this->parameters[$key]=$value;
    }
    //
    //连接数据库
    //
    function Open($pconnect=false)
    {
    global $dsql;
    //连接数据库
    if($dsql && !$dsql->isClose) $this->linkID = $dsql->linkID;
    else
    {
    if(!$pconnect){ $this->linkID = @mysql_connect($this->dbHost,$this->dbUser,$this->dbPwd); }
    else{ $this->linkID = @mysql_pconnect($this->dbHost,$this->dbUser,$this->dbPwd); }
    //复制一个对象副本
    CopySQLPoint($this);
    }
    //处理错误,成功连接则选择数据库
    if(!$this->linkID){
    //echo $this->GetError();
    $this->DisplayError("DedeCms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错,如未安装本系统,请先运行安装程序,如果已经安装,请检查MySQL服务或修改include/config_base.php的配置!");
    exit();
    }
    @mysql_select_db($this->dbName);
    $mysqlver = explode('.',$this->GetVersion());
    $mysqlver = $mysqlver[0].'.'.$mysqlver[1];
    if($mysqlver>4.0) @mysql_query("SET NAMES '".$GLOBALS['cfg_db_language']."';",$this->linkID);
    if($mysqlver>5.0) @mysql_query("SET sql_mode='' ;", $this->linkID);
    return true;
    }
    //
    //获得错误描述
    //
    function GetError()
    {
    $str = ereg_replace("'|\"","`",mysql_error());
    return $str;
    }

    //
    //关闭数据库
    //
    function Close()
    {
    @mysql_close($this->linkID);
    $this->isClose = true;
    if(is_object($GLOBALS['dsql'])){ $GLOBALS['dsql']->isClose = true; }
    $this->FreeResultAll();
    }


    //
    //执行一个不返回结果的SQL语句,如update,delete,insert等
    //
    function ExecuteNoneQuery($sql="")
    {
    global $dsql;
    if($dsql->isClose){
    $this->Open(false);
    $dsql->isClose = false;
    }
    if($sql!="") $this->SetQuery($sql);
    if(is_array($this->parameters)){
    foreach($this->parameters as $key=>$value){
    $this->queryString = str_replace("@".$key,"'$value'",$this->queryString);
    }
    }
    return mysql_query($this->queryString,$this->linkID);
    }
    //
    //执行一个返回影响记录条数的SQL语句,如update,delete,insert等
    //
    function ExecuteNoneQuery2($sql="")
    {
    global $dsql;
    if($dsql->isClose){
    $this->Open(false);
    $dsql->isClose = false;
    }
    if($sql!="") $this->SetQuery($sql);
    if(is_array($this->parameters)){
    foreach($this->parameters as $key=>$value){
    $this->queryString = str_replace("@".$key,"'$value'",$this->queryString);
    }
    }
    mysql_query($this->queryString,$this->linkID);
    return mysql_affected_rows($this->linkID);
    }
    function ExecNoneQuery($sql="")
    {
    return $this->ExecuteNoneQuery($sql);
    }
    //
    //执行一个带返回结果的SQL语句,如SELECT,SHOW等
    //
    function Execute($id="me",$sql="")
    {
    global $dsql;
    if($dsql->isClose){
    $this->Open(false);
    $dsql->isClose = false;
    }
    if($sql!="") $this->SetQuery($sql);
    $this->result[$id] = @mysql_query($this->queryString,$this->linkID);
    if(!$this->result[$id]){
    $this->DisplayError(mysql_error()." - Execute Query False! ".$this->queryString."");
    }
    }
    function Query($id="me",$sql="")
    {
    $this->Execute($id,$sql);
    }
    //
    //执行一个SQL语句,返回前一条记录或仅返回一条记录
    //
    function GetOne($sql="",$acctype=MYSQL_BOTH)
    {
    global $dsql;
    if($dsql->isClose){
    $this->Open(false);
    $dsql->isClose = false;
    }
    if($sql!=""){
    if(!eregi("limit",$sql)) $this->SetQuery(eregi_replace("[,;]$","",trim($sql))." limit 0,1;");
    else $this->SetQuery($sql);
    }
    $this->Execute("one");
    $arr = $this->GetArray("one",$acctype);
    if(!is_array($arr)) return("");
    else { @mysql_free_result($this->result["one"]); return($arr);}

    }
    //
    //执行一个不与任何表名有关的SQL语句,Create等
    //
    function ExecuteSafeQuery($sql,$id="me")
    {
    global $dsql;
    if($dsql->isClose){
    $this->Open(false);
    $dsql->isClose = false;
    }
    $this->result[$id] = @mysql_query($sql,$this->linkID);
    }
    //
    //返回当前的一条记录并把游标移向下一记录
    // MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH
    //
    function GetArray($id="me",$acctype=MYSQL_BOTH)
    {
    if($this->result[$id]==0) return false;
    else return mysql_fetch_array($this->result[$id],$acctype);
    }
    function GetObject($id="me")
    {
    if($this->result[$id]==0) return false;
    else return mysql_fetch_object($this->result[$id]);
    }
    //
    //检测是否存在某数据表
    //
    function IsTable($tbname)
    {
    $this->result[0] = mysql_list_tables($this->dbName,$this->linkID);
    while ($row = mysql_fetch_array($this->result[0]))
    {
    if(strtolower($row[0])==strtolower($tbname))
    {
    mysql_freeresult($this->result[0]);
    return true;
    }
    }
    mysql_freeresult($this->result[0]);
    return false;
    }
    //
    //获得MySql的版本号
    //
    function GetVersion()
    {
    global $dsql;
    if($dsql->isClose){
    $this->Open(false);
    $dsql->isClose = false;
    }
    $rs = mysql_query("SELECT VERSION();",$this->linkID);
    $row = mysql_fetch_array($rs);
    $mysql_version = $row[0];
    mysql_free_result($rs);
    return $mysql_version;
    }
    //
    //获取特定表的信息
    //
    function GetTableFields($tbname,$id="me")
    {
    $this->result[$id] = mysql_list_fields($this->dbName,$tbname,$this->linkID);
    }
    //
    //获取字段详细信息
    //
    function GetFieldObject($id="me")
    {
    return mysql_fetch_field($this->result[$id]);
    }
    //
    //获得查询的总记录数
    //
    function GetTotalRow($id="me")
    {
    if($this->result[$id]==0) return -1;
    else return mysql_num_rows($this->result[$id]);
    }
    //
    //获取上一步INSERT操作产生的ID
    //
    function GetLastID()
    {
    //如果 AUTO_INCREMENT 的列的类型是 BIGINT,则 mysql_insert_id() 返回的值将不正确。
    //可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID() 来替代。
    //$rs = mysql_query("Select LAST_INSERT_ID() as lid",$this->linkID);
    //$row = mysql_fetch_array($rs);
    //return $row["lid"];
    return mysql_insert_id($this->linkID);
    }
    //
    //释放记录集占用的资源
    //
    function FreeResult($id="me")
    {
    @mysql_free_result($this->result[$id]);
    }
    function FreeResultAll()
    {
    if(!is_array($this->result)) return "";
    foreach($this->result as $kk => $vv){
    if($vv) @mysql_free_result($vv);
    }
    }
    //
    //设置SQL语句,会自动把SQL语句里的#@__替换为$this->dbPrefix(在配置文件中为$cfg_dbprefix)
    //
    function SetQuery($sql)
    {
    $prefix="#@__";
    $sql = str_replace($prefix,$this->dbPrefix,$sql);
    $this->queryString = $sql;
    }
    function SetSql($sql)
    {
    $this->SetQuery($sql);
    }
    //
    //显示数据链接错误信息
    //
    function DisplayError($msg)
    {
    echo "\r\n";
    echo "\r\n";
    echo "\r\n";
    echo "DedeCms Error Track\r\n";
    echo "\r\n";
    echo "\r\n

    \r\n";
    echo $msg;
    echo "

    ";
    echo "

    \r\n\r\n";
    echo "";
    //$this->Close();
    //exit();
    }
    }