Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
[PHP][MySQL] Tworzenie systemu znajomych - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: [PHP][MySQL] Tworzenie systemu znajomych (/thread-php-mysql-tworzenie-systemu-znajomych)

Strony: 1 2


[PHP][MySQL] Tworzenie systemu znajomych - e-konrad - 13-04-2012

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


RE: [PHP][MySQL] Tworzenie systemu znajomych - kancik - 13-04-2012

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 Smile 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ć.


RE: [PHP][MySQL] Tworzenie systemu znajomych - e-konrad - 13-04-2012

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?


RE: [PHP][MySQL] Tworzenie systemu znajomych - kancik - 13-04-2012

Nie można chyba powiedzieć że wynik będzie zapisany Wink 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.


RE: [PHP][MySQL] Tworzenie systemu znajomych - e-konrad - 13-04-2012

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


RE: [PHP][MySQL] Tworzenie systemu znajomych - kancik - 14-04-2012

dokładnie tak Wink Najprostszy i myślę optymalny sposób.


RE: [PHP][MySQL] Tworzenie systemu znajomych - e-konrad - 14-04-2012

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


RE: [PHP][MySQL] Tworzenie systemu znajomych - kancik - 14-04-2012

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`.`loginFROM `znajomi`
LEFT JOIN `users
ON `znajomi`.`id_znajomego`= `users`.`id`
WHERE `znajomi`.`id_zalogowanego` = tutaj_zmienna_php AND `znajomi`.`status`=1 ORDER BY `znajomi`.`idDESC 

Mniej więcej tak zapytanie ma wyglądać, żeby pobrać znajomych użytkownika wraz z loginami.



RE: [PHP][MySQL] Tworzenie systemu znajomych - e-konrad - 14-04-2012

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


RE: [PHP][MySQL] Tworzenie systemu znajomych - kancik - 14-04-2012

(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ć....