检查元素是否在数组中,然后从绑定到它的另一个数组中获取值



我正在制作一个页面,用户可以在其中选择受中断影响的所有服务并设置其状态。

它的工作方式是,我让他们选中一个复选框,在选中复选框后,用户会看到一个状态选择。现在我可以获得所有受影响的服务,但当我试图获得它们的状态时,事情根本不起作用。基本上,我试图实现的是系统为每个受影响的服务设置新的状态。我也尝试过不同的方法,我最近的一种方法是,如果只选择了一项服务,而且一团糟。

HTML代码:

<label style="width: 100%;">
<input type="hidden" name="id[]" value="Service ID">
<input type="checkbox" class="affectedChecker" name="affected[]" value="Service ID">
<span>Service Title</span>
<select name="status[]" class="form-control animated--grow-in ml-2" style="width: 30%; display: inline;" hidden="hidden">
<option value="Operational">Operational</option>
<option value="Degraded Performance">Degraded Performance</option>
<option value="Minor Outage">Minor Outage</option>
<option value="Partial Outage">Partial Outage</option>
<option value="Major Outage>Major Outage</option>
</select>
</label>

当前的PHP代码(只适用于一个服务,而且一团糟(:

if(!empty($_POST['id'])) {
foreach($_POST['id'] as $id) {
if(!empty($_POST['affected'])) {
if(in_array($id,$_POST['affected'])){
if(!empty($_POST['status'])) {
foreach($_POST['status'] as $status) {
$cstatus->updateStatus($status, $page_id, $id);
}
}
}
}
}
}

旧的PHP代码(不起作用,但我认为这里有一些简单的错误(:

if(!empty($_POST['affected'])) { //Kui on valitud affected serviceid, siis
$affected = implode(",",$_POST['affected']); //Paneb komadega järjestusse kõik servicid, mis valiti, need ongi need servicid, mis on affected
$cstatus->createIncident($title, $incidentstatus, $message, $affected, $page_id, $cid); //Loob intsidendi andmebaasis
if(isset($_POST['affected'])) {
print_r($_POST); //It works until this point and gets the correct amount of affected services in the array
foreach($_POST['affected'] as $value){ //Doesn't work anymore from here
$id = $_POST['id'];
$status = $_POST['status'];
echo $status;
$cstatus->updateStatus($status, $page_id, $id);
}
}
}

谢谢,尼梅图。

[Opinionated]我认为状态的默认值最好为"不受影响";,因此,您不应该同时创建或混淆大约2个数据。并将id放入每个状态中。

HTML:

<label style="width: 100%;">
<span>Service Title</span>
<select name="status[<?php echo $value->id; ?>]" class="form-control animated--grow-in ml-2" style="width: 30%; display: inline;">
<option value="">Not Affected</option>
<option value="Operational">Operational</option>
<option value="Degraded Performance">Degraded Performance</option>
<option value="Minor Outage">Minor Outage</option>
<option value="Partial Outage">Partial Outage</option>
<option value="Major Outage">Major Outage</option>
</select>
</label>

PHP:

foreach($_POST['status'] as $key => $value) {
if (empty($value)) {
continue;
}
$cstatus->updateStatus($value, $page_id, $key);
}

最新更新