15-08-2012, 14:22
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.
$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.