Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Skrypt znajomych: jak zaprojektować bazę?
Forum PHP.pl > Forum > Przedszkole
cycofiasz
Jak w tytule, załóżmy że mam tabelę `users` i każdy rekord = 1 użytkownik;

Chciałbym dodać opcję znajomych, jak np. na naszej-klasie, ale nie wiem za bardzo jaką tabelę stworzyć, czy też może wystarczą jakieś dodatkowe kolumny... Co o tym myślicie?
nospor
dodatkowa tabela, ktora bedzie trzymala powiązanie kto jest czyim znajomym:
Kod
tabela znajomi:
id_user1
id_user2

gdzie id_user1 i id_user2 to id z tabeli users. W ten sposob wiesz kto jest czyim znajomym
hateman
tylko wtedy trzeba zapamiętywać relacje w dwie strony
że A jest znajomym B i B jest znajomym A
nospor
@hateman no co ty. przyjrzyj sie temu jeszcze raz
Piotrwusek
To chyba logiczne bo nie ma chyba takiej sytuacji że A jest znajomym B ale B nie jest znajomym A
cycofiasz
Czyli jak user nr 1 dodaje usera nr2, i tamten to zaakceptuje, to należy stworzyć 2 rekordy ?
id usera 1 => id usera 2
id usera 2 => id usera 1

Czy po prostu jeden, ale za to przy odczycie znajomych pobierać id usera występujące przynajmniej w jednej z kolumn?
nospor
jeden rekord. Jeden wpis daje nam informacje o obu znajomych
phpion
Aby pobrać znajomych użytkownika o id=1 robisz zapytanie:
  1. ...WHERE id_user1=1 OR id_user2=1

i otrzymasz listę userów, których ten user dodał do swoich znajomych oraz tych, którzy jego dodali do znajomych.
hateman
Cytat(phpion @ 24.09.2008, 08:14:11 ) *
Aby pobrać znajomych użytkownika o id=1 robisz zapytanie:
  1. ...WHERE id_user1=1 OR id_user2=1

i otrzymasz listę userów, których ten user dodał do swoich znajomych oraz tych, którzy jego dodali do znajomych.


no a pozniej co?
dostaniesz array'a
z id_user1 i id_user2
i musisz sprawdzać który z nich to nasz "1"

dużo zbędnych operacji :/
phpion
Jakbyś poszukał to byś wiedział. Wystarczy dać warunek:
  1. ...IF(user_id1=1, user_id2, user_id1) AS friend...

i otrzymasz tylko listę id znajomych. Połącz sobie oba pomysły w całość, dodaj JOINa i po krzyku.
cycofiasz
Odkopię troszkę temat, bo nie wiem jak mam skonstruować to zapytanie żeby otrzymać tylko id userów którzy są znajomymi usera o podanym id.

Mam już
SELECT *
FROM `gal_znajomi`
WHERE `id_user1` =1
OR `id_user2` =1

Ale jak wyciągnąć tylko id userów różnych niż 1?
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.