0

我正在使用 php 做一个网站项目。我的结果显示如下

             检测结果
1. CLEAN MX 0 清洁场地
2. MalwarePatrol 0 未评级站点
3. ZDB Zeus 0 可疑站点
4. K7AntiVirus 0 清理网站
我正在使用这个 php 代码来得到这个结果

 $none = 0;   $i = 0;   foreach($result->scans as $key => $val)   {
      if($i==0) {
         echo '<th></th>';
         echo '<th></th>';
         echo '<th>Detected</th>';
         echo '<th>Result</th>';
      }
      echo '<tr>';
      echo '<td>'.intval($i+1).'.</td>';
      echo '<td>'.$key.'</td>';

      if(empty($val->detected)): 
         echo '<td>'. $none .'</td>';
      else: 
         echo '<td>'. $val->detected .'</td>';
      endif; 

      echo '<td>'.$val->result.'</td>';
      echo '</tr>';
      $i++;   }

但我需要在结果页面中添加一些图形。首先检查结果是干净站点还是未评级站点,可疑站点。然后如果该站点是干净站点,则显示绿灯图像,如果该站点是未评级站点,则显示黄灯,如果是可疑站点,则显示红灯图像。就像www.onlinelinkscan.com的结果一样。

最后,如果该站点获得最多数量的绿灯图像显示总体结果是好的,如果该站点获得最多数量的红灯图像显示总体结果是危险的,否则显示总体结果是中性的。像这样

                        Detected     Result
   1.   CLEAN MX           0     clean site   
   2.   MalwarePatrol      0     clean site   
   3.   ZDB Zeus           0     clean site   
   overall result:good   
   overall result:danger   
   overall result:neutral

请帮助我的朋友,我在 php 和 javascript 方面没有这种知识。

4

2 回答 2

1

不需要花哨的 php 或 javascript。对于样式化的东西,它是你需要的 css。绝对不要添加img,因为它们是内容,并且用于显示您的表格的图标不会被视为内容。

我只想在每一行中添加一个类来指示结果。此外,我会保留分数以指示全局结果:

在你的 foreach 之外,准备 score var

$score = 0;

在foreach里面:

// determine which class to add
switch $val->result {
  case 'clean site': 
    $class = "clean";
    $score++;
    break;
  case "unrated site":
    $class = 'neutral';
    break;
  case "suspicious site":
    $class = 'dirty';
    $score--;
    break;
  default:
    // perhaps you should throw an esception here
    $class = '';
    break;
} 
// add it to your row
$out .= '<tr class="' . $class .'">';

另请注意,我还没有回显任何内容,我将其存储在一个变量中。您必须对代码中的每个 echo 执行此操作。并确保您尚未添加开始<table>标签,因为我们将在此处添加“全局分数类”。

在 foreach 循环完成后,您将获得一个全局分数。您可以将其作为一个类添加到您的表中,并将其添加到您准备好的输出中,如下所示:

if ($score < 0) {
   $tableClass = 'dirty';
}
if ($score > 0) {
   $tableClass = 'clean';
}
if ($score == 0) {
   $tableClass = 'neutral';
}
$out = '<table class="' . $tableClass .'">' . $out;

您现在需要做的就是回显 $out 变量。

要应用颜色或图标或任何您可以添加一些简单的 css 的东西,如下所示:

table.neutral {
   border-color: grey;
}
table.clean {
   border-color: green;
}
...
tr.clean td:first-child{
   background-image: url(icon-clean.png) no-repeat left center;
   padding-left: 20px;
}
...
于 2013-06-11T20:40:36.670 回答
0

这很简单...首先检查您的值,然后将图像分配给变量...

 if($val->result=="clean site"){$image = "green-light.png";}
 elseif($val->result=="unrated site"){$image = "orange-light.png";}
 elseif($val->result=="suspicious site"){$image = "red-light.png";}

然后在表格内回显该图像。

 echo "<td><img src='images/".$image."'></td>";

这意味着您必须创建 3 个具有上述名称的图像。

并将它们放在您的图像文件夹中

至于你问题的另一部分......它将涉及使用 PHP 计算元素,或者使用 SQL 更好......但我不会为你做那部分。

这是更完整的代码...

if(empty($val->detected)): 
     echo '<td>'. $none .'</td>';
  else: 
     echo '<td>'. $val->detected .'</td>';
  endif; 

  if($val->result=="clean site"){$image = "green-light.png";}
 elseif($val->result=="unrated site"){$image = "orange-light.png";}
 elseif($val->result=="suspicious site"){$image = "red-light.png";}

   echo "<td><img src='images/".$image."'></td>";
于 2013-06-11T20:15:19.547 回答