zoukankan      html  css  js  c++  java
  • ECSHOP实现收货国家省市由选择下拉菜单改为手动

    ECSHOP实现收货国家省市由选择下拉菜单改为手动

    首先,ECSHOP默认的数据库中存储省市国家的表内容为数值型的数据,无法写入字符串。那就要先修改数据库的字段才行。运行如下SQL语句,将ecs_order_info表中的对应字段修改为字符串型:

    alter table  `ecs_order_info` modify province varchar(255) NOT NULL DEFAULT '';
    alter table  `ecs_order_info` modify city varchar(255) NOT NULL DEFAULT '';
    alter table  `ecs_order_info` modify district varchar(255) NOT NULL DEFAULT '';

    然后,同样的修改ecs_user_address表中的对应字段。

    alter table  `ecs_user_address` modify province varchar(255) NOT NULL DEFAULT '';
    alter table  `ecs_user_address` modify city varchar(255) NOT NULL DEFAULT '';
    alter table  `ecs_user_address` modify district varchar(255) NOT NULL DEFAULT '';

    进行完以上两步操作之后,我们就可以将ecshop中的国家、省份和城市改为手动输入文本框了。下面要修改的就是提交数据和读取数据的时候,所得到的值。

    默认的是通过去的省份的索引值然后到对应表中查询找到对应的省份并予以输出,那现在,我们就要直接读取这个值,并给予输出。首先在表单提交页:

    flow.php中,我们将保存收货人信息代码中的

    /*
             * 保存收货人信息
             */

    这一段下面的

    'district'      => empty($_POST['district'])   ? '' : intval($_POST['province'],

    改为

    'district'      => empty($_POST['district'])   ? '' : $_POST['province'],

    这样就实现了把省份去的的值直接写入数据库的目的,同样的,我们修改国家(这里将district改为国家)和城市,这样就把用户输入的值直接写入了数据库。

    然后我们需要修改用户中心的对应字段,同样的方法,也是把整数值 转换的函数去掉即可。我们还需要修改的页面就是在订单确认页面。那里的用户信息确认,同样需要我们来修改其中的显示方式。那方法很简单,只需要将 Consigee中的对应字段加入即可。比如我们把地址写成下面的样式:

    {$consignee.address|escape}, {$consignee.city}, {$consignee.province}, {$consignee.district}

    这样就可以从前面调用城市、省份、国家的信息了。

    最后我们还有一个地方需要修改,那就是网站的后台中的订单信息页面,这个页面同样需要按照前台的显示方式来修改,那找到admin/order.php,从其中找到

    /* 取得区域名 */

    这段代码,将下面的

     $sql = "SELECT concat(IFNULL(c.region_name, ''), '  ', IFNULL(p.region_name, ''), " .
                    "'  ', IFNULL(t.region_name, ''), '  ', IFNULL(d.region_name, '')) AS region " .
                "FROM " . $ecs->table('order_info') . " AS o " .
                    "LEFT JOIN " . $ecs->table('region') . " AS c ON o.country = c.region_id " .
                    "LEFT JOIN " . $ecs->table('region') . " AS p ON o.province = p.region_id " .
                    "LEFT JOIN " . $ecs->table('region') . " AS t ON o.city = t.region_id " .
                    "LEFT JOIN " . $ecs->table('region') . " AS d ON o.district = d.region_id " .
                "WHERE o.order_id = '$order[order_id]'";

    改为:

    $sql="SELECT concat(city, ' ', province, ' ', district) AS region " . "FROM ". $ecs->table('order_info') ."WHERE order_id = '$order[order_id]'";

    这样,就实现了直接显示从order_info表中读取来的地址信息了。

  • 相关阅读:
    linux ---用uniq实现文件的并集和交集
    vim的.vimrc文件设置
    CURL常用命令
    快速入门系列--MVC--03控制器和IOC应用
    linux下git安装
    openerp child_of操作符深度解析
    apache2 + virtualenv +djangocms
    django-cms安装
    pycharm3.4 下svn 项目checkout&配置
    在django项目外,使用django.db链接数据库(postgres)
  • 原文地址:https://www.cnblogs.com/jevil/p/3146350.html
Copyright © 2011-2022 走看看