根据行中的值更改sprintf值

时间:2015-03-12 04:43:06

标签: php mysql int printf

我的问题是这个

我有一个数据库,它将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>

我尝试在sprintf中使用if语句,但没有成功。

有没有人知道如何从

更改显示的代码
<li class="status">3</li>

<li class="status">Delivered</li>

1 个答案:

答案 0 :(得分:2)

使用数组:

$status = array('Submitted', 'Delivered', ...);

然后在显示时使用$status[$order['status']]

您也可以在SQL中执行此操作:

SELECT username,
    CASE status
        WHEN 0 THEN 'Submitted'
        WHEN 1 THEN 'Delivered'
        ...
    END AS status,
    ...