Моя проблема в этом
У меня есть база данных, которая хранит значение int в строке «status», которое я хочу представить для определенного статуса заказа:
0 = отправлено
1 = доставлено и т. Д.
Чего я хочу добиться, так это отображать определенный текст, как в примере выше, вместо значения int
Мой код для отображения всего списка
require 'database_connection.php';
$select_orders = "SELECT username, status, product1_num, product2_num FROM orders";
$result = mysql_query($select_orders);
<ol class="order_list">
<?php while ($order = mysql_fetch_array($result)) {
$order_row = sprintf("<li class='single_order %s'>
<ul>
<li class='username'>%s</li>
<li class='status'>%s</li>
<li class='product'>%s</li>
<li class='product'>%s</li>
</ul>
</li>",
$order['status'], $order['username'], $order['status'], $order['product2_num'], $order['product1_num']);
echo $order_row;
}
?>
</ol>
Я пытался использовать оператор if внутри sprintf, но безуспешно.
Кто-нибудь есть идеи, как изменить отображаемый код здесь с
<li class="status">3</li>
в
<li class="status">Delivered</li>
?
Используйте массив:
$status = array('Submitted', 'Delivered', ...);
Тогда используйте $status[$order['status']]
когда вы показываете это.
Вы также можете сделать это в SQL:
SELECT username,
CASE status
WHEN 0 THEN 'Submitted'
WHEN 1 THEN 'Delivered'
...
END AS status,
...
Других решений пока нет …