![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 25.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Umieściłem już tutaj na forum podobny temat w dziale MySQL ( Temat: PHP SQL Powiadomienia jak na facebooku )
Jednak z nikąd pomocy.. Postanowiłem zapytanie poprostu zgrupować i w PHP jakoś to obsłużyć.. Pytanie: jak?
mam zbite powiadomienia i nie wiem za bardzo jak je obsłużyć? Dodać do SQL 'COUNT' i dla każdego osobno wywołać kolejne "query" i na jego podstawie budować powiadomienie? Chce powiedzieć że chce uzyskać coś takiego: "User1,User2 oraz User3 dodali komentarz do twojego wpisu".. Może któryś z was "PHPowców" mi pomoże ![]() ![]() P.s. chciałbym ograniczyć ilość połączeń a powyższy pomysł z COUNT do takich raczej nie należy ;x |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 21.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Chcesz pętlą odczytać wszystkie rekordy ?
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Chce powiedzieć że chce uzyskać coś takiego: "User1,User2 oraz User3 dodali komentarz do twojego wpisu".. Imo najlepiej byłoby powiązać jakoś rekord "powiadomienie" z komentowanym elementem np dodać kolumnę "external_target_id". Wtedy po dodaniu komentarza do tego elementu będziesz mógł wyciągnąć konkretne powiadomienie i dodać mu informację o kolejnym komentarzu. -------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 25.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowidzi..
@krowal ale tam jest coś takiego ![]() ![]() @sonquer tak chce zrobić pętlę w środku której musiałbym zrobić kolejne zapytanie.. btw. w tych powiadomieniach są też zaproszenia do znajomych - nie chce ich grupować każde ma być oddzielnie.. brakuje mi pomysłów. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zerknąłem na ten drugi wątek i nie wiem czy to o to Ci chodzi... ale jeśli chcesz zamiast 50 powiadomień, że ktoś skomentował jakiś wpis, tylko jeden, to zamiast grupować po prostu posortuj tak, by w osobnych tablicach miał te zdarzenia które chcesz umieścić w jednym powiadomieniu np (poniższy kod nie ma działać ma Ci podsunąć pomysł jak to rozwiązać)
I teraz w zmiennej $wynik masz posortowane elementy... Czyli jeśli user dostał 50 komentarzy (type=3) od różnych osób odnośnie tego samego elementu (what=10), to w $wynik[10][3] masz array zawierającą 50 wierszy z bazy z których chcesz utworzyć jeden komunikat
By ładnie wszystko działało będziesz musiał zagnieździć 3 foreach i dla każdego typu generować inny komunikat. Edit: Jeśli niektórych typów nie chcesz grupować to też przy takim podejściu nie ma problemu... poprostu dla type=ileśtam generujesz wiele komunikatów zamiast jednego połączonego. Ten post edytował aachi 28.08.2012, 18:56:42 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 25.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
@aachi
dzięki.. jest to myśl.. użyć tablic.. i można by wpisać do niej akcje do danego typu i "zewnętrznego ID".. Dałeś dobry pomysł ![]() ![]() P.s. może to potrwać bo zająłem się uploadem zdjęć ![]() ----edit--- dobra teraz mam pogrupowane ![]() zbudowałem potrójny foreach itp.. i narazie tak poprostu zobaczyłem czy działa - działa.. ale na liście muszą się pojawić jeszcze posortowane "czasowo" od najnowszego do najstarszego (ograniczam wyniki czasowo więc tablica nie urośnie ogromna).. jak posortować to w tych tablicach? ;> Ten post edytował MTF 29.08.2012, 21:48:48 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
... ale na liście muszą się pojawić jeszcze posortowane "czasowo" od najnowszego do najstarszego (ograniczam wyniki czasowo więc tablica nie urośnie ogromna).. jak posortować to w tych tablicach? ;> W momencie gdy tworzysz treści powiadomień z wielu wpisów (w tym potrójnym foreach), musisz ustalić dodatkowy parametr "czas" i go zapisywać razem z już zgrupowanym powiadomieniem. Musisz wybrać czy czasem powiadomienia będzie czas kiedy pierwsza osoba dodała komentarz, czy też gdy ostatnia. Jeśli np. ważne jest pierwsza to nadpisujesz czas gdy jest wcześniejszy niż obecnie zapisany dla powiadomienia
I teraz jak chcesz wyświetlić powiadomienia od najstarszego do najmłodszego to:
KILKA UWAG: - Tworzę osobną tablicę $sortowaniepoczasie, zamiast zapisywać czas w $pogrupowanepowiadomienia, bo jesli będziesz chciał jeszcze po czymś innym sortować, to wtedy poprostu dodajesz kolejną tablice analogicznie do tej z czasami. Jeśli nie chcesz, to czasy możesz zapisywać jako klucze w $pogrupowanepowiadomienia. - Zwróć uwagę na dodatkowe (ostatnie) nawiasy w linii: $sortowaniepoczasie[$komunikat_tmp['czas']][] - są po to, że dla jednego czasu może pojawić się kilka powiadomień, więc bez nich mógłbyś trzymać pod tym czasem tylko jedno, ostatnio dodane. - Troszkę pogmatwany ten kod wyszedł i pewnie przydałaby mu się jakaś optymalizacja... ![]() Ten post edytował aachi 30.08.2012, 10:25:27 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 25.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki aachi
Żeby nie było tak pogmatwane w tych pętlach zrobiłem sobie funkcję która buduje powiadomienia i do niej odsyłam poprostu dane ![]() zaraz zajmę się zastosowaniem Twojego pomysłu ![]() Dzięki jestes bogiem! ![]() P.s. jak narazie mam coś takiego: ![]() i dam po SQL ograniczenia czasowe by ich nie było niewiadomo ile ![]() Imo stwierdziłem że zaproszenia w takiej formie i tak mogą być pogrupowane ![]() aachi mój problem został rozwiązany! ![]() Wszystko działa i jest pogrupowane! ![]() Oba tematy można zamknąć ![]() Ten post edytował MTF 30.08.2012, 11:54:29 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 23:53 |