位置:首页 > CMS教程 > cms教程汇总

ecshop分类树显示所有分类的解决方法(ECShop性能测试)

发布时间:2023-04-07 01:23:30

文章来源:快乐收录网

访问次数:

 

ecshop分类树显示所有分类的解决方法 有需要的朋友可参考一下本文章。

解决方法如下:VKJ快乐收录网

比如在goods.php里,  代码如下 复制代码  $smarty->assign(categories,         get_categories_tree());  // 分类树

大概在128行。找下就有了VKJ快乐收录网

VKJ快乐收录网

代码如下 复制代码 $smarty->assign(categories, get_categories_tree($goods[cat_id]));VKJ快乐收录网

改为VKJ快乐收录网

代码如下 复制代码 $smarty->assign(categories, get_categories_tree());

主要就是把goods[cat_id]或得的ID去掉就可以了!VKJ快乐收录网

之后清缓存再看下前台,是不是已经变化了呢VKJ快乐收录网

注:到这里只解决了一半,还要在category.php进行一样的操作,这样在分类页也显示所有分类了。VKJ快乐收录网

还有更简单的办法就是修改 get_categories_tree 函数,是水神提醒我的。修改如下:VKJ快乐收录网

 代码如下 复制代码     if ($cat_id > 0)VKJ快乐收录网

    {VKJ快乐收录网

$sql = SELECT parent_id FROM . $GLOBALS[ecs]->table(category) . " WHERE cat_id = $cat_id";VKJ快乐收录网

        $parent_id = $GLOBALS[db]->getOne($sql);VKJ快乐收录网

    }VKJ快乐收录网

elseVKJ快乐收录网

    {VKJ快乐收录网

        $parent_id = 0;VKJ快乐收录网

    }

找到这段判断语句,注释掉,再加上VKJ快乐收录网

    // 添加设置,读出所以分类VKJ快乐收录网

$parent_id = 0; php + mssql 让真让人痛苦。这些读 php 读 mssql 的 ntext 字段类型问题又来了:当 ntext 的内容过长时,居然读不完整。

在网上找了很久,都是说 php 读 ntext 出错的,但没发现我的页面出错,就郁闷了。后来才查到是说 php 默认最大只能读 4K 的内容,原来是我的内容超过了 4K。修改方法如VKJ快乐收录网

下:VKJ快乐收录网

1、把 php 升级到 php5 。VKJ快乐收录网

    还好,我的已经是 php5 了。VKJ快乐收录网

2、调整 php.ini 的参数,把 php 默认最大只能读 4K 改大一点。VKJ快乐收录网

    ; Valid range 0 - 2147483647.  Default = 4096.VKJ快乐收录网

    ;mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.VKJ快乐收录网

    ;mssql.textsize = 20480

把 mssql.textlimit  和 mssql.textsize 前面的“;“去了,再把默认值勤改大一点,比如 20480 (20K)VKJ快乐收录网

3、重启 web 服务器。VKJ快乐收录网

本以为激动人心的时刻会来临,运行 php 页面,效果还是跟以前一样,字段数据没有完全读出来。后来又找到资料说 php 对 ntext 的支持不是很友好,要转为 text。于是又用VKJ快乐收录网

Convert(text, content) 转了,无效果不说,还差一点把我的 iis 弄死。在网上找了很久都无解。就在我打算放弃时,一个尝试的概念让我把数据库连接方式改了一下。我把VKJ快乐收录网

odbc_connect 改为 mssql_connect 居然就成功了。VKJ快乐收录网

php 链接mssql问题 ntext不能读取VKJ快乐收录网

明明可以链接到数据库,却不能读取的数据。Google,百度一番之后终于知道了,原来是php读取mssql的 ntext字段反回值为空的,建议可以把ntext字段改成 text。VKJ快乐收录网

如果是表里面没有ntext字段,可以用以下代码:VKJ快乐收录网

代码如下 复制代码

// Connect to MSSQLVKJ快乐收录网

$link = mssql_connect(‘KALLESPCSQLEXPRESS’, ‘sa’, ‘phpfi’);VKJ快乐收录网

if(!$link    !mssql_select_db(‘php’, $link))VKJ快乐收录网

{VKJ快乐收录网

die(‘Unable to connect or select database!’);VKJ快乐收录网

}VKJ快乐收录网

// Do a simple query, select the version ofVKJ快乐收录网

// MSSQL and print it.VKJ快乐收录网

$version = mssql_query(‘SELECT @@VERSION’);VKJ快乐收录网

$row = mssql_fetch_array($version);VKJ快乐收录网

echo $row[0];VKJ快乐收录网

// Clean upVKJ快乐收录网

mssql_free_result($version);VKJ快乐收录网

?》VKJ快乐收录网

如果表里面有ntext军字段,且不好修改回text字段, 可以如下:VKJ快乐收录网

1.修改 php.iniVKJ快乐收录网

打开php.iniVKJ快乐收录网

找到:VKJ快乐收录网

;mssql.textlimit = 4096VKJ快乐收录网

改为VKJ快乐收录网

mssql.textlimit = 2147483647VKJ快乐收录网

找到:VKJ快乐收录网

;mssql.textsize = 4096VKJ快乐收录网

改为VKJ快乐收录网

mssql.textsize = 2147483647VKJ快乐收录网

2.可以使用修改字段,由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。VKJ快乐收录网

如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:VKJ快乐收录网

错的:VKJ快乐收录网

select title,content from articleVKJ快乐收录网

正确的:VKJ快乐收录网

代码如下 复制代码 select convert(varchar(255),title) as title, convert(text,content) as content from article

{这个方法不太实用,如果ntext内容 太长 转换之后会丢失数据,也就说过长的文章被截断了,而且在sql2008中 把ntext改成 nvarchar(max) 也不行}VKJ快乐收录网

3.如果你是虚拟主机,可以使用adodb 组件来读取。如果你主机不支持,目前笔者也没办法了。VKJ快乐收录网

代码如下 复制代码

include(“adodb/adodb.inc.php”); //包含adodb类库文件VKJ快乐收录网

$conn=NewADOConnection(‘odbc_mssql’); //连接SQL Server数据库VKJ快乐收录网

$conn-》Connect(“Driver={SQL Server};Server=localhost;Database=mydb;”,‘username’,‘password’);VKJ快乐收录网

{使用adodb有一点要注意,使用adodbPHP连MSSQL的前提是驱动问题,5.2.10之前,PHP自带的驱动只支持MSSQL 7.0,如果要支持MSSQL 2000,需要将MSSQL 2000的ntwdblib.dll(2000.80.2039.0)复制到System32或者PHP目录下VKJ快乐收录网

5.2.11才支持MSSQL 2000,如果需要支持MSSQL 2005和2008,需要安装微软提供的驱动

所以如果是虚拟主机基本没办法VKJ快乐收录网

}VKJ快乐收录网

?>VKJ快乐收录网

读取mssql的ntext字段反回空置VKJ快乐收录网

在测试的时候明明可以链接到数据库,但是怎么也读取不到数据。经过查找资料发现原来是php读取mssql的 ntext字段反回值为空的,建议可以把ntext字段改成 text。VKJ快乐收录网

如果是表里面没有ntext字段,可以用以下代码:VKJ快乐收录网

 代码如下 复制代码

// Connect to MSSQL VKJ快乐收录网

$link = mssql_connect(KALLESPCSQLEXPRESS, sa, phpfi);

if(!$link    !mssql_select_db(php, $link)) VKJ快乐收录网

{ VKJ快乐收录网

die(Unable to connect or select database!);VKJ快乐收录网

}

// Do a simple query, select the version of VKJ快乐收录网

// MSSQL and print it. VKJ快乐收录网

$version = mssql_query(SELECT @@VERSION);VKJ快乐收录网

$row = mssql_fetch_array($version);

echo $row[0];VKJ快乐收录网

// Clean up VKJ快乐收录网

mssql_free_result($version);VKJ快乐收录网

?> VKJ快乐收录网

 

如果表里面有ntext军字段,且不好修改回text字段, 可以如下:VKJ快乐收录网

1.修改 php.iniVKJ快乐收录网

打开php.iniVKJ快乐收录网

找到:VKJ快乐收录网

;mssql.textlimit = 4096 VKJ快乐收录网

改为VKJ快乐收录网

mssql.textlimit = 2147483647VKJ快乐收录网

找到:VKJ快乐收录网

;mssql.textsize = 4096 VKJ快乐收录网

改为VKJ快乐收录网

mssql.textsize = 2147483647VKJ快乐收录网

2.可以使用修改字段,由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。VKJ快乐收录网

如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:VKJ快乐收录网

错的:VKJ快乐收录网

select title,content from articleVKJ快乐收录网

正确的:VKJ快乐收录网

代码如下 复制代码 select convert(varchar(255),title) as title, convert(text,content) as content from article

3.如果你是虚拟主机,可以使用adodb 组件来读取。如果你主机不支持,目前笔者也没办法了。VKJ快乐收录网

代码如下 复制代码 include("adodb/adodb.inc.php"); //包含adodb类库文件VKJ快乐收录网

$conn=NewADOConnection(odbc_mssql); //连接SQL Server数据库 VKJ快乐收录网

$conn->Connect("Driver={SQL Server};Server=localhost;Database=mydb;",username,password);VKJ快乐收录网

?> 经过一时间的 php + mssql,感觉 mssql 对编码的支持不是很好(其实还是自己没有把握好啦),但是又还没有来得急换数据库,只能将就点,今天又在提交数据时出现了错误。

经过一时间的 php + mssql,感觉 mssql 对编码的支持不是很好(其实还是自己没有把握好啦),但是又还没有来得急换数据库,只能将就点,今天又在提交数据时出现了错误。VKJ快乐收录网

由于提交的 ntext 字段的内容比较多,大约有 220 KB,所以造成了我的误解,以为是文章太长而引起的错误。我一看 php 配置,发现  php 对 mssql.textsize 的支持已经在 400 K了,怎么还出错?开启错误后才发现,原来不是文章太长,而是编码引起的错误。错误如下:VKJ快乐收录网

代码如下 复制代码 Notice: iconv() [function.iconv]: Detected an illegal character in input string in...。

 英文实在太烂,只是知道 iconv() 函数出问题。google 翻译,说是输入字符串中检测到非法字符。恍然大悟。VKJ快乐收录网

根据错误提示到网上找到问题的解决办法,就是在 iconv() 的第二个参数加个 //IGNORE ,就是忽略错误的意思。代码如下:VKJ快乐收录网

 代码如下 复制代码 iconv("utf-8", "gbk//IGNORE", $str);

测试,提交成功。VKJ快乐收录网

注:网友经验,gbk 的范围比 gb2313 大,所以用 gbk 编码的出错率比 gb2313 小。VKJ快乐收录网

CKEditor+CKFinder+php上传文件配置方法 ,新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder。这里主要记录CKFinder上传的一些参数配置,能够成功上传文件,自定义上传文件目录,按日期+随机字符重命名文件。

新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder。这里主要记录CKFinder上传的一些参数配置,能够成功上传文件,自定义上传文件目录,按日期+随机字符重命名文件。VKJ快乐收录网

1、下载CKFinder。VKJ快乐收录网

下载CKFinder,解压跟CKEditor放同一目录,下载地址:http://ckfinder.com/

2、开启上传功能。VKJ快乐收录网

打开ckfinder\config.php文件,找到函数CheckAuthentication(),大约在21行,将最后一行return false;改为return true;

3、自定义上传文件目录。VKJ快乐收录网

打开ckfinder\config.php文件,设置变量$baseUrl = https://www.zhuxianfei.com/upload/;,大约在63行。

4、设置按日期生成上传子目录。VKJ快乐收录网

如果您的网站上传文件比较多,文件都在一个目录下的话,对文件性能可能不是很思想,这时我们按https://www.zhuxianfei.com/upload/yyyy/mm/格式生成目录。打开 ckfinder\config.php文件,找到$config[ResourceType][],大约在189行,在 url => $baseUrl . files 和 directory => $baseDir . files 都加上  . / . date("Y") . / . date("m"),其它 Images,Flash项也是如此。这里的 url 表示上传后返回到输入框的地址,directory表示上传文件的目录。

5、按日期+随机字符重命名上传文件。VKJ快乐收录网

这样可以支持中文名字的文件上传。打开ckfinder\core\connector\php\php5\CommandHandler\FileUpload.php文件,在文件最后加个生成文件名函数  代码如下 复制代码

function mySetFileName() {VKJ快乐收录网

    $gettime = explode( , microtime());VKJ快乐收录网

$string = abcdefghijklmnopgrstuvwxyz0123456789;VKJ快乐收录网

    $rand = ;

    for ($x = 0; $x < 5; $x++) {VKJ快乐收录网

$rand .= substr($string, mt_rand(0, strlen($string) - 1), 1);VKJ快乐收录网

    }

    return date("ymdHis") . substr($gettime[0], 2, 6) . $rand;VKJ快乐收录网

}

查找下面代码,大约在63行,VKJ快乐收录网

代码如下 复制代码 if ($sFileName != $sUnsafeFileName) {VKJ快乐收录网

$iErrorNumber = CKFINDER_CONNECTOR_ERROR_UPLOADED_INVALID_NAME_RENAMED;VKJ快乐收录网

}

在下方添加下面代码,VKJ快乐收录网

代码如下 复制代码 $sExtension = CKFinder_Connector_Utils_FileSystem::getExtension($sFileName);VKJ快乐收录网

$sFileName = mySetFileName() . . . $sExtension; mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。 不过英文一般不会存在编码问题,只有中文数据才会有这个问题。

比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。VKJ快乐收录网

mb_convert_encoding的用法见官方:VKJ快乐收录网

mb_convert_encoding — Convert character encodingVKJ快乐收录网

Report a bug 说明VKJ快乐收录网

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )VKJ快乐收录网

Converts the character encoding of string str to to_encoding from optionally from_encoding.

Report a bug 参数VKJ快乐收录网

str VKJ快乐收录网

The string being encoded.

to_encoding VKJ快乐收录网

The type of encoding that str is being converted to.

from_encodingVKJ快乐收录网

Is specified by character code names before conversion. It is either an array, or a comma separated enumerated list. If from_encoding is not specified, the internal encoding will be used.

See supported encodings.VKJ快乐收录网

Report a bug 返回值VKJ快乐收录网

The encoded string.

Report a bug 范例VKJ快乐收录网

Example #1 mb_convert_encoding() exampleVKJ快乐收录网

 代码如下 复制代码

/* Convert internal character encoding to SJIS */VKJ快乐收录网

$str = mb_convert_encoding($str, "SJIS");

/* Convert EUC-JP to UTF-7 */VKJ快乐收录网

$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */VKJ快乐收录网

$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

/* "auto" is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS" */VKJ快乐收录网

$str = mb_convert_encoding($str, "EUC-JP", "auto");VKJ快乐收录网

?>

mb_convert_encoding( $str, $encoding1,$encoding2 )VKJ快乐收录网

$str,要转换编码的字符串 VKJ快乐收录网

$encoding1,目标编码,如utf-8,gbk,大小写均可 VKJ快乐收录网

$encoding2,原编码,如utf-8,gbk,大小写均可

实例1VKJ快乐收录网

代码如下 复制代码 VKJ快乐收录网

VKJ快乐收录网

  《ecshop分类树显示所有分类的解决方法(ECShop性能测试)》更新于时间:2023-04-07 01:23:30;由本站小编进行发布,目前浏览的小伙伴达到,感谢你们的支持,后期快乐收录网小编会继续为大家更新更多相关的文章,希望广大网友多多关注快乐收录网工作心得栏目,如果觉得本站不错,那就给我们一个分享的支持吧!

ecshop分类树显示所有分类的解决方法(ECShop性能测试)特别声明

本站快乐收录网提供的ecshop分类树显示所有分类的解决方法(ECShop性能测试)都来源于网络,不保证文章的准确性和真实性,同时,对于该文章所造成的影响,不由快乐收录网实际控制,在2023-04-07 01:23:30收录时,该网页上的内容,都属于合规合法,如有侵权违规,可以直接联系网站管理员进行整改或删除,快乐收录网不承担任何责任。

快乐收录网:致力于优质、实用的网络站点资源收集与分享!本文地址:https://nav.klxjz.cn/CMS/cmsjiaochenghuizong/92574.html转载请注明

标签: