![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 148 Pomógł: 2 Dołączył: 4.08.2009 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam, tak to znowu ja. Jednak nie proszę o pomoc w zapytaniach, składni czy czymkolwiek oprócz odrobiny logiki.
Tak więc chciał bym wyświetlić listę użytkowników których niema na liście znajomych. Sytuacja wygląda następująco: Otwarta sesja $_SESSION['uzyt'] $user = $_SESS~ czyli np. $user = 'Kowalski'; Mam 2 tabele: USERS: ------------- |ID |USER | 1 kowalski 2 uzytk1 3 uzytk2 4 uzytk3 5 uzytk4 6 uzytk5 7 uzytk6 8 uzytk7 ------------- FRIENDS --------------------------------------------------- |ID | ID_ZNAJOMEGO | ID_UZYTKOWNIKA | --------------------------------------------------- 1 2 1 2 5 1 3 7 1 ---------------------------------------------------- Tak więc kowalski ma 3 znajomych: uzytk1 uzytk4 i uzytk6, a na liście mają wyświetlić się wszyscy oprócz kowalskiego($user) i jego znajomych. Próbowałem już na wszelkie sposoby, fory, while, IFy. Czy ktoś dał by mi jakąś wskazówkę? Naprawdę nie wiem na jakiej zasadzie logicznie to wyciągnąć. Proszę o pomoc, w razie niejasności pisać ^^. Z góry dziękuje. Ten post edytował KrzysiekKCN 15.06.2011, 21:59:25 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat na liście mają wyświetlić się wszyscy oprócz kowalskiego($user) i jego znajomych Jeżeli chcesz pobrać ID wszystkich użytkowników oprócz kowalskiego i jego znajomych, to najpierw pobierasz te ID znajomych przy pobieraniu wrzucasz je do tablicy i potem funkcją wstawiasz w takie zapytanie:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 148 Pomógł: 2 Dołączył: 4.08.2009 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Hmm implode służy do przemiany tablicy w ciągłe wyrażenie tak?
Czyli nie trzeba go używać jeżeli zastosuje np. takie coś?
----------------------------------------------------------------------------------------- pmir13 a czy ty byś mógł objaśnić działanie tego kodu? Ten post edytował KrzysiekKCN 15.06.2011, 23:20:34 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
To co jest w nawiasie z aliasem z to jest lista id znajomych kowalskiego, czyli dla przykładowych danych
Kod id_znajomego 2 5 7 Łączymy tabelę user z tą listą przez LEFT JOIN po pasujących id, otrzymujemy wszystkie rekordy z user, i pasujące po id rekordy z listy z, przy czym jeśli nie pasuje żaden id ze znajomych to jest tam NULL, zwykły JOIN (czyli INNER JOIN) po prostu pominąłby rekordy z NULL. Czyli bez where i nie ograniczając kolumn w select (select * from...) dostalibyśmy: Kod id user id_znajomego 1 kowalski NULL 2 uzytk1 2 3 uzytk2 NULL 4 uzytk3 NULL 5 uzytk4 5 6 uzytk5 NULL 7 uzytk6 7 8 uzytk7 NULL Teraz pozostaje tylko sprawdzić gdzie jest NULL i pominąć kowalskiego, bo wprawdzie sam sobie znajomym nie jest, ale nas nie interesuje, to wszystko właśnie jest sprawdzane w WHERE. Ten post edytował pmir13 16.06.2011, 07:48:22 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 15:49 |