Чтобы получить итоговые данные для каждого довольно прост (если вашего столбца перечислимого называется «статусом» и имеет столбец с именем ID):
SELECT status, count(id) FROM myTable GROUP BY status;
Хотя можно было бы написать запрос для расчета фактические проценты, самое простое, что оттуда делать математику себя
Если вы решили использовать MySQLi для запуска запроса, код будет выглядеть примерно так:
// create mysqli connection
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$res = $mysqli->query("SELECT status, count(id) AS subtotal FROM myTable GROUP BY status");
$totals = array();
while ($row = $res->fetch_assoc()) {
$totals[$row['status']] = $row['subtotal'];
}
Это даст вам массив как ['pending' => 100, 'discount' => 200, 'received' => 50]
):
$total = $result['pending'] + $result['discount'] + $result['received'];
$pctPending = ($result['pending']*100)/$total;
анс так далее. Разумеется, вам нужно будет скорректировать код, чтобы он соответствовал возвращаемым результатам, но математика применяется независимо.
На самом деле я не использую пока печатать выходные данные. Я использую что-то вроде этого (я адаптировался с вашим кодом): $ result = mysql_fetch_array (mysql_query ("SELECT status, count (id) FROM myTable GROUP BY status;")); Используя ваш пример для этого запроса, вывод возвращает «pending» – Adrian
Hm. Запрос фактически вернет три строки, каждая строка со статусом и счетчиком. Итак, как вы догадались, вам придется использовать цикл while, чтобы получить все три значения. Попробуйте выполнить запрос непосредственно в любом инструменте базы данных, который вы используете, чтобы взглянуть на результаты, и это должно вести ваше кодирование. Однако также обратите внимание, что вы никогда не должны использовать методы mysql_ *. Они устарели, и в последней версии php их вообще нет. Альтернативами являются mysqli и PDO. – Jerry
некоторые (немного более сложные, чем необходимо) примеры использования 'mysqli' для выполнения оператора и циклического анализа результатов [здесь] (http://php.net/manual/en/mysqli.quickstart.statements.php) – Jerry