ecshop分类树显示所有分类的解决方法(ECShop性能测试)
发布时间:2023-04-07 01:23:30
文章来源:快乐收录网
访问次数:
解决方法如下:
比如在goods.php里, 代码如下 复制代码 $smarty->assign(categories, get_categories_tree()); // 分类树大概在128行。找下就有了
将
代码如下 复制代码 $smarty->assign(categories, get_categories_tree($goods[cat_id]));
改为
代码如下 复制代码 $smarty->assign(categories, get_categories_tree());主要就是把goods[cat_id]或得的ID去掉就可以了!
之后清缓存再看下前台,是不是已经变化了呢
注:到这里只解决了一半,还要在category.php进行一样的操作,这样在分类页也显示所有分类了。
还有更简单的办法就是修改 get_categories_tree 函数,是水神提醒我的。修改如下:
代码如下 复制代码 if ($cat_id > 0)
{
$sql = SELECT parent_id FROM . $GLOBALS[ecs]->table(category) . " WHERE cat_id = $cat_id";
$parent_id = $GLOBALS[db]->getOne($sql);
}
else
{
$parent_id = 0;
}找到这段判断语句,注释掉,再加上
// 添加设置,读出所以分类
$parent_id = 0; php + mssql 让真让人痛苦。这些读 php 读 mssql 的 ntext 字段类型问题又来了:当 ntext 的内容过长时,居然读不完整。在网上找了很久,都是说 php 读 ntext 出错的,但没发现我的页面出错,就郁闷了。后来才查到是说 php 默认最大只能读 4K 的内容,原来是我的内容超过了 4K。修改方法如
下:
1、把 php 升级到 php5 。
还好,我的已经是 php5 了。
2、调整 php.ini 的参数,把 php 默认最大只能读 4K 改大一点。
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textlimit = 4096; Valid range 0 - 2147483647. Default = 4096.
;mssql.textsize = 20480把 mssql.textlimit 和 mssql.textsize 前面的“;“去了,再把默认值勤改大一点,比如 20480 (20K)
3、重启 web 服务器。
本以为激动人心的时刻会来临,运行 php 页面,效果还是跟以前一样,字段数据没有完全读出来。后来又找到资料说 php 对 ntext 的支持不是很友好,要转为 text。于是又用
Convert(text, content) 转了,无效果不说,还差一点把我的 iis 弄死。在网上找了很久都无解。就在我打算放弃时,一个尝试的概念让我把数据库连接方式改了一下。我把
odbc_connect 改为 mssql_connect 居然就成功了。
php 链接mssql问题 ntext不能读取
明明可以链接到数据库,却不能读取的数据。Google,百度一番之后终于知道了,原来是php读取mssql的 ntext字段反回值为空的,建议可以把ntext字段改成 text。
如果是表里面没有ntext字段,可以用以下代码:
代码如下 复制代码// Connect to MSSQL
$link = mssql_connect(‘KALLESPCSQLEXPRESS’, ‘sa’, ‘phpfi’);
if(!$link !mssql_select_db(‘php’, $link))
{
die(‘Unable to connect or select database!’);
}
// Do a simple query, select the version of
// MSSQL and print it.
$version = mssql_query(‘SELECT @@VERSION’);
$row = mssql_fetch_array($version);
echo $row[0];
// Clean up
mssql_free_result($version);
?》
如果表里面有ntext军字段,且不好修改回text字段, 可以如下:
1.修改 php.ini
打开php.ini
找到:
;mssql.textlimit = 4096
改为
mssql.textlimit = 2147483647
找到:
;mssql.textsize = 4096
改为
mssql.textsize = 2147483647
2.可以使用修改字段,由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。
如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:
错的:
select title,content from article
正确的:
代码如下 复制代码 select convert(varchar(255),title) as title, convert(text,content) as content from article{这个方法不太实用,如果ntext内容 太长 转换之后会丢失数据,也就说过长的文章被截断了,而且在sql2008中 把ntext改成 nvarchar(max) 也不行}
3.如果你是虚拟主机,可以使用adodb 组件来读取。如果你主机不支持,目前笔者也没办法了。
代码如下 复制代码include(“adodb/adodb.inc.php”); //包含adodb类库文件
$conn=NewADOConnection(‘odbc_mssql’); //连接SQL Server数据库
$conn-》Connect(“Driver={SQL Server};Server=localhost;Database=mydb;”,‘username’,‘password’);
{使用adodb有一点要注意,使用adodbPHP连MSSQL的前提是驱动问题,5.2.10之前,PHP自带的驱动只支持MSSQL 7.0,如果要支持MSSQL 2000,需要将MSSQL 2000的ntwdblib.dll(2000.80.2039.0)复制到System32或者PHP目录下
5.2.11才支持MSSQL 2000,如果需要支持MSSQL 2005和2008,需要安装微软提供的驱动所以如果是虚拟主机基本没办法
}
?>
读取mssql的ntext字段反回空置
在测试的时候明明可以链接到数据库,但是怎么也读取不到数据。经过查找资料发现原来是php读取mssql的 ntext字段反回值为空的,建议可以把ntext字段改成 text。
如果是表里面没有ntext字段,可以用以下代码:
代码如下 复制代码// Connect to MSSQL
$link = mssql_connect(KALLESPCSQLEXPRESS, sa, phpfi);if(!$link !mssql_select_db(php, $link))
{
die(Unable to connect or select database!);
}// Do a simple query, select the version of
// MSSQL and print it.
$version = mssql_query(SELECT @@VERSION);
$row = mssql_fetch_array($version);echo $row[0];
// Clean up
mssql_free_result($version);
?>
如果表里面有ntext军字段,且不好修改回text字段, 可以如下:
1.修改 php.ini
打开php.ini
找到:
;mssql.textlimit = 4096
改为
mssql.textlimit = 2147483647
找到:
;mssql.textsize = 4096
改为
mssql.textsize = 2147483647
2.可以使用修改字段,由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。
如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:
错的:
select title,content from article
正确的:
代码如下 复制代码 select convert(varchar(255),title) as title, convert(text,content) as content from article3.如果你是虚拟主机,可以使用adodb 组件来读取。如果你主机不支持,目前笔者也没办法了。
代码如下 复制代码 include("adodb/adodb.inc.php"); //包含adodb类库文件
$conn=NewADOConnection(odbc_mssql); //连接SQL Server数据库
$conn->Connect("Driver={SQL Server};Server=localhost;Database=mydb;",username,password);
?> 经过一时间的 php + mssql,感觉 mssql 对编码的支持不是很好(其实还是自己没有把握好啦),但是又还没有来得急换数据库,只能将就点,今天又在提交数据时出现了错误。经过一时间的 php + mssql,感觉 mssql 对编码的支持不是很好(其实还是自己没有把握好啦),但是又还没有来得急换数据库,只能将就点,今天又在提交数据时出现了错误。
由于提交的 ntext 字段的内容比较多,大约有 220 KB,所以造成了我的误解,以为是文章太长而引起的错误。我一看 php 配置,发现 php 对 mssql.textsize 的支持已经在 400 K了,怎么还出错?开启错误后才发现,原来不是文章太长,而是编码引起的错误。错误如下:
代码如下 复制代码 Notice: iconv() [function.iconv]: Detected an illegal character in input string in...。英文实在太烂,只是知道 iconv() 函数出问题。google 翻译,说是输入字符串中检测到非法字符。恍然大悟。
根据错误提示到网上找到问题的解决办法,就是在 iconv() 的第二个参数加个 //IGNORE ,就是忽略错误的意思。代码如下:
代码如下 复制代码 iconv("utf-8", "gbk//IGNORE", $str);测试,提交成功。
注:网友经验,gbk 的范围比 gb2313 大,所以用 gbk 编码的出错率比 gb2313 小。
CKEditor+CKFinder+php上传文件配置方法 ,新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder。这里主要记录CKFinder上传的一些参数配置,能够成功上传文件,自定义上传文件目录,按日期+随机字符重命名文件。新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder。这里主要记录CKFinder上传的一些参数配置,能够成功上传文件,自定义上传文件目录,按日期+随机字符重命名文件。
1、下载CKFinder。
下载CKFinder,解压跟CKEditor放同一目录,下载地址:http://ckfinder.com/2、开启上传功能。
打开ckfinder\config.php文件,找到函数CheckAuthentication(),大约在21行,将最后一行return false;改为return true;3、自定义上传文件目录。
打开ckfinder\config.php文件,设置变量$baseUrl = https://www.zhuxianfei.com/upload/;,大约在63行。4、设置按日期生成上传子目录。
如果您的网站上传文件比较多,文件都在一个目录下的话,对文件性能可能不是很思想,这时我们按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、按日期+随机字符重命名上传文件。
这样可以支持中文名字的文件上传。打开ckfinder\core\connector\php\php5\CommandHandler\FileUpload.php文件,在文件最后加个生成文件名函数 代码如下 复制代码function mySetFileName() {
$gettime = explode( , microtime());
$string = abcdefghijklmnopgrstuvwxyz0123456789;
$rand = ;for ($x = 0; $x < 5; $x++) {
$rand .= substr($string, mt_rand(0, strlen($string) - 1), 1);
}return date("ymdHis") . substr($gettime[0], 2, 6) . $rand;
}查找下面代码,大约在63行,
代码如下 复制代码 if ($sFileName != $sUnsafeFileName) {
$iErrorNumber = CKFINDER_CONNECTOR_ERROR_UPLOADED_INVALID_NAME_RENAMED;
}在下方添加下面代码,
代码如下 复制代码 $sExtension = CKFinder_Connector_Utils_FileSystem::getExtension($sFileName);
$sFileName = mySetFileName() . . . $sExtension; mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。 不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。
mb_convert_encoding的用法见官方:
mb_convert_encoding — Convert character encoding
Report a bug 说明
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
Converts the character encoding of string str to to_encoding from optionally from_encoding.Report a bug 参数
str
The string being encoded.to_encoding
The type of encoding that str is being converted to.from_encoding
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.
Report a bug 返回值
The encoded string.Report a bug 范例
Example #1 mb_convert_encoding() example
代码如下 复制代码/* Convert internal character encoding to SJIS */
$str = mb_convert_encoding($str, "SJIS");/* Convert EUC-JP to UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");/* "auto" is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
$str = mb_convert_encoding($str, "EUC-JP", "auto");
?>mb_convert_encoding( $str, $encoding1,$encoding2 )
$str,要转换编码的字符串
$encoding1,目标编码,如utf-8,gbk,大小写均可
$encoding2,原编码,如utf-8,gbk,大小写均可实例1
代码如下 复制代码
《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转载请注明标签:
- 1华为 Nova 10 和 Nova 10 Pro 配备 120 Hz OLED 显示屏
- 2Realme GT2 Master Explorer Edition设计随着高端智能手机发布之旅的开始而揭晓
- 3Wi-Fi 7 技术将支持 40Gbps 的速度
- 4小米 11T 和 11T Pro 配备相同的 108 MP 摄像头
- 5Garmin Forerunner 955 系列收到软件版本 11.12
- 6到 2026 年翻新智能手机市场的价值预计将增长近 460 亿美元
- 7小米发布 Band 7 Pro 固件更新 进行各种改进和优化
- 8苹果最新的MacBook Air产品将影响 Wintel 笔记本电脑的销售
- 9戴尔 Precision 7770 和 7670 现在可与英特尔第 12 代博锐 CPU 和 Nvidia RTX A5500 显卡一起购买
- 10System76 使用 Intel Alder Lake-U 处理器升级其基于 Linux 的 Lemur Pro 笔记本电脑
- 11苹果计划在今年发布标准 Watch Series 更新的替代品
- 12OnePlus的10T发布了新旗舰智能手机发布前的最高AnTuTu分数
- 13摩托罗拉 Edge 30:搭载 Android 12 的超薄中端智能手机
- 14小米 12智能手机相机是如何拍摄的
- 15NintendoSwitchOnline下周将获得被低估的神奇宝贝经典
- 16MUJI x Honda MS01 电动自行车透露最高时速 25 公里和无钥匙解锁功能
- 17Infinix 最新 Note 12 系列智能手机升级至 5G 起价低于 200 美元
- 18Amazfit 正在举行 2022 年年中的促销活动
- 19AMD 的 RDNA 3 Chiplet 专利详述了尖端着色器优化架构