2017-04-21 56 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

非常感謝你的工作。使用準備好的陳述以及好主意。真的很感謝幫助!插口 –