2015-03-12 4 views
0

Моя проблема заключается вИзменение значения Sprintf в соответствии со значением в строке

У меня есть база данных, которая хранит 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> 

Я попытался использовать инструкцию if внутри sprintf, но безуспешно.

Кто-нибудь имеет какие-либо идеи, как изменить отображаемый код здесь от

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

в

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

?

+1

Почему вам выигрыш сделать стороны, если заявление из-за Sprintf с помощью другой переменной. Как $ dummy = $ order ['status'], а затем используйте его для sprintf –

ответ

2

Используйте массив:

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

Затем используйте $status[$order['status']], когда вы показываете его.

Вы также можете сделать это в SQL:

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

Nice Answer, donot need extra ifs, как я предложил –

+0

Отлично. Массив сделал трюк. Благодаря! – fbotfinski

Смежные вопросы