@lid2pro

Вывод из БД по дням с группировкой по направлению?

Доброго времени суток, помогите решить такую задачку.
На скриншотах обрезал дату для наглядности, там продолжается до последнего числа месяца.

Код:

$mounth_activity_stat = mysqli_query($dbconn, "SELECT activity_name, date FROM table WHERE date <= '" . $ltimefh . "' AND date >= '" . $ftimefh . "' ORDER BY date,activity_name DESC");
$cont_days = cal_days_in_month(CAL_GREGORIAN, $select_m, $select_y);

	$mounth_activity_stat_count = mysqli_num_rows($mounth_activity_stat);
	if ($mounth_activity_stat_count > 0) {
		echo "<table><thead><tr><th>Направление</th>";
		for ($t_d=1; $t_d<=$cont_days; $t_d++) {
  echo "<th>$t_d</th>";
 }
 echo "</tr></thead><tbody>";
		while ($row = mysqli_fetch_array($mounth_activity_stat)) {
		$a_activity_name = $row['activity_name'];
		$a_date = $row['date'];
		$a_date_n = date('j', strtotime($a_date));
		

		echo "<tr><td>$a_activity_name/td>";
		
				for ($d=1; $d<=$cont_days; $d++) {
					if ($d == $a_date_n) {
					echo "<td style=\"background: yellow;\">$d</td>";	
					} else {
  echo "<td>$d</td>";
					}
 }
		echo "</tr>";

		
		}
	echo "</tbody></table>";
	}

По моему коду получается так:
63ceab6e2c0c1784709987.jpeg
Т.е. Спорт повторяется с новой строчки, а нужно чтоб не повторялся, а менялась правая часть (выделялась дата, на которую он выпадает)

Необходимо вывести данные из БД, вот в таком виде
63ceab7b3a4e5826652399.jpeg

Как мне привести в необходимый вид? Пробовал группировать по activity_name в запросе, циклить при выводе, не получается. Помогите, пожалуйста.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
Я бы максимально перенёс формирование данных на БД.

Например, можно сначала сформировать список 'активностей':
select distinct `activity_name` from `table` order by `activity`_name desc

а затем для каждой из них выбрать даты:
select `date` from `table` where `activity_name`=? order by `date` desc


Но это конечно не всегда разумно и я не знаю вашу ситуацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы