Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pytanie w sprawie rozwiązania bazy danych dla znajomych
Forum PHP.pl > Forum > Przedszkole
lukaszk
Witam, potrzebuję na swojej stronie czegoś takiego jak znajomi i nie wiem jak to rozwiązać

Coś jak na Nk użytkownik zaprasza innego i ten inny musi to potwierdzić
Czyli dwie kolumny z id i jedna ze statusem (i jeszcze pomocnicze)

id_user1 | id_user2 | status | ...
34 | 25 | oczekuje |


ja to widzę tak ale tych rekordów oby było sporo załóżmy że każdy użytkownik ma 300 znajomych * ilość użytkowników serwisu to może te rozwiązanie okaże się zbyt ciężkie dla wyświetlenia i wyniki będą się długo wyświetlały.
singollo
Baza pociągnie spokojnie do -set tysięcy rekordów

  1. CREATE TABLE znajomi(
  2. userId1 INT,
  3. userId2 INT,
  4. accepted TINYINT(1),
  5. PRIMARY KEY(userId1, userId2),
  6. KEY(userId2, userId1));
  7.  
  8. -- Stworzenie zaproszenia:
  9. INSERT INTO znajomi(userId1, userId2, accepted) VALUES ($zapraszajacy, $zaproszony, 0);
  10. -- Lista zaproszen do zaakceptowania:
  11. SELECT * FROM znajomi WHERE userId2 = $mojId AND accepted = 0;
  12. -- Zaakceptowanie zaproszenia:
  13. UPDATE znajomi SET accepted = 1 WHERE userId1 = $zapraszajacy AND userId2=$mojId
  14. -- Lista znajomych:
  15. SELECT userId1 FROM znajomi WHERE userId2=$mojId AND accepted = 1 UNION SELECT userId2 FROM znajomi WHERE userId1 = $mojId AND accepted = 1;






lukaszk
Dziękuję za rozwiązanie smile.gif Pozdrawiam

Witam, pojawiła się mała komplikacja.
Mam tabelę użytkownicy i znajomi
Znajomi przetrzymuję id zaproszenia i użytkowników (zaproszony i zapraszający)
tabela użytkownicy zawiera wszystkie detale użytkownika

Potrzebuję złączenia aby wyświetlić listę znajomych z detalami

zrobiłem to tak ale nie wyświetla poprawnie rekordów

  1. SELECT *
  2. FROM znajomi z1 JOIN uzytkownicy u2
  3. ON (u2.id_uzytkownik = z1.id_user_1 OR u2.id_uzytkownik = z1.id_user_2)
  4. WHERE z1.id_user_1='$id_user' OR z1.id_user_2='$id_user'

To zapytanie wyświetla obu użytkowników w liście znajomych czyli zapraszający i zaproszony a powinien być tylko jeden użytkownik bo obecnie ja jestem na swojej liście zaproszonych i to samo u drugiego użytkownika.
$id_user - przechowuje id zalogowanego użytkownika

dodam że zmienna $id przetrzymuję id użytkownika którego detale przeglądamy
jaslanin
myślę że ten link Ci pomoże:

http://dba.stackexchange.com/questions/101...hip/10206#10206
lukaszk
Niestety nie moja baza nie jest profesjonalna i wygląda tak

  1. CREATE TABLE IF NOT EXISTS `znajomi` (
  2. `id_zaproszenia` int(11) NOT NULL auto_increment,
  3. `id_user_1` int(11) NOT NULL,
  4. `id_user_2` int(11) NOT NULL,
  5. `accepted` int(11) NOT NULL,
  6. `data` date NOT NULL,
  7. `data_czas` datetime NOT NULL,
  8. PRIMARY KEY (`id_zaproszenia`)
  9. )

  1. CREATE TABLE IF NOT EXISTS `uzytkownicy` (
  2. `id_uzytkownik` int(11) NOT NULL auto_increment,
  3. `nick` varchar(100) collate utf8_polish_ci NOT NULL,
  4. `pass` varchar(60) collate utf8_polish_ci NOT NULL,
  5. `email` varchar(90) collate utf8_polish_ci NOT NULL,
  6. `link_avatar` varchar(150) collate utf8_polish_ci default NULL,
  7. PRIMARY KEY (`id_uzytkownik`)
  8. )


Potrzebuję wyświetlić znajomych użytkownika wyświetlając dane z tabeli użytkownicy.
Czyli SELECT który wybiera rekordy gdzie w id_user_1 albo id_user_2 jestem ja i wyświetla te rekordy.
Dane które chcę wyświetlić znajdują się w tabeli uzytkownicy.

To proste ale zapytanie musi być poprawne a takiego nie mogę skleić więc proszę o pomoc.
Pozdrawiam

Proszę nie sugerować się zadeklarowanymi wartościami pół to zostanie zmienione

poradziłem sobie z poprzednim ale utkwiłem na jednym etapie
Tablica zawiera id_dodanego (może to być film, galeria, wydarzenie) i porównuję to z tabelą w tym przypadku filmy i wyświetla te wpisy których id są w tablicy.
Teraz mam jeszcze tabelę znajomi i jak przerobić to zapytanie aby wpisy były wyświetlane u zalogowanego użytkownika a także u znajomych osoby która dodała wpis.
Do momocy $id - id użytkownika przeglądanego, $id_isset_useer - id użytkownika zalogowanego.

  1. SELECT *
  2. FROM tablica a JOIN filmy b
  3. WHERE a.id_dodany=b.id_film ORDER BY id_film DESC

Proszę o pomoc
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.