Wypisywanie użytkowników i zadań z bazy danych w dwupoziomowym menu

0

Cześć,
w mojej bazie każdy użytkownik ma kilka przydzielonych zadań, w każdym zadaniu pełni jakąś rolę (np. programista). Tabele użytkowników i zadań połączyłam właśnie tymi rolami.

Potrzebuję wypisać wszystkie zadania, w których występuje zalogowany na stronie użytkownik (login ze zmiennej sesyjnej), przy tym pobierając innych użytkowników, którzy wykonują z nim dane zadanie. Problem staje się bardziej skomplikowany, kiedy na stronie mam rozwijalne menu dwupoziomowe, gdzie pierwszy poziom to nazwy zadań, a drugi poziom (rozwijany z pierwszego) to użytkownicy przypisani do danego zadania.

Proszę o pomoc w rozwiązaniu problemów, nie chcę robić pętli while z zadaniami, w której znajdzie się drugie zapytanie do bazy o samych użytkowników, ponieważ to źle wpłynie na bazę danych. Baza i kod w załączniku.
Dziękuję.

1

Wklej ten kod jak na normalnego człowieka przystało :P Na kod na obrazku prawie nikt nie spojrzy^^

0

Myślę, że coś takiego:

SELECT t.name, tu.user_login, tu.task_id, tu.role FROM `tasks` t INNER JOIN tasks_users tu ON t.id = tu.task_id WHERE tu.task_id IN (SELECT task_id from tasks_users WHERE user_login = 'janek')

albo coś takiego

SELECT tu2.task_id, tu2.role, tu2.user_login, t.name from tasks_users tu1 RIGHT JOIN tasks_users tu2 ON tu1.task_id = tu2.task_id JOIN tasks t ON t.id = tu2.task_id WHERE tu1.user_login = 'janek'

powinno zadziałać. Nie jestem żadnym szpecem od sql i NA PEWNO da się to zrobić optymalniej / lepiej, ale na szybko wydaje się działać.

0

Witam ponownie. Kwerenda działa, z nią nie miałam większych problemów, natomiast potrzebuję się skupić na htmlu i wypisywaniu tych zadań + użytkowników do nich w menu dwupoziomowym.

Użytkownicy są w** li**, zadania są w rodzicu jako a

<ul>
	<div class="dropright">
	<?php while ($wiersz = $wynik->fetch_assoc()) {
		$imie = $wiersz['name'];
		$nazwisko = $wiersz['surname'];
		$nazwa_proj = $wiersz['nazwa'];?>
										
		<li class="dropdown-item dropdown-submenu">
									
		<a href="#" data-toggle="dropdown">
		<?php echo $nazwa_zadania; ?></a>
										
		<ul class="dropdown-menu">
			<li class="dropdown-item p-0"><a href="#" class="dropdown-item w-100">
            <?php echo $imie . " " . $nazwisko; ?></a></li>
		</ul>
										
		</li>
		<?php } $baza -> close(); ?>
	</div>
</ul>
0

Jeśli tych danych nie masz dużo (chodzi o ich wagę, żeby php nie rzucił brakiem pamięci) do po prostu sobie je możesz zapakować pierw do tablicy z kluczem w postaci zadania i zawartością w postaci samych użytkowników. Musisz zrobić do wyświetlania podwójną pętlę, ale nie powinno to wydajnościowo klęczeć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1