Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
mysql left join
#1
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.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak sprawdzić czy adres www znajduje sie w bazie mysql? jarekcda 8 9,035 13-05-2017, 01:02
Ostatni post: miketodson255
  Optymalizacja MySQL-a tomek_00 1 3,932 01-09-2013, 13:31
Ostatni post: hieroshima
  [MySQL] Struktura bazy dla słownika msx83 2 3,931 24-08-2013, 16:26
Ostatni post: msx83
  Komunikacja PHP z MySQL na serwerze pawstrze 5 6,457 16-07-2013, 15:58
Ostatni post: Engine
  [MySQL] wyszukiwarka problem darlowiak 3 3,564 13-06-2013, 12:58
Ostatni post: darlowiak

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl