layui select PHP读取mysql数据库联动示例
layui select 联动示例,数据结构如下
思路:读取这个表的数据生成js数组(用json_encode将读取的数据转成json数组字符串),用js处理下数组的种类,品名成唯一的,给select添加change事件读取对应的数据,然后更新select的option后重新render下更新下UI。效果如下
data.php
<?php $db=mysqli_connect("localhost","root","123456","test"); $result=mysqli_query($db,"select * from protype",MYSQLI_USE_RESULT); $rs=mysqli_fetch_all($result,MYSQLI_ASSOC); mysqli_free_result($result); mysqli_close($db); $s=json_encode($rs); echo "var arrType=". $s; ?>
demo.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>layui select 联动示例</title> <link rel="stylesheet" href="../src/css/layui.css"> <style> body{padding: 10px;} </style> </head> <body> <form class="layui-form" method="get"> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">种类</label> <div class="layui-input-block"> <select id="sType"lay-filter="sType"> <option value="">请选择种类</option> </select> </div> </div> <div class="layui-inline"> <label class="layui-form-label">品名</label> <div class="layui-input-block"> <select id="sProType"lay-filter="sProType"> <option value="">请选择品名</option> </select> </div> </div> <div class="layui-inline"> <label class="layui-form-label">地区</label> <div class="layui-input-block"> <select id="sArea"lay-filter="sArea"> <option value="">请选地区</option> </select> </div> </div> </div> </form> <script src="../src/layui.js"></script> <!----注意改数据源路径----> <script src="data.php"></script> <script> /////////////数据源及构造级联数据结构 var kvType = {}; Array.from(new Set(arrType.map(i => i.种类))).forEach(种类 => { var 品名s = Array.from(new Set(arrType.filter(i => i.种类 == 种类).map(i => i.品名))).map(i => ({ 品名: i })); kvType[种类] = { }; 品名s.forEach(i => { kvType[种类][i.品名]= arrType.filter(x => x.种类 == 种类 && x.品名 == i.品名).map(i => i.地区); }); }); ///////////// layui.use(['form', 'layedit', 'laydate'], function(){ var form = layui.form, $ = layui.$, sType = $('#sType'), sProType = $('#sProType'), sArea = $('#sArea'); sType.append(Object.keys(kvType).map(i => `<option>${i}</option>`).join('')); form.on('select(sType)', function (data) { sProType[0].length = 1; if (data.value != '') sProType.append(Object.keys(kvType[data.value]).map(i => `<option>${i}</option>`).join('')); form.render('select'); }); form.on('select(sProType)', function (data) { sArea[0].length = 1; if (data.value != '') sArea.append(kvType[sType.val()][data.value].map(i => `<option>${i}</option>`).join('')); form.render('select'); }); form.render("select"); }); </script> </body> </html>
加支付宝好友偷能量挖...
原创文章,转载请注明出处:layui select PHP读取mysql数据库联动示例