PHP:对比数据库,隐藏不满足条件的标签;对比数据库,将标签中的内容更改为数据库中的对应项

news2024/10/7 20:36:54

一、查询数据库数据,A列数据如果等于前端div中的值,那么将div中的值给其赋值为对应数据库中B列的值 

如下案例:以第一个为例,如果id为append1,并且此id等于满足条件的数据库中colum_name列中的append1,就将id对应的div下的第一个子div中的值更改为数据库中满足条件的colum_name对应的remark的值"简称"

(如下图,如果id(红色方框)等于数据库column_name(蓝色方框)中的任何一项,那么子div中的值(绿色方框)就更改为数据库remark的值(紫色方框)

HTML代码

<div class="text-nav-1 " id="append1">  
    <div>append1</div>
    <input type="text"   autocomplete="off"  name="append1" value="<?= $_POST['append1'] ?>" /> 
</div>
<div class="text-nav-1 " id="append2">  
    <div>append2</div>
    <input type="text"   autocomplete="off"  name="append2" value="<?= $_POST['append2'] ?>" /> 
</div>
<div class="text-nav-1 " id="append3">  
    <div>append3</div>
    <input type="text"   autocomplete="off"  name="append3" value="<?= $_POST['append3'] ?>" /> 
</div>
<div class="text-nav-1 " id="append4">
    <div>append4</div>
    <input type="text"   autocomplete="off"  name="append4" value="<?= $_POST['append4'] ?>" />
</div>
<div class="text-nav-1 " id="append5">  
    <div>append5</div>
    <input type="text"   autocomplete="off"  name="append5" value="<?= $_POST['append5'] ?>" /> 
</div>

代码

如上图的数据库以及这里sql的语句所见,只会展示table_name的值为customers的以及is_show为Y的值)

<script type="text/javascript">
    <!-- 刚进入页面执行方法 -->
    window.onload=function(){
        //通过php获取到数据库数据
        <?php
        $sql1 = "SELECT * FROM attribute where is_show = 'Y'and table_name = 'customers'";
        $result1 = DB_query($sql1, $db);
        // 检查查询结果是否为空
        if (DB_num_rows($result1) > 0) {
            // 初始化一个空数组来存储查询结果
            $data = array();
            // 遍历查询结果并将每行数据存入数组中
            while ($row = DB_fetch_array($result1)) {
                $data[] = $row;
            }
        } else {
            echo "没有结果";
        }
        ?> 
        //给数据库输出的数组赋值
        var data = <?php echo json_encode($data); ?>;
        // 获取 HTML 中所有具有 id 属性的元素
        var elements = document.querySelectorAll('[id]');   
        // 定义需要进行判断的id列表
        var idsToCheck = ['append1', 'append2', 'append3', 'append4', 'append5'];  
        // 遍历 HTML 元素
        elements.forEach(function(element) {
            // 获取当前元素的 id
            var id = element.id;
            // 获取当前 div 元素的第一个子 div 元素
            var firstChildDiv = element.querySelector('div');
            // 检查第一个子 div 元素是否存在
            if (firstChildDiv) {
                // 遍历数组中的每一行
                data.forEach(function(row) {
                    // 获取当前行的 column_name 值和 remark 值
                    var column_name = row.column_name;
                    var remark = row.remark;
                    // 判断 column_name 值是否与当前元素的 id 相同
                    if (column_name === id) {
                        // 修改第一个子 div 元素的文本内容为 remark 值
                        firstChildDiv.textContent = remark;
                    }
                });
            }
            // 检查当前id是否在需要进行判断的id列表中
            if (idsToCheck.includes(id)) {
                var matchFound = false;
                // 遍历数组中的每一行
                data.forEach(function(row) {
                    // 获取当前行的 column_name 值
                    var column_name = row.column_name;  
                    // 判断 column_name 值是否与当前元素的 id 相同
                    if (column_name === id) {
                        matchFound = true;
                    }
                });                            
                // 根据匹配结果执行相应的逻辑
                if (!matchFound) {
                    // console.log('column_name 和 id 相同');
                    // 可以在这里执行其他操作,例如修改元素的样式或值
                    element.style.display = 'none';
                }
            }
        });
    }
</script>

结果展示(隐藏了append1,append2,append5,并且展示的append3,append4名字更改为追加3,追加4)

二、对照一,将表格中的th,td同时进行隐藏与显示

参照一进行更改,思路:将id更改为class,直接对th中的内容进行更改,这里也将指定的id范围更改为以“append”开头。

HTML代码

注:这里用到的th和td都需要给指定class的值

①th内容

echo '  <tr>
                <th class="ascending" width = 150>' . _('客户简称') . '</th>
                <th class="ascending"width = 250>' . _('客户全称') . '</th>
                <th class="ascending"width = 150>' . _('联系人') . '</th>
                <th class="ascending"width = 150>' . _('电话') . '</th>
                <th class="ascending"width = 200>' . _('邮箱') . '</th>
                <th class="ascending"width = 200>' . _('传真') . '</th>
                <th class="ascending" >' . _('税别') . '</th>
                <th >' . _('是否生效') . '</th>
                <th class="append1">' . _('扩展1') . '</th>
                <th class="append2">' . _('扩展2') . '</th>
                <th class="append3">' . _('扩展3') . '</th>
                <th class="append4">' . _('扩展4') . '</th>
                <th class="append5">' . _('扩展5') . '</th>
        </tr>
';

②td的内容 

echo '  <td><a href="' . $RootPath . '/AddCustomer2.php?UpdateCustomerCode=' . $myrow['customer_code'] . '">' . $myrow['customer_code'] . '</td>
        <td>' . $myrow['customer_name'] . '</td>
        <td>' . $myrow['Customer_contacts'] . '</td>
        <td>' . $myrow['contacts_phone'] . '</td>
        <td>' . $myrow['contacts_mail'] . '</td>
        <td>' . $myrow['contacts_fax'] . '</td>
        <td>' . $myrow['tax_name'] . '</td>
        <td>' . $myrow['enable_flag'] . '</td>
        <td class="append1">' . $myrow['append1'] . '</td>
        <td class="append2">' . $myrow['append2'] . '</td>
        <td class="append3">' . $myrow['append3'] . '</td>
        <td class="append4">' . $myrow['append4'] . '</td>
        <td class="append5">' . $myrow['append5'] . '</td>
';

功能代码

<script type="text/javascript">
        window.onload=function(){
        <?php
        $sql1 = "SELECT * FROM attribute where is_show = 'Y'and table_name = 'customers'";
        $result1 = DB_query($sql1, $db);
        // 检查查询结果是否为空
        if (DB_num_rows($result1) > 0) {
                // 初始化一个空数组来存储查询结果
                $data = array();
                // 遍历查询结果并将每行数据存入数组中
                while ($row = DB_fetch_array($result1)) {
                $data[] = $row;
                }
        } else {
                echo "没有结果";
        }
        ?> 
        // 给数据库输出的数组赋值
        var data = <?php echo json_encode($data); ?>;
        // 获取 HTML 中所有具有 class 属性的元素
        var elements = document.querySelectorAll('[class]');
        // 遍历 HTML 元素
        elements.forEach(function(element) {
              //更改内容
                //选择所有标签名为 <th>,并且类名以 "append" 开头的元素。(只是更改th的内容)
                var thElements = document.querySelectorAll('th[class^="append"]');
                data.forEach(function(row) {
                        //赋值
                        var column_name = row.column_name;
                        var remark = row.remark;
                        // 遍历具有特定类名的 <th> 元素
                        thElements.forEach(function(element) {
                                if (element.classList.contains(column_name)) {
                                        // 将备注值赋给匹配的 <th> 元素的文本内容
                                        element.textContent = remark;
                                }
                        });
                });
              //隐藏元素(th和td都要进行隐藏)
                // 获取当前元素的 class 名称
                var className = element.className; 
                // 检查当前类名是否以 "append" 开头
                if (className.startsWith("append")) {
                        var matchFound = false;
                        // 遍历数组中的每一行
                        data.forEach(function(row) {
                                // 获取当前行的 column_name 值
                                var column_name = row.column_name;
                                // 判断 column_name 值是否与当前元素的 class 相同
                                if (column_name === className) {
                                        matchFound = true;
                                }
                        });
                        // 根据匹配结果执行相应的逻辑
                        if (!matchFound) {
                                // console.log('column_name 和 class 相同');
                                // 可以在这里执行其他操作,例如修改元素的样式或值
                                element.style.display = 'none';
                        }
                }
        });
}
</script>

结果展示(隐藏了append2,append4,append5,并且展示的append1,append3名字更改为测试111,测试333)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/724873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows安装 PostgreSQL数据库并进行简单数据操作

介绍&#xff1a; 在开发和管理数据库应用程序时&#xff0c;选择合适的数据库管理系统是至关重要的。PostgreSQL 是一个强大且广受欢迎的开源关系型数据库管理系统&#xff0c;它具有稳定性、可靠性和丰富的功能。本文将介绍如何在 Windows 操作系统上下载、安装 PostgreSQL&a…

6. QT环境下使用OPenCV(利用鼠标实现图像的ROI区域选择)

1. 说明 一张图像显示的内容可能并非所有的都是有用信息,有时需要选定某些区域做出特殊的处理。在OPenCV当中可以在图像上响应鼠标的操作,选取出图像上的特殊区域 — ROI区域。 效果展示: 2. 实现步骤 首先在QtCreator中创建一个新的widget项目,并配置好OPenCV的开发环…

【GIS】Python多线程转换NC格式文件为TIFF

汇总 【GIS】使用cdsapi下载ERA5和ERA5_land逐小时数据 NC格式介绍 说明 NC文件读取使用netCDF4,NC文件转换为TIF使用rasterio或者GDAL。 一些细节: 格点数据转换为TIFF文件时候,计算六参数时候,应该要考虑,格点数据存储的坐标属于栅格中心点的位置,转换为TIFF时候,…

Vue3中使用async-validator进行表单校验

官方文档&#xff1a;mirrors / yiminghe / async-validator GitCodevalidate form asynchronous &#x1f680; Github 镜像仓库 &#x1f680; 源项目地址 ⬇https://gitcode.net/mirrors/yiminghe/async-validator?utm_sourcecsdn_github_accelerator 注意&#xff1a;当…

19 | 为什么我只查一行的语句,也执行这么慢?

以下内容出自 《MySQL 实战 45 讲》 19 | 为什么我只查一行的语句&#xff0c;也执行这么慢&#xff1f; 第一类&#xff1a;查询长时间不返回 mysql> select * from t where id1;一般碰到这种情况。大概率是表 t 被锁住了。 分析&#xff1a; 首先执行 show processlis…

2023年全球性别差距调研 | 真正的“性别平等”如何实现?

尽管在推进性别平等方面做出了努力&#xff0c;但女性在许多方面仍然落后于男性--从房屋所有权到劳动力参与和董事会占比。虽然新冠疫情带来了前所未有的促进性别平等的政策&#xff0c;但它对结构性变化的影响却很小。 实际上&#xff0c;世界经济论坛估计还需要132年才能消除…

Luogu P1140.数的划分

P1140 数的划分 原题点这里 思路 这是一道动态规划的题目。 步骤主要分 5 5 5 步&#xff1a; 状态的定义转移式的推到递推顺序的判定边界的确定结果的输出 下面&#xff0c;我们针对这道题&#xff0c;细细地讲解一下每一个步骤 一、状态的定义 这道题的状态最简单&a…

面试题分析:统计网站访问次数

难度&#xff1a;较低 平台的访问量非常高&#xff0c;需要实时统计网站的访问次数&#xff0c;请设计一个计数器解决&#xff1a;初级工程师&#xff0c;可能回答使用synchronized锁或重入锁&#xff0c;进一步探讨&#xff0c;synchronized锁太重&#xff0c;有没其他方式&a…

redisson中Semaphore的信号量介绍及其原理

目录 1 基本介绍 1.1API介绍 1.2 示例 2 源码解析 2.1 Semaphore设置许可数量&#xff08;trySetPermits(int permits)&#xff09; 2.2 尝试获取许可&#xff08;boolean tryAcquire()&#xff09; 3 Lua脚本 3.1 加锁lua脚本 3.2 解锁lua脚本 1 基本介绍 Semaphore通…

科技资讯|苹果Vision Pro新专利曝光,与消除晕动症的技术有关

欧洲专利局发布了一份苹果专利&#xff0c;与消除 Apple Vision Pro 晕动病背后的一些工作有关。苹果通过推出新的 R1 处理器实现了这一目标&#xff0c;苹果专利提供了处理器背后的一些详细技术信息&#xff0c;在第 86 号专利点指出&#xff1a;" 在某些实施方案中&…

驾驭计算机视觉的翅膀:论文找代码的几种必杀技!

摘要 对于CVer来说&#xff0c;「代码和找代码」能力都是一种很重要的能力&#xff0c;毕竟idea再好只有通过代码实现出来才能发文章和刷榜。当我们阅读一篇高质量或者英文论文时&#xff0c;如何去找到该文章实现的代码&#xff0c;进而结合文章内容和代码实现去更好的理解作…

PoseiSwap 更新第二期空投,持有 Zepoch 节点数量将决定空投回报

Nautilus Chain 是行业内首个模块化 Layer3 架构链&#xff0c;开发者能够基于模块化进行定制化开发&#xff0c;并有望进一步推动 Web3 应用向隐私、合规等方向发展。当然&#xff0c;Nautilus Chain 的特殊之处还在于为生态用户带来丰厚的空投预期&#xff0c;据悉上线 Nauti…

基于matlab使用标记增强技术将虚拟内容呈现到现实场景中(附源码)

一、前言 此示例演示如何使用基于标记的增强现实将虚拟内容呈现到场景中。 增强现实 &#xff08;AR&#xff09; 通过自然混合真实和虚拟内容来增强现实世界的场景&#xff0c;从而创建新颖的应用程序。例如&#xff0c;增强现实应用程序可以添加虚拟标尺&#xff0c;使用户…

如何正确使用 ThreadLocal

1 前言 当多线程访问共享且可变的数据时&#xff0c;涉及到线程间同步的问题&#xff0c;并不是所有时候&#xff0c;都要用到共享数据&#xff0c;所以就需要ThreadLocal出场了。 ThreadLocal又称线程本地变量&#xff0c;使用其能够将数据封闭在各自的线程中&#xff0c;每…

数据管理成熟度评估DCMM之生产企业数据战略管理办法

生产企业数据战略管理办法 第一部分&#xff1a;导言 随着信息技术的快速发展和数据规模的急剧增长&#xff0c;生产企业越来越重视数据的价值和管理。有效的数据战略管理办法可以帮助生产企业更好地管理和利用数据资源&#xff0c;提高运营效率、决策质量和创新能力。本文将…

SpringMVC数据传递总结

文章目录 1. 分析总结2. 普通格式数据2.1 普通参数2.2 pojo参数2.3 嵌套pojo参数2.4 数组 -- 普通参数2.5 集合 -- 普通参数2.6 web容器添加过滤器指定字符集 3. JSON格式数据3.1 相关准备3.2 json数组(基本)3.3 json对象(pojo)3.4 json数组(pojo) 1. 分析总结 1.1 普通格式数据…

K8S平台安全框架

平台安全框架 1 平台安全框架1.1 安全框架1.1.1 认证框架1.1.2 框架解读 1.2 认证实践1.2.1 令牌用户1.2.2 证书用户 1.3 授权实践1.3.1 集群用户1.3.2 角色基础1.3.3 授权基础1.3.4 用户组实践1.3.5 SA授权1.3.6 SA秘钥 1.4 准入实践1.4.1 准入基础1.4.2 优先调度1.4.3 资源配…

F2-NeRF阅读日志

看到了一篇很好的paper&#xff0c;记录一下&#xff0c;参考&#xff1a; https://www.bilibili.com/video/BV1Lz4y187jL/?spm_id_from333.337.search-card.all.click&vd_sourcea059a118f33728f79abd79e02f8f72d4 https://zhuanlan.zhihu.com/p/618362291 latex写的&am…

Qt5编译使用QFtp模块(环境:win+Qt5.15.2+msvc2019)

目录 QFtp下载编译配置QFtp模块测试 QFtp下载 下载方式较多&#xff0c;可以从github上进行下载&#xff1a;https://github.com/qt/qtftp.git 。 我已将下载好的ftp源码资源放出来了&#xff0c;可以直接下载0积分&#xff1a;链接跳转。 编译 使用Qt Create打开工程后&…

DuDuTalk:4G录音工牌在汽车试乘试驾场景中有什么独特应用价值?

在市场竞争越来越激烈的今天&#xff0c;不管是新能源市场还是燃油车市场&#xff0c;试乘试驾已经当仁不让地成为了几乎所有汽车品牌关注的焦点。特斯拉、“蔚小理”、奔驰、宝马等头部品牌&#xff0c;对于试乘试驾的重视度一定程度上甚至已经超过了展厅接待。 然而&#xf…