文档章节

三级联动及优化

o
 osc_4nmshwhm
发布于 2018/08/07 08:43
字数 469
阅读 13
收藏 0

精选30+云产品,助力企业轻松上云!>>>

  今天我们通过 Memcache 优化三级联动

  第一步 , 我们需要建立一个数据库 test , 数据库中有一个表 region,

  第二步 , 写代码

   下面数据库请求的过程  index.php

<?php
    // 数据库连接
    $mysqli = new mysqli("127.0.0.1","root","","test");
    // 设置编码方式
    $mysqli->set_charset("utf8");
    // 逻辑控制语句
    $pid = isset($_GET["pid"]) ? $_GET['pid'] : 0;
    // 实例化  Memcache优化
    $mem = new Memcache();
    $mem->connect("127.0.0.1",11211);
    $allarea = $mem->get("area_" .$pid);
    if (empty($allarea)) {
        // 查询数据 
        $sql = "select * from region where pid=" . $pid;
        // 发送sql语句
        $result = mysqli_query($mysqli,$sql);
        // 处理查询结果
        while($area = mysqli_fetch_assoc($result)){
            $allarea[] = $area;
        };
        // 将查询到的数据放到memcache中
        $mem->set("area_".$pid,$allarea);
    }
    if ($pid) {
        exit(json_encode($allarea));
    }
    include("area.html");
?>

     area.html 中的内容

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>三级联动</title>
    <link rel="stylesheet" href="">
</head>
<body>
    <div class="choose">
        <label>省份</label>
        <select class="select" id="province" next-level="city">
            <option value="">请选择</option>
            <?php foreach($allarea as $val) {?>
            <option value="<?php echo $val['id'] ?>"><?php echo $val['name']; ?></option>}
            <?php } ?>
        </select>
        <label>地市</label>
        <select class="select" id="city" next-level="area">
            <option value="">请选择</option>
        </select>
        <label>区县</label>
        <select id="area">
            <option value="">请选择</option>
        </select>
    </div>
</body>
</html>
<script src="js/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8">
    $(".select").change(function() {
        var nextlevel = $(this).attr("next-level");
        var val = $(this).val();
        if (val == "") {
            return false;
        }
        // 发起ajax请求
        $.ajax({
            url:"index.php", // 请求服务器的地址
            type:"get",    
            data:{pid:val},        // 提交的数据
            dataType:"JSON",     // 预期返回的数据格式
            success:function(res){ // 请求成功后的函数
                // console.log(res);
                // var optionhtml = '<option value="">请选择</option>';
                var optionhtml = '';
                // 循环 each 
                $.each(res,function(key,val){
                    optionhtml += '<option value="'+val.id+'">'+val.name+'</option>'
                })
                
                // html 会覆盖前面的内容
                // $(".select:eq(1)").html(optionhtml);

                //  append 追加 再追加之前先删除除了第一个以外的前面的内容
                $("#" +nextlevel+ " option:not(:first)").remove();
                $("#" +nextlevel).append(optionhtml);
            }
        })
    });    
</script>

    使用Memcache临时性键值储存,减轻了mysql数据库的负担,减少了ajax的请求,同时也要注意memcache与mqsql 之间并不是对立的, 而是互补的关系.

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
PyQt5--基础篇:用eric6工具实现三级联动效果

今天给大家介绍下python gui界面的三级联动效果,我们用工具eric6来实现,先看下效果图。 首先我们先创建项目linkage,再新建窗体进入到Qt设计师工具开始设计界面,完成后保存并退出。 在eri...

osc_t5zhwnvx
2018/04/11
9
0
PESCMS Ticket 客服工单系统 v1.2.4 发布

我们很高兴地宣布PESCMS Ticket v1.2.4 的到来。此版本带来了国内四级地址联动,优化和修复了不少问题。 新功能 地区四级联动 作为一款客服工单系统,地区选择功能是不可或缺的。在引入之初,...

金拱门
2019/04/09
1.3K
0
解决需求中的 三级联动

解决需求中的 三级联动 什么是三级联动 所谓三级,即使三个级别,联动代表这三个级别相互依赖与嵌套,唯有这样才能实现三级联动; 在平时生活中,网上填一些表格时就可以预见到,例如:某某省...

osc_ehtwxifo
04/16
5
0
优化省市县三级联动(查询数据库)

javaWeb项目,页面实现省市县三级联动。 想到三种方法: 1.查询出所有省并显示,选择省或市,利用ajax从后台查询出对应数据,再显示。 2.查询出所有省市县,数据隐藏到页面,jquery实现联动显...

田野_7
2016/05/30
1.8K
6
如何通过手机号初始化所属地区

在用户系统中常常会需要用户绑定手机号、填写联系地址,而一旦表单一多,就会让用户感觉异常繁琐,注册的门坎也就上升。这时候一个贴心的细节优化就会很好地改善用户体验,让用户眼前一亮。那...

一个路人甲
2016/11/15
725
2

没有更多内容

加载失败,请刷新页面

加载更多

asp.net core之NLog

NuGet添加 NLog.Web.AspNetCore。 <PackageReference Include="Microsoft.AspNetCore.App" /> 添加配置文件 新建一个文件nlog.config(建议全部小写,linux系统中要注意), 并右键点击其属性......

一介草民Coder
28分钟前
23
0
.NET中的struct和class有什么区别? - What's the difference between struct and class in .NET?

问题: .NET中的struct和class有什么区别? 解决方案: 参考一: https://stackoom.com/question/3OT/NET中的struct和class有什么区别 参考二: https://oldbug.net/q/3OT/What-s-the-differ...

富含淀粉
今天
23
0
android:layout_weight是什么意思? - What does android:layout_weight mean?

问题: I don't understand how to use this attribute. 我不明白如何使用这个属性。 Can anyone tell me more about it? 谁能告诉我更多关于它的事情? 解决方案: 参考一: https://stacko...

javail
今天
17
0
CSS背景不透明度[重复] - CSS Background Opacity [duplicate]

问题: This question already has an answer here: 这个问题已经在这里有了答案: How do I give text or an image a transparent background using CSS? 如何使用CSS为文本或图像提供透明背...

fyin1314
今天
31
0
node http 获取gb2312网页如何转为utf8

最初,我想当然认为是下述做法,但被证明是错误的 const http = require('http'), iconv = require('iconv-lite');const url = 'http://xxx';http.get(url, function(res) { var bo......

高延
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部