Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> schemat bazy "prywatnych" profili, ala grono, nasza-klasa
szczypior
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

Ostrzeżenie: (0%)
-----


Witam

Serwisy takie jak grono czy nasza-klasa wprowadziły możliwość wyboru przez użytkownika, które dane mają być widoczne jakim użytkownikom. Tzn, można określić że imię będą widzeń wszyscy, zalogowani będą widzieć też nazwisko, a znajomi np: zdjęcia. Ciekaw jestem jak przy tego rodzaju profilach buduje się bazę, czy najlepszym rozwiązaniem jest po prostu dodanie dodatkowych pól w tabeli, w ten sposób:

  1. | id | imie | pokaz_imie | nazwisko | pokaz_nazwisko itp
  2. | 1 | Karol| wszyscy | Kowalski | zalogowani


Czy jest może lepszy, efektywniejszy sposób?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
heaven
post
Post #2





Grupa: Nieautoryzowani
Postów: 92
Pomógł: 15
Dołączył: 21.10.2006

Ostrzeżenie: (0%)
-----


Zrobiles blad i pisales czaly czas NAME_VISIBILITY w 3 ifach
  1. <?php
  2. //$option = "0001001"; // tu tez byl blad!!!!
  3. $option = 2^0 | 2^3; czyli liczba 9 a bitowo 9 to 1001
  4.  
  5. define('NAME_VISIBILITY',1); // 1 czyli bitowo 00001
  6. define('EMAIL_VISIBILITY',2); // 2 czyli bitowo 00010
  7. define('GG_VISIBILITY',4); // 4 czyli bitowo 00100
  8. define('CITY_VISIBILITY',8); // 8 czyli bitowo 01000
  9.  
  10. if($option & NAME_VISIBILITY) { echo "<p>".NAME_VISIBILITY; }
  11. if($option & EMAIL_VISIBILITY) { echo "<p>".EMAIL_VISIBILITY; }
  12. if($option & GG_VISIBILITY) { echo "<p>".GG_VISIBILITY; }
  13. if($option & CITY_VISIBILITY) { echo "<p>".CITY_VISIBILITY; }
  14. ?>

Tak, option i inne dane uzytkownika bobierasz z bazy i zamiast echo "<p>".NAME_VISIBILITY; powinienes napisac echo "<p>".#user_name;, oczywiscie user_name tez musisz wczesniej odczytac z bazy

Wszystki definicje musza byc wielokrotnoscia dwojki czyli 1,2,4,8,16,32,64,128,256,......
w tym przykladzie 2 jest podnoszone do potegi
  1. <?php
  2. define('NAME_VISIBILITY',2^0); // 1 czyli bitowo 00001
  3.  define('EMAIL_VISIBILITY',2^1); // 2 czyli bitowo 00010
  4.  define('GG_VISIBILITY',2^3); // 4 czyli bitowo 00100
  5.  define('CITY_VISIBILITY',2^4); // 8 czyli bitowo 01000
  6. ?>

zauwaz ze wszystkie te dane trzymasz w bazie np. w typie int. int w mysql ma chyba 4 bajty wiec co za tym idzie mozesz 32 rozne opcje tam przetrzymywac i to nie tylko dla tej widocznosci mozesz przeciez np. zrobic wylaczenie konta
define('ACCOUNT_DISABLE', 16); // czyli 2^5
i przy logowaniu sprawdzac czy czasem nie ma bitu ustawionego dotyczacego wylaczenia konta i zalogowac albo nie

Ten post edytował heaven 11.02.2008, 19:53:57
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 00:11