Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znajomi na stronie :) mysql, pdo
Forum PHP.pl > Forum > PHP
seba199696
Kto mi wytłumaczy jak zrobić znajomych w mysqlu? proszę o pomoc smile.gif
mis
jeśli dobrze rozumiem, to najłatwiej możesz po prostu zrobić w tabeli z userami dodać nowa kolumne `friends` i tam wrzucać po przecinku id inncyh ludzi, a potem przy wyświetlaniu robisz tablice - explode i heja.
seba199696
ee nie wiem czemu ale wydaje mi się że głupi pomysł troszq
rafal.t
Możesz utworzyć oddzielną tabele gdzie będziesz miał w jednej kolumnie id_user-a a w drugiej id_user-a, który jest przyjacielem. Taka tabelka users2friends.
seba199696
powiedzmy coś takiego tak?

friends
id | user1 | user2

czyli jak będę wyszukiwał znajomych usera o id 1 to będzie:

  1. SELECT * FROM tabela WHERE `user1` = '1' OR `user2` = '1'
?
IceManSpy
  1. SELECT * FROM tabela WHERE `user1` = '1' OR `user2` = '1'

jeśli chodzi o poprawność zapytania wink.gif

Ale coś o taki deseń chodzi.
seba199696
a w jaki sposób mam odczytać nazwę użytkownika?
rafal.t
Jeśli szukasz znajmoych dla usera o id = 1 to wystarczy taki sql:

  1. SELECT * FROM tabela WHERE user1 = 1

lub
  1. SELECT user2 FROM tabela WHERE user1 = 1


Oczywiście warto gdzieś w kodzie uniemożliwić dodawanie siebie do swoich znajomych wink.gif

Poczytaj o JOIN w sql i połącz dwie tabele: dane z tabeli z id przyjaciół z ich danymi z tabeli user
seba199696
Okej smile.gif Mniej więcej już wiem o co chodzi

zrobiłem sobie 2 tabele

users
id_user | name

friends
user1 | user2

I chcę wyświetlić nazwy użytkowników znajomych od 1 (id_user = 1) czyli:

  1. SELECT * FROM users
  2. JOIN friends ON
  3. (users.id_user = friends.user1 OR users.id_user = friends.user2)
  4. WHERE friends.user1 = 1 OR friends.user2 = 1
Tak?

Jeśli to jest dobrze to jak mam zrobić żeby nie wyświetlało mojej nazwy użytkownika w znajomych?
rafal.t
Dla usera o id 1, spróbuj coś takiego:

  1. SELECT * FROM users LEFT JOIN friends ON users.id_user = friends.user2 WHERE friends.user1 = 1
seba199696
no ale jak mam smile.gif np.

user1 | user2
1 | 2
1 | 3
3 | 1

i jak chce pokazać znajomych od usera o id: 1

to mi pokaże: 2/3 ale już 3 nie pokaże rozumiesz o co mi chodzi?
rafal.t
Spróbuj pokombinować z czymś takim:

  1. SELECT * FROM users
  2. JOIN friends ON
  3. (users.id_user = friends.user1 OR users.id_user = friends.user2)
  4. WHERE (friends.user1 = 1 OR friends.user2 = 1) AND users.id != 1
seba199696
hah biggrin.gif Działa smile.gif Dziękuje!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.