【发布时间】:2020-01-03 07:22:27
【问题描述】:
我编辑了帖子以便更好地理解。这是我作为学生实习生的第一个项目。它是一种设备监控系统,用于保存计算机设备的记录。这是包含过滤选项和显示计算机设备列表的表格的页面中的代码的一部分。过滤选项包含几个单选按钮,它们属于两个类别,即状态和条件。请参阅帖子末尾的两个类别的组成部分。组件是单选按钮的值。
当单击另一个单选按钮时页面会重新加载,类似于 Facebook 搜索。我希望计算每个条件和状态的设备数量,以显示在单选按钮标签旁边。但是,状态单选按钮会影响设备的计数。例如,New EQ 是刚刚进入库存的设备类型。选中新的EQ按钮并检查可用/未分配的按钮时,将过滤表格结果,将显示包含具有新的状态的结果以及可用/未分配的条件。表格结果将被统计并在单选按钮标签旁边输出,该标签告诉用户有多少设备是“新”和“可用/未分配”。当点击其他状态单选按钮时,例如Old EQ按钮,标签旁边显示的可用/未分配设备的数量将根据返回的行数而变化,因为用户将请求更改为输出设备”旧”和“可用/未分配”。顺便说一句,状态和条件是同一个表中的列。这将发生在所有单选按钮上。如果用户单击 Condition 类别下的另一个单选按钮,例如 Assigned EQ 按钮,则标签旁边显示的 Available/Unassigned 的数量将变为 0 或零,因为用户请求表结果应显示新且已分配的设备,未请求可用/未分配的设备。如果用户点击“所有条件”按钮,它将计算包含ALL条件的表格行,其行上也有数据a New强>状态。显示表格结果的过滤过程已经在运行。我现在正在输出单选按钮标签旁边的数量。
<?php
switch($state AND $condition){
case $state=="allstate" AND $condition=="allcondition":
$sql3="SELECT *FROM eq_inv WHERE eq_condition='Available/Unassigned'";
break;
case $state=="new" AND $condition=="allcondition":
$sql3="SELECT *FROM eq_inv WHERE eq_condition='Available/Unassigned' AND eq_state='new'";
break;
case $state=="old" AND $condition=="allcondition":
$sql3="SELECT *FROM eq_inv WHERE eq_condition='Available/Unassigned' AND eq_state='old'";
break;
case $state=="Unknown state" AND $condition=="allcondition":
$sql3="SELECT *FROM eq_inv WHERE eq_condition='Available/Unassigned' AND eq_state='Unknown state'";
break;
case $state=="Unknown state" AND $condition=="Available/Unassigned":
$sql3="SELECT *FROM eq_inv WHERE eq_condition='Available/Unassigned' AND eq_state='Unknown state'";
break;
}
//Code above is incomplete
$result3=mysqli_query($conn,$sql3);
$count=mysqli_num_rows($result3);
echo "<label style='color:red;'><strong>".$count."</strong></label>";
?>
分类:
状态:所有状态,新,旧,未知状态
状况:所有状况、可用/未分配、维修、缺少零件、缺少 eq、有缺陷、翻新、未知状况
【问题讨论】:
-
您不需要开关盒。您可以将
eq_condition和eq_state替换为值。使用转义值/准备好的语句来避免 SQL 注入。 -
你没有一些逻辑规则来构建你的查询吗?如果您有超过 32 种不同的情况来构建具有 2 个参数的查询,那么我认为您的操作方式存在一些逻辑问题
-
根据您的要求,我认为不需要switch case。我可能错了,但根据你上面的代码,如果 ELSE 就足够了。
-
我编辑了帖子,因为它不完整,抱歉。
标签: php switch-statement