今天发现一个zen cart 网站后台订单详细信息里面不显示地址信息,检查发现在下单第一步checkout_shipping的时候就没有显示客户信息和地址信息,分析发现
输出都有值,所以错误就是在函数执行的过程中产生的了:echo zen_address_label($_SESSION['customer_id'], $_SESSION['sendto'], true, ‘ ‘, ‘
’); ?>也就是说这个函数执行完没有返回有效值。
在functions_customers.php里面找到该函数zen_address_label();分析发现:这个函数调用了另外的函数, 而这个文件熟zen cart自带的没有修改过,所以程序不会有问题,从而得知,肯定是数据库有问题了,检查函数程序发现:需要查询2个表的数 据,TABLE_ADDRESS_BOOK和TABLE_ADDRESS_FORMAT,进入数据库检查这个2个表的内容,就会发 现:TABLE_ADDRESS_FORMAT这个表因为某些位置原因丢失了数据,变成了空表,从而使函数无法输出有效值。
解决方法:找到一个正常网站,将TABLE_ADDRESS_FORMAT(zen_address_format)表的数据导出来导入该站的这个表就可以很好的解决这个问题。这只是其中一种比较常见的错误情况。当然具体的问题要具体分析来解决。
以下是TABLE_ADDRESS_FORMAT(zen_address_format)表的数据的SQL语句,进入数据库或者后台执行:INSERT INTO `zen_address_format` (`address_format_id`, `address_format`, `address_summary`) VALUES
(1, ‘$firstname $lastname$cr$streets$cr$city, $postcode$cr$statecomma$country’, ‘$city / $country’),
(2, ‘$firstname $lastname$cr$streets$cr$city, $state $postcode$cr$country’, ‘$city, $state / $country’),
(3, ‘$firstname $lastname$cr$streets$cr$city$cr$postcode – $statecomma$country’, ‘$state / $country’),
(4, ‘$firstname $lastname$cr$streets$cr$city ($postcode)$cr$country’, ‘$postcode / $country’),
(5, ‘$firstname $lastname$cr$streets$cr$postcode $city$cr$country’, ‘$city / $country’),
(6, ‘$firstname $lastname$cr$streets$cr$city$cr$state$cr$postcode$cr$country’, ‘$postcode / $country’);注意:后台执行请去掉TABLE_ADDRESS_FORMAT(zen_address_format)表的前缀’zen_’。