J'ai écrit le code PHP suivant, pour montrer un LI si le statut est défini sur Offline ou Delay:
<?php
if(count($rows) > 0) {
foreach($rows as $row)
{
$service = $row->service;
$details = $row->status_details;
$status = $row->status;
// status image check
if($status == "ONLINE")
{
$symbol = "online.png";
}
if($status == "OFFLINE")
{
$symbol = "offline.png";
}
if($status == "DELAY")
{
$symbol = "delay.png";
}
?>
<li class="<?php echo $status; ?>">
<img src="<?php echo $moduleLoc, $symbol;?>" alt="Service Status <?php echo $service; ?>" /> <span class="details"><?php echo $details; ?></span></li>
</li>
<?php
}
?>
<?php } ?>
En utilisant CSS, si la classe de "ONLINE" est alors affichée, alors LI est masqué.
Cependant, je souhaite ajouter une instruction à afficher si le statut est OFFLINE ou DELAY. J'ai écrit ce qui suit, qui fonctionne, mais en raison de l'instruction foreach, il est affiché pour chaque LI qui a soit OFFLINE, soit DELAY. Je veux qu'il ne soit montré qu'une fois:
<?php
if(($status == "OFFLINE") || ($status == "DELAY")){
echo '<li class="systemsGo"><img src="' . $moduleLoc . 'online.png" alt="Online Update" /><span class="details">All Other Applications Are Working Well</span></li>';
}
?>
Oui, j'ai mis au point une méthode.
Vous devez d’abord définir une variable sous forme de tableau:
$get_status = array();
Ensuite, dans la boucle foreach
, vous devez combiner le statut de tous les résultats dans ce tableau nouvellement défini, comme suit:
foreach ($rows as $row)
{
$get_status[] = $status;
}
Après la boucle foreach
, vous devrez extraire le tableau, comme suit:
extract($get_status);
alors vous pouvez vérifier si tous les statuts du tableau sont tous identiques et afficher un message, comme ceci:
if (count(array_unique($get_status)) === 1 && end($get_status) === 'ONLINE')
{
echo 'All systems are online';
}
if (count($rows) > 0)
{
$get_status = array();
foreach ($rows as $row)
{
$service = $row->service;
$details = $row->status_details;
$status = $row->status;
$symbol = '';
// status image check
if ($status == 'ONLINE')
{
$symbol = 'online.png';
}
if ($status == 'OFFLINE')
{
$symbol = 'offline.png';
}
if ($status == 'DELAY')
{
$symbol = 'delay.png';
}
$get_status[] = $status;
?>
<li class="<?php echo $status; ?>">
<img src="<?php echo $moduleLoc, $symbol;?>" alt="Service Status <?php echo $service; ?>" />
<span class="details"><?php echo $details; ?></span>
</li>
<?php
}
extract($get_status);
if (count(array_unique($get_status)) === 1 && end($get_status) === 'ONLINE')
{
echo 'All systems are online';
}
else if (count(array_unique($get_status)) === 1 && end($get_status) === 'OFFLINE')
{
echo 'All systems are offline';
}
else if (count(array_unique($get_status)) === 1 && end($get_status) === 'DELAY')
{
echo 'All systems are delayed';
}
else
{
echo 'Not the same';
}
}
J'espère que cela t'aides
P.S: J'ai apporté quelques modifications mineures, telles que le remplacement des guillemets doubles par des guillemets simples et également défini $symbol
en dehors de vos déclarations if
, insérez simplement le $status
ne correspond pas (générera une erreur PHP sinon)