pdo — порядок PHP по кликам в WHILE

Я пытаюсь сделать заказ от большого количества кликов до более низкого, и я немного растерялся, поэтому я решил задать вопрос здесь.

Мой код:

$stmt = $db->query("SELECT DISTINCT `country` FROM `entries` ORDER by `id` ASC");
if ($stmt->rowCount() > 0) {
while ($row = $stmt->fetch()) {
$clicks = $db->query("SELECT `id` FROM `entries` WHERE `country` LIKE '{$row['country']}'")->rowCount();
$conversations = $db->query("SELECT `id` FROM `conversations` WHERE `country` LIKE '{$row['country']}' AND `link_id` = '{$id}'")->rowCount();
}

Я хочу, чтобы foreach дал мне результаты с наибольшим количеством $clicks до самого низкого.

Есть идеи, что я могу сделать?

0

Решение

Вы можете сделать этот запрос полностью в SQL с помощью чего-то вроде этого (в зависимости от диалекта SQL):

$countries = $db->query("SELECT `country`, count(1) AS clicks FROM `entries` GROUP BY `country` ORDER BY clicks DESC");
foreach ($countries as $country) {
echo "${country['country']} has ${country['clicks']} clicks. ";
}
0

Другие решения

поставить число clicks в массиве, как показано ниже:

 $clicks[] = $db->query("SELECT `id` FROM `entries` WHERE `country` LIKE '{$row['country']}'")->rowCount();

тогда вы можете просто отсортировать массив по rsort Функция PHP, как показано ниже:

echo rsort($clicks);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector