Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sortowanie nagłówków pocztowych
Forum PHP.pl > Forum > Przedszkole
ze4lot
Witam.

Szukam ciekawego rozwiązania na sortowanie headerów maili pobranych przez imap, a dokładnie chodzi mi o ich wyświetlanie. Nie chcę by w każdej linii wyświetlać datę przyjścia wiadomości tylko podzielić je na działy (generalnie tak samo jak ma onet)
Wyobrażam sobie to tak:

Dzisiaj----------------------
1. [ ] zenek@domena.pl "pozdrów mamę" ....
2. [ ] on@domena.pl "co tam" ....
3. [ ] ona@domena.pl "spam" ....

Wczoraj---------------------
4. [ ] zenek@domena.pl "pozdrów mamę" ....
5. [ ] on@domena.pl "co tam" ....

Środa-----------------------
6. [ ] xxx@xxx.pl "free xxx again" ....

Piątek-----------------------
7. [ ] xxx@xxx.pl "free xxx" ....

Weekend-----------------------
8. [ ] my@php.pl "php" ....

Zeszły tydzień-----------------
9. [ ] tak@tak.pl "tak" ....
10. [ ] nie@nie.pl "nie" ...

Itp...

po zeszłym tygodniu może być po prostu "starsze".

aktualnie mój kod wygląda w ten sposób:
  1. <?php
  2. ...
  3. for ($i = 1; $i <= imap_num_msg($mbox); $i++)
  4. {
  5. $header = imap_headerinfo($mbox, $i, 99, 99);
  6. echo '<tr>
  7. <td>' . $i . '</td>
  8. <td>' . gmdate('Y-m-d H:i:s', $header->udate) . '</td>
  9. <td><a href="mailto:' . $header->from[0]->mailbox . '@' . $header->from[0]->host . '">' . $header->from[0]->mailbox . '@' . $header->from[0]->host . '</a></td>
  10. <td>' . $header->fetchsubject . '</a></td>
  11. </tr>';
  12. }
  13. ...
  14. ?>


EDIT.
za najciekawszy pomysł, który zastosuje postaram się jakoś odwdzięczyć.
erix
Do głowy przychodzi mi teraz coś takiego:

Robisz tablicę na wiadomości, w kluczach wciskasz np. "wczoraj", itp. W trakcie przetwarzania pętli, sprawdź, w którym przedziale czasowym się mieści i wrzuć do odpowiedniego "pudła".

Potem druga pętla, na poszczególnych "pudłach" i wyświetlasz z każdego wiadomości w grupach.
ze4lot
Bardzo prosiłbym o kod.
erix
Jest takie powiedzenie, dasz komuś rybę - nakarmisz na jeden dzień, naucz go łowić ryby - nakarmisz na całe życie.

Pokombinuj trochę, to są podstawowe wiadomości dotyczące pracy z tablicami.

Moje rozwiązanie bazuje na kluczach; w rzeczywistości robisz to tak, jakbyś robił porządki w biurze. Stawiasz sobie - przykładowo -pudła opisane "wczoraj", "dzisiaj", "starsze".

I przeglądasz na biurku papiery, wrzucasz do odpowiednich pudeł. Potem sobie wszystko ładnie układasz na półce, pogrupowane.

I teraz z obrazowego, na "nasze". Pudła w magazynie są to tablice, a ich podpisy, to klucze elementów tablicy (magazynu). No i teraz każde pudło, to jest taka tablica i przy przeglądaniu papierów - pętla - wrzucasz wszystko do odpowiednich pudeł.

Ok, wszystko posortowane, teraz wykładasz po kolei. Bierzesz kolejno pudła (to sięganie po pudła, to też jest pętla) i dla każdego z osobna (kolejna pętla) wyciągasz papiery na półkę.

Twoja półka, to po prostu lista wiadomości. ;]

Mam nadzieję, że trochę przybliżyłem Ci moją ideę. ;]
marcio
Nie wiem tablic dobrze nie znam ale zrobic tablice ktora bedzie miala wszystkie dni tygodnia i zamienic je na pierwsze litery z alfabetu poniedzialek na a wtorek na b etc.. potem zastosowac funkcje ksort i jak beda mialy zla kolejnosc to array_reverse() ale nie wiem czy takie cos moze dzialac smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.