Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 31.01.2011 Ostrzeżenie: (0%)
|
mam taką bazę
id_wiadomosci id_watku data id_nadawcy id_odbiorcy status_nadawcy status_odbiorcy tresc chcę zrobić wiadomości prywatne ale żeby były grupowane w wątkach, tu zabrakło mi logicznego myślenia chciałbym, żeby user #1 wchodził na stronę wiadomości i widział wiadomości od użytkowników z którymi pisał lub które otrzymał od innych, z góry na dół od najnowszej tak jak jest np w smsach w iphonie, później wybiera dany wątek danego usera i widzi cała historię korespondencji z danym userem od najnowszej do najstarszej... widzę okiem wyobraźni jak to ma działać ale nie wiem jak o to zapytać aby konstruktywnie odpowiedziała mi baza danych za łopatologiczne wskazówki, podpowiedzi byłbym baardzo wdzięczny! proszę o pomoc! |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Tabela konwersacje.
- id - rozpoczął - odbiorca - tytuł - jakieś podsumowania (dla ułatwienia np. suma wiadomości, liczba nieprzeczytanych itp). Tabela wiadomości - id - id konwersacji - wysyłający - treść - data Listujesz konwersacje gdzie jesteś odbiorcą lub nadawcą. Klikasz w konwersacje i pobierasz wiadomości na podstawie ID sortowane wg daty. Ten post edytował markonix 3.11.2012, 22:39:31 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 31.01.2011 Ostrzeżenie: (0%)
|
baza rozwiązała problem, tylko chce zrezygnować z tytułu a w miejsce jego żeby wyświetlała się najnowsza wiadomość z tabeli wiadomosci
mam zapytanie select * from konwersacje where rozpoczal=(tu zalogowany użytkownik) or odbiorca=(tu zalogowany użytkownik) tylko nie wiem jak dodać zapytanie do tabeli wiadomosci żeby w danej konwersacji we wspomniane miejsce tytułu pojawiła się ta najnowsza wiadomość z tabeli wiadomości i żeby przenosiło wątek(konwersację) na góre listingu konwersacji wg daty najnowszej wiadomości z tabeli wiadomości (IMG:style_emoticons/default/tongue.gif) mam nadzieję że nie skomplikowałem opisu ehh Ten post edytował dtrb 4.11.2012, 01:45:15 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Możesz próbować zrobić JOIN ale niestety nie jest to łatwe aby dołączyć najnowszy wpis (nie można posortować przed joinem).
Możesz spróbować zrobić subzapytanie z MAX ale też nie wiem czy działa na datach, a też nie wyciągnie treści wiadomości. 1) pobierasz wszystkie konwersacje, a potem już w PHP w pętli pobierasz do każdej ostatnią wiadomość albo 2) dodaje kolumnę ostatnia_wiadomosc i data_ostatnia_wiadomosc. Pierwszy sposób unika dublowania danych ale generuje dużo zapytań (ewentualnie można to zmienić w jedno z IN ale wtedy znów więcej roboty w PHP). Drugi jest prosty ale też niezbyt ładny. Musisz jeszcze pomyśleć o fladze czy przeczytane, czy usunięte, liczbie nieprzeczytanych wiadomości (nowe wiadomości). |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 31.01.2011 Ostrzeżenie: (0%)
|
właśnie męczyłem się z JOIN i lipa i wpadłem na sugerowane rozwiązanie ja zrobiłem to na hytlumytlu czyli metodą wiochy, do pętli konwersacje dodałem select z wiadomosci ktory ma warunek id_konwersacji=id z petli konwersacje ustawilem sortowanie daty desc z limitem jeden i wyswietlaja sie ostatnie wiadomosci z tabeli wiadomosci
a sortowanie konwersacji wg daty przychodzacej wiadomosci rozwiazałem dodając kolumne data do tabeli konwersacje i w tedy ustawie w formularzu aktualizacje tego pola zawsze na najnowsza date po wyslaniu wiadomosci w danej konwersacji (IMG:style_emoticons/default/tongue.gif) zapewne spotka się to zwielką krytyką (IMG:style_emoticons/default/tongue.gif) ale działa na poziomie prostych testów ;P a i duma mnie przepełnia bo z moją mikro wiedzą rozwiązałem to metodami jakimi potrafiłem (IMG:style_emoticons/default/smile.gif) oczywiście dzięki wielkie bo bez Ciebie nie wiedziałbym jak się za to zabrać (IMG:style_emoticons/default/smile.gif) EDIT status o odczytaniu dodalem do tabelki wiadomosci, a ilosc wiadomosci w konwersacji dodalem do tabelki konwersacje, reszte jak ilosc nowych zrobie w skrypcje ktory bedzie przeliczal ststusy 0 i wyswietlal ich liczbe Ten post edytował dtrb 4.11.2012, 03:14:52 |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 18:25 |