فهرست منبع

bugfix: fixed display connected device port

root 3 ماه پیش
والد
کامیت
45a4321e5a
1فایلهای تغییر یافته به همراه17 افزوده شده و 10 حذف شده
  1. 17 10
      html/inc/common.php

+ 17 - 10
html/inc/common.php

@@ -2204,16 +2204,23 @@ function print_device_port_select($db, $field_name, $device_id, $target_id)
     $device_id = (int)$device_id;
     $target_id = (int)$target_id;
     
-    $t_device = get_records_sql($db,
-        "SELECT D.device_name, DP.port, DP.device_id, DP.id, DP.ifname 
-         FROM devices AS D, device_ports AS DP 
-         WHERE D.deleted = 0 
-           AND D.id = DP.device_id 
-           AND (DP.device_id != ? OR DP.id = ?) 
-           AND (DP.id NOT IN (SELECT target_port_id FROM device_ports WHERE target_port_id IS NOT NULL))
-         ORDER BY D.device_name, DP.port",
-        [$device_id, $target_id]
-    );
+    $dpSQL = "
+    SELECT d.device_name,dp.port,dp.device_id,dp.id,dp.ifName
+    FROM devices d
+    JOIN device_ports dp
+        ON dp.device_id = d.id
+    WHERE d.deleted = 0
+    AND (dp.device_id <> ? OR dp.id = ?)
+    AND NOT EXISTS (
+      SELECT 1
+      FROM device_ports dp2
+      WHERE dp2.target_port_id = dp.id
+        AND dp2.target_port_id > 0
+        AND dp2.target_port_id <> ?
+    )
+    ORDER BY d.device_name, dp.port;
+    ";
+    $t_device = get_records_sql($db,$dpSQL,[$device_id, $target_id, $target_id]);
     
     print_select_item('Empty', 0, $target_id);