php sql форматирование SELECT номера столбцов - PullRequest
0 голосов
/ 06 ноября 2018

Я извлекаю различные столбцы из таблицы SQL, и некоторые из них являются числовыми или валютными, в примере скажем:

$sql="SELECT id_column, event_column, amount_column FROM table1";

Затем я показываю их, используя это:

$result = mysqli_query($conn,$sql);

echo "<table border='1'>
        <tr>
          <th>id</th>
          <th>event time</th>
          <th>amount</th>
        </tr>";

while($row = mysqli_fetch_array($result)) {
    echo "<tr>";
      echo "<td>" . $row[' id_column '] . "</td>";
      echo "<td>" . $row[' event_column '] . "</td>";
      echo "<td>" . $row[' amount_column '] . "</td>";
    echo "</tr>";
}

echo "</table>";

Можно ли изменить формат чисел, получаемых в amount_column?

Я видел, что должна быть возможность использовать команду для изменения данных с одним числом так, как мне хотелось бы - number_format ($ number, 2, ',', '.') - но, похоже, это не относится ко всем столбцам

Что мне нужно, так это использовать запятую для десятичной дроби меньше одного (yy) и указывать для других, сгруппированных по 3 (x.xxx) тысячам, что-то вроде xx.xxx.xxx, yy

Есть ли у кого-нибудь предложения? (включая то, как изменить настройки в PHP или SQL к моменту ввода данных через форму, у которых вместо запятой вместо запятой есть точка с запятой, но в SQL они сохраняются по-другому - десятичная пунктуация в Великобритании и США, я думаю, когда мне нужен EU Итальянская / немецкая пунктуация или, по крайней мере, стандарт ISO с использованием запятой для десятичной дроби и пробела для каждой группы из трех чисел).

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Правильный ответ - мой комментарий:

echo "<td>" . number_format($row['amount_column'], 2, ',', ' ') . "</td>";

Нельзя делать:

$row[' amount_column ']

Интервал для подсчета индекса массива!

вот доказательство https://ideone.com/FtPEc6

Так что технически вы одобрили ответ - неправильный.

0 голосов
/ 06 ноября 2018

ОБНОВЛЕНИЕ:

Да, правда money_format работает не на windows. Спасибо, Дейв. :)

Использование number_format( $row[' amount_column '], 2, ',', '.')

Это дает вам что-то вроде 123.456.789,12

PHP number_format


(Не на окнах!)

Вы можете использовать php´s money_format('%i', $row[' amount_column '])

PHP money_format

<?php

setlocale(LC_MONETARY, 'en_US');


$result = mysqli_query($conn,$sql);

echo "<table border='1'>
        <tr>
          <th>id</th>
          <th>event time</th>
          <th>amount</th>
        </tr>";

while($row = mysqli_fetch_array($result)) {
    echo "<tr>";
      echo "<td>" . $row[' id_column '] . "</td>";
      echo "<td>" . $row[' event_column '] . "</td>";
      echo "<td>" . money_format('%i', $row[' amount_column ']) . "</td>";
    echo "</tr>";
}

echo "</table>";
...