Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wiadomości PW - odebrane / wysłane, projekt bazy -- jak ?
japolak
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


witam

jak w temacie

interesuje mnie stworzenie wewnetrzej komunikacji miedzy użytkownikami.

z możliwością - przejrzenia historii rozmowy ( tzn. pod 4 odpowiedzią będzie widoczna 3 2 i 1 )


Tak zanim zerkłem na forum myślalem o takiej strukturze:

tabela Odebrane:
id_wiadomości_pierwotnej
id_wiadomosci_odebranej
id_użytkownik (odbiorca)
id_nadawca
tytul
tresc
data

tabela Wysłane:
id_wiadomości_pierwotnej
id_wiadomosci_wyslane
id_użytkownik (nadawca)
id_odbiorca
tytul
tresc
data


po wyslaniu 1 wiadomosci zapisuje się ona w odbiorczej u adresata i w wslanej u nadawcy z id_wiadomosci_pierwotnej, po odpowiedzi
id_wiadomości_pierwotnej - pozostaje bez zmian, natomiast id_wiadomosci_wyslane/odberane sie zmieniaja jak rowniez wszystkie pozostałe dane.

to co przejrzałem na forum nie odpowiada moim założeniom (lub błędnie to interpretuje:))

prosze o inf. czy taka baza bedzie dobra - czy da sie to latwiej zrobić.

Ten post edytował japolak 20.01.2014, 20:42:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
japolak
post
Post #2





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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




ok
zostawie swoją wersje dla potomnych:)


wiec tak. podczas pisania kodu doszedłem do wniosku ze wystarczy tylko 1 tabela. jej przykładowa struktura tak wygląda:

  1.  
  2. CREATE TABLE IF NOT EXISTS `pw_cont` (
  3. `id_pw` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  4. `id_ob` int(10) UNSIGNED NOT NULL,
  5. `id_usr_send` int(5) UNSIGNED NOT NULL,
  6. `id_usr_rece` int(5) UNSIGNED NOT NULL,
  7. `title` text COLLATE utf8_polish_ci,
  8. `content` text COLLATE utf8_polish_ci,
  9. `dell_by_usr_send` tinyint(1) UNSIGNED NOT NULL,
  10. `dell_by_usr_rece` tinyint(1) UNSIGNED NOT NULL,
  11. `read` tinyint(1) UNSIGNED NOT NULL,
  12. `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  13. PRIMARY KEY (`id_pw`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;
  15.  


natomiast aplikacja obsługuje to w następujący sposób:
1. Wyświetlanie:
a. sprawdzam czy jest dostęp do wiadomosci ( uzytkownik musi byc albo adresatem albo odbiorcą)
b. skrzynka odbiorcza - wyswietlam tylko wiadomosci ktore maja flage dell_by_usr_rece ustawiona na 0
c. skrzynka nadawcza - wyswietlam tylko wiadomosci ktore maja flage dell_by_usr_send ustawiona na 0
d. jesli read ma flage 0 to uzytkownikowi pokazuje sie info ze ma nieprzeczytana wiadomosc (liczy sume nierzpeczytanych wiadomosci )
e. flaga read automatycznie ustawiana jest na 1 po wejsciu w wiadomosc przez odbiorce. (wiadomosc jest pogrubiona dopuki nie zostala przeczytana)
f. po wejsciu w konkretna wiadomosc, w przypadku gdy rozmowa toczyla sie juz wczesniej - wiadomosc najnowsza wyswietla sie na gorze - a pozostale z tlem przyciemnionym i tabulatorem na dole.

2. dodawanie:
a. id_ob - zmieniane jest tylko w przypadku zalozenia nowego tematu ,
b. przy odpowiedzi - do title dopisuje ciąg "re: "

3. usuwanie:
a. gdy nadawca usuwa - sprawdzam czy wiadomosc nie zostala juz usunieta przez odbiorce ( sprawdzam dell_by_usr_rece ) jesli ustawione jest na 0 (nie usunieta) to ustawiam dell_by_usr_send = 1; jesli ustawione 1 to kasuje caly rekord z tabeli.


podczas pisania tej wypowiedzi, doszedłem do wniosku ze to usuwanie jest wadą tego sytemu.
bo gdy usuniemy cala wiadomosc wtedy podczas wyswietlania nadrzędnych odpowiedzi - ta jedna konretna wiadomosc sie juz nie wyswietli.
- zastanowie sie tu cz nie nadpisywac jednak caly czas contenta wczesniejszymi contentami.

gdyby ktoś chciał zobaczyć jak to wyglada w realu to zapraszam do zarejestrowania sie na mojej stronce www.kosmosnews.pl - przetestowania.

Ten post edytował japolak 11.02.2014, 01:27:56
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: 28.12.2025 - 08:53