Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
[PHP][MySQL] Tworzenie systemu znajomych
|
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
13-04-2012, 17:21
Myślę nad stworzeniem systemu znajomości który chcę napisać na swojej stronie. W tabeli users mam wszystkich zarejestrowanych użytkowników, oraz tabela znajomi gdzie będą przechowywane relacje pomiędzy użytkownikami.
Tabela users: id, login
Tabela znajomi: id, user_id, znajomy_id, status
Czy tym sposobem tabela znajomi nie będzie przeładowana zbyt dużą ilością danych?
Może ktoś z was ma inny pomysł na działanie takiego systemu to chętnie wysłucham
Liczba postów: 341
Liczba wątków: 4
Dołączył: 15-10-2009
Reputacja:
23
To jest standardowy i zarazem najlepszy schemat relacji w takim systemie. Swego czasu na necie czytałem jak gość jakiś proponował robić dla każdego użytkownika tabele z jego znajomymi. Otóż taka tabela nie będzie przeładowana. Nie zamierzasz mieć 100 tys użytkowników chyba od razu  Zresztą nawet przy takiej liczbie innej relacji nie wymyślisz.
Jeżeli masz użytkownika A i B i są znajomymi to możesz przecież mieć tylko jeden rekord.
kto zaprasza, kogo zaprasza , status zaproszenia , data. Inna sytuacja jest jak system obserwacji jak na twitterze. Chociaż też można to jednym rekordem zrobić.
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
Jeśli dobrze rozumuję to moje zapytanie o dodanie znajomego będzie się opierać na tabeli users, którego wynik będzie zapisany w tabeli znajomi?
Liczba postów: 341
Liczba wątków: 4
Dołączył: 15-10-2009
Reputacja:
23
Nie można chyba powiedzieć że wynik będzie zapisany  Raczej wynik działania skryptu.
Pobierasz id użytkownika który jest zalogowany , id użytkownika którego zaprasza i zapisujesz do bazy. Jako status przykładowo podajesz domyślnie 2, zmiana jego będzie w przypadku gdy drugi użytkownik zaakceptuje np na wartość 1 a na wartość 0 gdy odrzuci.
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
Czyli z tabeli users pobieram id użytkownika aktualnie zalogowanego oraz id użytkownika którego zapraszam a następnie zapisuję to do tabeli znajomi ze statusem oczekiwania, czy tak?
Wybacz te być może banalne pytania ale chciałbym dokładnie zrozumieć działanie tego systemu i napisać wszystko sam nie korzystając z gotowców
Liczba postów: 341
Liczba wątków: 4
Dołączył: 15-10-2009
Reputacja:
23
dokładnie tak  Najprostszy i myślę optymalny sposób.
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
Udało mi się napisać ten skrypt, ale przy wyświetlaniu znajomych pojawia mi się niechciana wartość jednej z kolumn. Mianowista wyświetla mi się:
[imie_znajomego] [status on- offline] [dostępny lub niedostępny]
Status dostępny lub niedostępny pobieram z wartości pola status.
Kod PHP: $user=$_SESSION['login']; //pobieram z sesji nazwe uzytkownika i zapisuje do zmiennej jego id $user_id=mysql_query("SELECT * FROM users WHERE login='$user'"); while($show = mysql_fetch_assoc($user_id)){ $id = $show['id']; }
echo "<ul>"; //pobieram id przypisane do zalogowanego uzytkownika $znajomi = mysql_query("SELECT * FROM znajomi WHERE id_user='$id' AND status='1'"); while($online = mysql_fetch_assoc($znajomi)){ $znajomy = $online['id_znajomy'];
//poprzez id znajomego pobieram jego dane $kontakty = mysql_query("SELECT * FROM users WHERE id='$znajomy'");
while($pokaz = mysql_fetch_assoc($kontakty)){ $imie = $pokaz['imie']; $dostepny = $pokaz['online']; if($dostepny == 1){ echo "dostępny"; } else echo "niedostępny"; echo "<li>".$imie.$dostepny."</li>"; } } echo "</ul>";
Przykładowy wynik:
Marcin 1 dostępny
Monika 0 niedostępny
Liczba postów: 341
Liczba wątków: 4
Dołączył: 15-10-2009
Reputacja:
23
14-04-2012, 16:24
(Ten post był ostatnio modyfikowany: 14-04-2012, 16:30 przez kancik.)
Przecież dokładnie tak jak mówisz tak zaprogramowałeś chyba , że nie rozumiem o co Ci chodzi. tak przy okazji nie rób dodatkowych zmiennych $imie i $dostepny bo tylko pamiec zajmujesz.
Przecież chyba pobierać masz znajomych tylko np użytkownika Adam który ma id = 1, i np gdy tabela ma budowe
id , id_zalogowanego, id_znajomego , status ( przy czym zaakceptowanie to wartosc 1 )
Więc zapytanie wygląda
Kod PHP: SELECT `users`.`login` FROM `znajomi` LEFT JOIN `users` ON `znajomi`.`id_znajomego`= `users`.`id` WHERE `znajomi`.`id_zalogowanego` = tutaj_zmienna_php AND `znajomi`.`status`=1 ORDER BY `znajomi`.`id` DESC
Mniej więcej tak zapytanie ma wyglądać, żeby pobrać znajomych użytkownika wraz z loginami.
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Liczba postów: 21
Liczba wątków: 6
Dołączył: 21-04-2011
Reputacja:
0
Chcę żeby mój wynik wyglądał następująco:
Marcin dostępny
Monika niedostępny
Nie wiem jak mam się pozbyć wartości 1 i 0 w wyniku
Liczba postów: 341
Liczba wątków: 4
Dołączył: 15-10-2009
Reputacja:
23
14-04-2012, 16:31
(Ten post był ostatnio modyfikowany: 14-04-2012, 16:31 przez kancik.)
(14-04-2012, 16:27)e-konrad napisał(a): Chcę żeby mój wynik wyglądał następująco:
Marcin dostępny
Monika niedostępny
Nie wiem jak mam się pozbyć wartości 1 i 0 w wyniku
to po co piszesz
echo $imie.$dostepny ? napisz tylko echo $imie; ..... widać już, że nie ty to pisałeś bo nawet nie wiesz jak zmodyfikować....
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
|
Podobne wątki… |
Wątek: |
Autor |
Odpowiedzi: |
Wyświetleń: |
Ostatni post |
|
Jak sprawdzić czy adres www znajduje sie w bazie mysql? |
jarekcda |
8 |
9,035 |
13-05-2017, 01:02
Ostatni post: miketodson255
|
|
tworzenie pliku w katalogu głównym strony |
harvester2001 |
3 |
5,230 |
06-09-2013, 22:13
Ostatni post: Kartofelek
|
|
Optymalizacja MySQL-a |
tomek_00 |
1 |
3,932 |
01-09-2013, 13:31
Ostatni post: hieroshima
|
|
[MySQL] Struktura bazy dla słownika |
msx83 |
2 |
3,931 |
24-08-2013, 16:26
Ostatni post: msx83
|
|
Komunikacja PHP z MySQL na serwerze |
pawstrze |
5 |
6,457 |
16-07-2013, 15:58
Ostatni post: Engine
|
Użytkownicy przeglądający ten wątek:
|
|
Sponsorzy i przyjaciele
|
|
|