2017-04-21 58 views
0

我目前正在为我工​​作的地方网站工作。其目的是以服务名称旁边的勾号或十字的形式显示哪些系统和服务正在运行或不运行。根据MySQL数据库中的值显示图像

我有一个数据库里面的服务名称,以及A或B的值.A应该导致勾号,B应该导致交叉。

我已经把代码放在一起检索A或B,并将其显示在对应名称旁边的表格中,但是我希望打勾或十字显示。

刻度线位于'sources/tick.png',十字线位于'sources/cross.png'。

任何人都可以给我一些关于如何实现这一目标的指针?非常感谢!

下面是我的代码(我知道它的混乱,但我仍然在学习):

<?php 
$mysqli = new mysqli("localhost", "root", "password", "status"); 
if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 
echo '<img width="1%" src="sources/tick.png">' . "\n"; 

$sql1 = "SELECT wifi from status"; 
if(!$result1 = $mysqli->query($sql1)){ 
    die('There was an error running the query [' . $db->error . ']'); 
} 

$sql2 = "SELECT internet from status"; 
if(!$result2 = $mysqli->query($sql2)){ 
    die('There was an error running the query [' . $db->error . ']'); 
} 

?> 

<html> 
<head> 
    <title>Network Status</title> 
    <link rel="stylesheet" href="sources/styles.css"> 
</head> 
<body> 
<div id="header" align="center"> 
    <img class="headerImg" src="sources/logo.png"><br /> 
    <font class="headerTxt">The Current Network Status:</font> 
</div> 

<div id="wrapper" align="center"> 
    <table align="center"> 
     <tr> 
      <td align="center"><span class="statusItm" id="wifi"><font class="statusTxt">WiFi</font></span></td> 
      <td align="center"><span id="wifi"><?php while($row = $result1->fetch_assoc()){echo $row['wifi'] . '<br />';} ?></span></td> 
     </tr> 
     <tr> 
      <td align="center"><span class="statusItm" id="internet"><font class="statusTxt">Internet Access</font></span></td> 
      <td align="center"><span id="internet"><?php while($row = $result2->fetch_assoc()){echo $row['internet'] . '<br />';} ?></span></td> 
     </tr> 
    </table> 
</div> 
</body> 
</html> 

杰克

+0

检查值,然后使用'如果/ else' – Swellar

+0

如果您的表格包含状态设置为“A/B(off/on)”的列“wifi/internet”,则只能进行* one *查询,然后检查结果循环中每列的值 - > if wifi = = A(on)'然后显示'tick',否则显示'cross',并且对于互联网也是一样。因此,在你的div中,不要显示'$ row ['internet']'使用'img'标签 – OldPadawan

+0

@OldPadawan请你详细说明代码结构。这非常合理,我只是不太确定如何构建它。谢谢! –

回答

1

所有的第一次,对所有SELECT, UPDATE, DELETE,你应该真的考虑使用PPS : Prepared Parameterized Statements。这将有助于Preventing SQL injection

然后,对于您的问题,如注释:如果您的表包含的状态设置为A/B(关/开)列WIFI /互联网,就可以让只有一个查询,然后检查结果循环中每列的值 - >如果WIFI == A(ON),则显示勾号,否则显示交叉,互联网也一样。所以,在你的DIV,而不是显示$行[“互联网”]使用img标签

的例子,你需要适应:

<?php 

error_reporting(E_ALL); ini_set('display_errors', 1); /* PHP will help us */ 

/* connexion to db */ 
$mysqli = mysqli_connect("$host", "$user", "$pwd", "$db"); 
/* adapt to your credentials */ 

if (mysqli_connect_errno()) { echo "Error: no connexion allowed : " . mysqli_connect_error($mysqli); } 

$query = " SELECT `internet`, `wifi` FROM `status` "; 

$stmt = $mysqli->prepare($query); /* prepare query */ 

$results = $stmt->execute(); /* execute query */ 
$stmt->bind_result($internet, $wifi); /* get results */ 
$stmt->store_result(); 

// print_r($stmt->error_list); /* check for error */ 
// print_r($stmt->get_warnings()); /* check for error */ 
// print_r($stmt->error); /* check for error */ 

if ($stmt->num_rows > 0) { /* we have results */ 
/* here, you may want to start CSS table -> end php -> write raw html -> back to php */ 

while($stmt->fetch()){ /* loop through results */ 

/* here you add your CSS table tr/td for the results */ 

if($wifi == "A") { echo"<img src=\"sources/tick.png\" alt=\"\" />"; } else { echo"<img src=\"sources/cross.png\" alt=\"\" />"; } 
if($internet == "A") { echo"<img src=\"sources/tick.png\" alt=\"\" />"; } else { echo"<img src=\"sources/cross.png\" alt=\"\" />"; } 
} 

/* here, you close CSS table -> end php -> write raw html -> back to php */ 

} 
else 
{ echo"[ no data ]"; } 
?> 
+0

非常感谢你的工作。使用准备好的陈述以及好主意。真的很感谢帮助!插口 –