【问题标题】:Changing sprintf value according to value in a row根据连续值更改 sprintf 值
【发布时间】:2015-03-12 04:43:06
【问题描述】:

我的问题是这样的

我有一个数据库,它在“状态”行中存储 int 值,我想表示某些订单状态:

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>

?

【问题讨论】:

  • 为什么不使用另一个变量在 sprintf 之外执行 if 语句。像 $dummy = $order['status'] 然后将其用于 sprintf

标签: php mysql int printf


【解决方案1】:

使用数组:

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

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

你也可以在 SQL 中做:

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

【讨论】:

  • 很好的答案,不需要额外的如果我建议的
猜你喜欢
  • 2021-11-28
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 2018-01-24
  • 2017-07-10
  • 2017-09-08
相关资源
最近更新 更多