Thinkphp 数组与字符串混合使用查询结果写法

本文探讨了在PHP中使用SQL进行复杂条件查询的方法,包括如何利用数组和字符串混合方式构建查询语句,实现高效的数据筛选。通过具体示例,展示了如何设置查询条件,特别是在学校标志字段中查找特定值的有效策略。
$where['name']=$name;
$where['_string'] = 'FIND_IN_SET('.$school_flag.',school_flag)';

数组与字符串混合使用,好用!

<!-- 保留你的原有DOM结构(后端模板部分) --> <div class="row m-t-5 pingwei-tag-list {if $info['select_pingwei_way'] != \app\common\enums\PingshenEnums::ASSIGN}hide{/if}"> <div class="col-md-2"> <label class="form-label">按标签筛选:</label> </div> <div class="col-md-10"> <div class="input-group mb-3"> <input type="text" class="form-control search-input" data-id="{$vo.id}" placeholder="请输入评委姓名..." aria-label="Search"> <button class="btn btn-outline search-btn" type="button"> <i class="fa fa-search"></i> 搜索 </button> </div> </div> </div> <div class="row assign-select-pingwei {if $info['select_pingwei_way'] != \app\common\enums\PingshenEnums::ASSIGN}hide{/if}"> <div class="col-md-2"> <label class="form-label"><span class="text-danger">*</span>选择评委:</label> </div> <div class="col-md-10"> <div id="pingwei-checkbox" class="selectgroup selectgroup-pills"> {volist name="pingwei" id="vo"} <div class="custom-control custom-checkbox custom-control-inline pingwei-item" data-name="{$vo.realname}" data-id="{$vo.id}"> <input type="checkbox" class="custom-control-input form-check-input pingwei-check-input" id="form-pingwei[{$vo.id}]" value="{$vo.id}" name="pingwei[]" {php} if(in_array($vo['id'] , $info['pingwei'])){ {/php} checked="checked" {php} } {/php} {php} if(in_array($vo['id'] , $disabledIds)){ {/php} disabled {php} } {/php} > <label class="custom-control-label" for="form-pingwei[{$vo.id}]" data-toggle="tooltip" style="cursor: pointer;" title="{$vo.realname}【{$vo.phone}】"> <i class="fa fa-user"></i>{$vo.realname} </label> </div> {/volist} </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function () { // ========== 修复1:兜底变量+类型校验 ========== // 确保selectedPingweiIds是数组(避免后端传字符串/空值) var selectedPingweiIds = window.selectedPingweiIds || []; if (!Array.isArray(selectedPingweiIds)) { selectedPingweiIds = []; console.warn('selectedPingweiIds不是数组,已重置为空数组'); } // ========== 修复2:提取评委数据+过滤异常项 ========== var pingweiList = Array.from(document.querySelectorAll('.pingwei-item')).map(item => { var checkbox = item.querySelector('input[type="checkbox"]'); // 过滤掉没有checkbox的异常项,避免后续报错 if (!checkbox) return null; return { id: checkbox.value || '', realname: (item.dataset.name || '').trim(), element: item, checkbox: checkbox }; }).filter(Boolean); // 移除null项 // ========== 修复3:初始化选中状态(兼容禁用项) ========== function initSelectedState() { pingweiList.forEach(item => { // 禁用的复选框不修改(保留后端初始状态),未禁用的按selectedPingweiIds更新 if (!item.checkbox.disabled) { item.checkbox.checked = selectedPingweiIds.includes(item.id); } }); console.log('初始化已选中评委:', selectedPingweiIds); } // ========== 修复4:搜索函数(变量名从pingwei改为pingweiList) ========== function searchPingwei(name) { var keyword = (name || '').trim().toLowerCase(); // 空关键词返回所有评委 if (!keyword) return pingweiList; // 模糊匹配姓名 return pingweiList.filter(item => { var itemName = (item.realname || '').trim().toLowerCase(); return itemName.includes(keyword); }); } // ========== 修复5:更新显示(兼容emptyTip+优化匹配逻辑) ========== function updatePingweiDisplay(matchList) { // 确保emptyTip存在(页面已新增,兜底避免null) let emptyTip = document.querySelector('.empty-tip') || document.createElement('div'); var allItems = document.querySelectorAll('.pingwei-item'); // 隐藏所有评委项 allItems.forEach(item => item.style.display = 'none'); // 无匹配项显示提示 if (matchList.length === 0) { emptyTip.style.display = 'block'; emptyTip.textContent = '暂无匹配的评委'; return; } // 显示匹配项(直接用pingweiList里的element,避免重复查询DOM) emptyTip.style.display = 'none'; matchList.forEach(item => { if (item.element) item.element.style.display = 'inline-block'; }); } // ========== 修复6:事件绑定(全容错+防抖优化) ========== var searchInput = document.querySelector('.search-input'); var searchBtn = document.querySelector('.search-btn'); let searchTimeout; var handleSearch = () => { if (!searchInput) return; var keyword = searchInput.value; var matchResult = searchPingwei(keyword); updatePingweiDisplay(matchResult); }; // 输入框防抖+回车触发 if (searchInput) { searchInput.addEventListener('input', function () { clearTimeout(searchTimeout); searchTimeout = setTimeout(handleSearch, 300); }); // 回车触发搜索(阻止默认提交) searchInput.addEventListener('keydown', function (e) { if (e.key === 'Enter') { handleSearch(); e.preventDefault(); } }); } // 搜索按钮点击 if (searchBtn) { searchBtn.addEventListener('click', handleSearch); } // ========== 初始化执行(顺序:先初始化选中,再显示所有评委) ========== initSelectedState(); // 初始化选中状态 updatePingweiDisplay(pingweiList); // 初始显示所有评委 console.log('所有评委数据:', pingweiList); }); </script>
最新发布
12-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值