gpt4 book ai didi

php - 如何过滤与服务相关的事件

转载 作者:行者123 更新时间:2023-11-30 21:40:20 25 4
gpt4 key购买 nike

services In databse

Activity in db

Mapping of serviceactivity

PHP

<?php include("connect.php");?>
<?php
$activityoneid = "select activity.activity_name,activity.activity_id
from activity
join serviceactivitymap on activity.activity_id = serviceactivitymap.activity_id";

$activityonevalue = $conn->query($activityoneid) or die ($conn>error.__LINE__);
$activitiesone = [];

while ($row = $activityonevalue->fetch_assoc()) {
$activitiesone[] = $row;
}

//for services
$service = "select * from service";
$servicevalue = $conn->query($service) or die ($conn>error.__LINE__);
$services = [];

while ($row = $servicevalue->fetch_assoc()) {
$services[] = $row;
}

foreach($services as $serve)
{
?>
<input type = "checkbox" name = "service" value="<?php echo $serve['service_id']?>">
<?php echo $serve['service_name']?>
<br>
<?php foreach($activitiesone as $activiti)
{
?>
<input type = "checkbox" name = "activity" value = "<?php echo $activiti['activity_id']?>">
<?php echo $activiti['activity_name'];?>
<?php
}
?>
<br>
<?php
}?>

这是我的显示服务和事件代码 ## 最近的输出 ## :-所有服务都显示相同的事件,我可以使用 service_id 过滤数据意味着显示与服务 id 相关的事件,如果服务 id = 1 则仅显示与 1 相关的事件而不显示其他

最近的输出:

  • 所得税
    • 返回填充
    • 修改后的申报表填写
    • 纳税
    • 法定审计
  • TDS
    • 回填
    • 修改后的申报表填写
    • 纳税
    • 法定审计

预期输出:-

  • 所得税
    • 回填
    • 修改后的申报表填写
  • TDS
    • 纳税
    • 法定审计

在映射第三个映射表中看到,我将显示映射表的输出

谢谢

最佳答案

使用您的示例数据,我想出了一个更简单的解决方案。您的代码试图分两步完成数据库可以为您做的事情。

您的第一个查询获取服务。然后逐项列出每个关联的事件。这种方法虽然有效,但会导致数据库被访问两次。数据库可以使用 SQL 为您执行此操作。

这里是查询:

SELECT s.service_name,     
a.activity_name
FROM service AS s
JOIN service_has_activity AS sha ON s.service_id = sha.service_id
JOIN activity AS a ON a.activity_id = sha.activity_id
ORDER BY s.service_name, a.activity_name

结果是:

Incometax     Return Filing
Incometax Revised Return Filing
TDS Statutory Audit
TDS Tax Payment

此查询使用 JOIN 将 serviceactivityservice_has_activity 表“链接”在一起。然后使用 ORDER BY 按您想要的方式对数据进行排序。

如果要根据特定条件进行过滤,可以在查询中添加 WHERE 子句。前任。如果您只想查看特定服务的数据,请在 ORDER BY之前添加此行:

WHERE s.service_name = 'IncomeTax'

然后您可以对这些结果编写一个循环来处理显示。如果可以的话,让数据库做这些总是更有效,并且只做 PHP 代码中的显示部分。

最终结果是 1 次循环(用于显示结果),1 次访问数据库(用于运行查询)。如果您有一个大数据集,它也会加快您的页面速度。

关于php - 如何过滤与服务相关的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51947228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com