Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wiadomości PW - odebrane / wysłane, projekt bazy -- jak ?
japolak
post 20.01.2014, 20:41:19
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


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Crozin
post 20.01.2014, 21:01:20
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jeżeli chcesz mieć prywatne wiadomości z normalną historią konwersacji, potrzebujesz:
1. Obiektu reprezentującego konwersację: id, id_nadawcy, id_odbiorcy, temat, ilosc_nieodczytanych_wiadomosci_nadawcy, ilosc_nieodczytanych_wiadomosci_odbiorcy, data_utworzenia.
2. Obiektu reprezentującego pojedynczą wiadomość w obrębie konwersacji: id, id_konwersacji, id_nadawcy, id_odbiorcy, tresc, data_utworzenia.

Przy dodaniu nowej wiadomości w konwersacji (dotyczy również utworzenia samej konwersacji) zwiększasz ilosc_nieodczytanych_wiadomosci_nadawcy/ilosc_nieodczytanych_wiadomosci_odbiorcy o jeden - to rozwiązuje problem oznaczania konwersacji z nowymi wiadomościami. Przy odczycie zerujesz odpowiednie pole.
Go to the top of the page
+Quote Post
japolak
post 28.01.2014, 10:43:13
Post #3





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

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


Cytat(Crozin @ 20.01.2014, 21:01:20 ) *
Jeżeli chcesz mieć prywatne wiadomości z normalną historią konwersacji, potrzebujesz:
1. Obiektu reprezentującego konwersację: id, id_nadawcy, id_odbiorcy, temat, ilosc_nieodczytanych_wiadomosci_nadawcy, ilosc_nieodczytanych_wiadomosci_odbiorcy, data_utworzenia.
2. Obiektu reprezentującego pojedynczą wiadomość w obrębie konwersacji: id, id_konwersacji, id_nadawcy, id_odbiorcy, tresc, data_utworzenia.

Przy dodaniu nowej wiadomości w konwersacji (dotyczy również utworzenia samej konwersacji) zwiększasz ilosc_nieodczytanych_wiadomosci_nadawcy/ilosc_nieodczytanych_wiadomosci_odbiorcy o jeden - to rozwiązuje problem oznaczania konwersacji z nowymi wiadomościami. Przy odczycie zerujesz odpowiednie pole.



no ok.. co jeśli uzytkownik chciałby skasować wiadomości ? nie ma tu takiej opcji.. jesli skasuje to skasuje dla siebie i np nadawcy ..
Moze jakaś dodatkowa flaga?


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
Crozin
post 28.01.2014, 10:48:34
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Nigdy nie zrozumiem po co w systemach prywatnych wiadomości wprowadza się ich usuwanie czy ograniczoną pojemność skrzynki.
2. Jeżeli już chcesz możesz dodać do tabeli konwersacji kolumny usunięte_przez_adresata_o, usunięte_przez_nadawcę_o.
Go to the top of the page
+Quote Post
japolak
post 11.02.2014, 01:25:25
Post #5





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


--------------------
moje projekty:

www.hackwars.pl
- hacking , webdesign itp
www.kosmosnews.pl - Wszechświat bez granic
Go to the top of the page
+Quote Post
markonix
post 11.02.2014, 01:38:19
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Zrobiłeś tak jak jest na FB - nie ma tam konwersacji - zawsze rozmowa z daną osobą to kontynuacja poprzednich wiadomości.
Nie ukrywam, że tak jest prościej i w komunikatorach zbliżonych do czata na pewno jest to wygodniejsze, jednak na forach dzielenie na wątki przeważa pod względem korzyści.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 21:09