如何在PHP后台面板中将MySQL布尔值替换为自定义友好字符串?
如何在PHP管理员面板中将布尔值0/1转换为友好文本"broken"/"working"
我的管理员面板PHP脚本用于显示设备损坏状态,目前数据库的布尔字段rueck_damage在表格中仅显示0或1。我需要将0替换为"broken"、1替换为"working"以提升用户友好性,且不修改数据库中的原始布尔数据。以下是当前的面板代码:
<?php session_start(); if (!isset($_SESSION['admin'])) { header("location: login.php"); die(); } require "conn.php"; ?> <html> <head> <meta charset="UTF-8" /> <title>Rückgabe: Admin</title> <link href="rueckgabe-admin.css" rel="stylesheet" /> </head> <body style="margin: 50px;"> <h1>Rückgaben</h1> <a class="btn btn-primary btn-sm" href="ausleihe-admin.php" role="button">Ausleihen</a><a class="btn btn-primary btn-sm" href="ctouch-admin.php" role="button">CTOUCH</a><a class="btn btn-primary btn-sm" href="id-admin.php" role="button">ID</a><a class="btn btn-danger btn-sm" href="logout.php" role="button">Abmelden</a> <br> <table class="table"> <thead> <tr> <th>MYSQL-ID</th> <th>Hardware-ID</th> <th>Lehrkraft</th> <th>Beschädigt?</th> <th>Rückgabedatum</th> <th>Aktion</th> </tr> </thead> <tbody> <?php //Rückgabe auslesen $sql = "SELECT * FROM rueckgabe"; $result = $conn->query($sql); if (!$result) { die("Falsche Anfrage: " . $conn->error); } //Alle Zeilen und Spalten lesen while($row = $result->fetch_assoc()) { echo "<tr> <td>" . $row["id"] . "</td> <td>" . $row["rueck_id"] . "</td> <td>" . $row["rueck_lehrkraft"] . "</td> <td>" . $row["rueck_damage"] . "</td> <td>" . $row["rueck_datum"] . "</td> <td> <a class='btn btn-danger btn-sm' href='rueckgabe-delete.php?id=$row[id]'>Löschen</a> </td> </tr>"; } ?> </tbody> </table> </body> </html>
表头“Beschädigt?”对应字段rueck_damage,请问如何在表格中转换显示文本?
解决方案
以下几种方法都能实现需求,且不会修改数据库中的原始数据:
方法1:使用PHP三元运算符(最简洁)
直接在输出字段的位置添加判断逻辑,替换原有的$row["rueck_damage"]输出:
<td><?php echo $row["rueck_damage"] == 1 ? "working" : "broken"; ?></td>
或者先在循环内定义变量,再输出,代码可读性更好:
while($row = $result->fetch_assoc()) { // 转换状态文本 $damageStatus = $row["rueck_damage"] == 1 ? "working" : "broken"; echo "<tr> <td>" . $row["id"] . "</td> <td>" . $row["rueck_id"] . "</td> <td>" . $row["rueck_lehrkraft"] . "</td> <td>" . $damageStatus . "</td> <td>" . $row["rueck_datum"] . "</td> <td> <a class='btn btn-danger btn-sm' href='rueckgabe-delete.php?id=$row[id]'>Löschen</a> </td> </tr>"; }
方法2:使用if-else判断(更直观)
如果觉得三元运算符不够清晰,用标准的条件判断:
while($row = $result->fetch_assoc()) { if ($row["rueck_damage"] == 1) { $damageStatus = "working"; } else { $damageStatus = "broken"; } // 后续echo代码同上,使用$damageStatus输出 }
方法3:在SQL查询中直接转换(可选)
也可以在查询数据库时就完成文本转换,PHP中直接输出转换后的字段:
SELECT id, rueck_id, rueck_lehrkraft, CASE WHEN rueck_damage = 1 THEN 'working' ELSE 'broken' END AS damage_status, rueck_datum FROM rueckgabe
然后在PHP循环中输出$row["damage_status"]即可:
<td>" . $row["damage_status"] . "</td>
内容的提问来源于stack exchange,提问作者MLueh
相关产品推荐
相关产品推荐

