Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
mysql left join - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: mysql left join (/thread-mysql-left-join)



mysql left join - Radian - 15-08-2012

Od razu mówię, rekinem nie jestem w tej dziedzinie więc pytanie może być banalne i pewnie takie jest...

$query = mysql_query('SELECT u.id, u.Imie, u.Nazwisko, u.szkolenie, w.id_uzytkownik as istnieje_wniosek FROM uzytkownik u LEFT JOIN wniosek w ON u.id=w.id_uzytkownik WHERE opiekun_id="'.$id_opiekuna.'" AND poziom="'.$poziom.'"') or die(mysql_error());

moje zapytanie jest powyżej.
Chodzi o to, że użytkownik z tabeli "uzytkownik" może mieć wniosek w tabeli "wniosek", ale jeśli takowego wniosku nie posiada "istnieje" ma być równe NULL

czyli w pętli while zwrócone zostaje

uzytkownik wniosek
id: 1 1
id:2 NULL
id:3 3

wszystko tak jak potrzebuję, potem moge dać odpowiedni if i np. użytkownicy z wnioskami zostają nieaktywni w jakiś tam sposób np. <a href> zaś użytkownicy bez wniosków są specjalnie oznaczeni itd. itd.

problem pojawia się w momencie gdy wszyskto wrzucam do funkcji i całość wygląda następująco

function nazwa($id_opiekuna, $poziom){
$query = mysql_query('SELECT u.id, u.Imie, u.Nazwisko, u.szkolenie, w.id_uzytkownik as istnieje_wniosek FROM uzytkownik u LEFT JOIN wniosek w ON u.id=w.id_uzytkownik WHERE opiekun_id="'.$id_opiekuna.'" AND poziom="'.$poziom.'"') or die(mysql_error());
while($q=mysql_fetch_assoc($query)){
$uzytkownik[] = $q;
}
return $uzytkownik;
}

następnie w kodzie php chcąc wyświetlić listę użytkowników:

$zaproszeni_uzytkownicy = $baza->nazwa($_SESSION['id'], "-1");

if($zaproszeni_uzytkownicy>0){
for($i = 0; $i < count($zaproszeni_uzytkownicy); $i++){

echo $zaproszeni_uzykownicy[$i]['istnieje_wniosek'];

if($zaproszeni_uzykownicy[$i]['istnieje_wniosek']==NULL){
echo 'cos tam'; //tutaj wyswietlam uzytkownikow spelniajacych warunek
}
else{echo 'cos tam2'; //tutaj wyswietlam ich ale majac inny styl}
}
}

klamry niektóre mogą nie być pozamykane (u mnie akurat takiego błedu nie ma, ale nie warto przeklejać tutaj całego pliku więc przykleiłem najważniejszą część, zaś echo i klamry zrobiłem tutaj na forum (mogłem o którejś zapomnieć).

Co się dzieje? A no właśnie za każdym razem warunek NULL zostaje spełniony, dlaczego ? skoro istnieje użytkownik który nie spełnia warunku NULL ponieważ istnieje jego wniosek, print_r to potwierdza.