Podział danych na miesiace

0

Witam, mam do zrobienia liste spotkań z tym że ma być z podziałem na miesiace...

szukałem w necie ale znajdowałem same kosmiczne rozwiązania a chciałbym zrobić to jak najprościej bez zbędnego kodu szczególnie że w jednym zapytaniu pobieram wszystkie spotkania i są one podzielone na listy(dodatkowe pole z identyfikatorem widocznosci) i są spotkania które są na obu listach, takie które są tylko na jednej i takie które wcale się nie wyświetlają...
reasumując

Mamy tabele id|spotkanie|lista1|lista2

id - unikalne, autoincrement
spotkanie - nazwa - varchar
lista1, lista2 - na której liście jest bool

$result = $list->goQuery($sql);
while($row = $list->fetch_array($result))
{
   if($row['lista1']) $lista_1 .= '<li>'.$row['spotkanie'].'</li>';  //dodaje element jesli ma byc widoczny
   if($row['lista2']) $lista_2 .= 'tutaj struktura listy';  //dodaje element jesli widoczny
}

no i pierwsza lista jest ok - lecą spotkania ułożone wedle miesiecy ale druga powinna byc nieco bardziej skomplikowana
czyli:
Styczen

  • spotkanie 1
  • spotkanie 2

Luty

  • spotkanie 1 ... itd

Jakieś pomysły jak to zrobić?
Mam nadzieję ze w miarę dobrze wyjaśniłem swój problem

0

naprawdę nikt nie ma pomysłów?

0

trzeba było napisać że źle napisałem, co z sql mam dać?
są pobierane wszystkie rekordy z bazy, struktura jest podana i wyjaśniona.

przykładowe dane

id spotkanie data lista1 lista2
1 spotkanie pierwsze 22.01.2012 1 1
2 spotkanie drugie 23.01.2012 1 0
3 spotkanie trzecie 24.01.2012 0 1
4 spotkanie czwarte 20.02.2012 1 1
5 spotkanie piąte 20.02.2012 0 0

(ok, przyznaje się do błędu - zabrakło mi we wcześnijszym poście pola daty - można było nie wiedzieć o co chodzi, wybaczcie)

i teraz tak:

pobieram wszystkie rekordy i w pętli uzupełniam sobie dane:

while($row = $list->fetch_array($result))
{
   if($row['lista1']) $lista_1 .= '<li>'.$row['spotkanie'].'</li>';  //dodaje element jesli ma byc widoczny
   if($row['lista2']) $lista_2 .= 'tutaj struktura listy';  //dodaje element jesli widoczny
}

Jeśli $row['lista1'] jest prawda to do $lista_1 dodaje kolejny element(zachowując te wcześniej dodane)
podobnie z $row['lista2'] z tym że nie wiem w jaki sposób to dodać aby w $lista_1 było tak jak jest czyli po prostu

<li>22.01 - spotkanie pierwsze</li>
<li>23.01 - spotkanie drugie</li>
<li>20.02 - spotkanie czwarte</li>

i tak wszystkie które w lista1 mają true

a w $lista_2 było np tak:

                <ul>
                    <li>STYCZEŃ 2012:</li>
                    <li>22.01 - spotkanie pierwsze </li>
                    <li>24.01 - spotkanie trzecie </li>

                </ul>
                <ul>
                    <li>LUTY 2012:</li>
                    <li>20.02 - spotkanie czwarte</li>
                </ul>

albo w innej formie ale tak żeby był podział na kolejne miesiące (w tym przypadku po prostu ustawiłem wcięcie pierwszego elementu listy inne (dlatego każdy kolejny miesiąc to nowa lista i jest czytelnie)

Pierwszy element jest banalny i po wyświetleniu $lista_1 wyświetla się lista tak jak ma być (z elementami tylko z true w lista1 w sql) pytam o to jak najlepiej rozwiązać drugi element czyli stworzenie $lista_2 zawierającej kod ze spotkaniami ale z podziałem na miesiace(tak jak pokazałem)

0

Stwórz sobie tablicę, której indeksem będzie numer miesiąca. W pętli rób: tablica[miesiąc wydarzenia][] = wydarzenie. Później będzie można ją w prosty sposób wyświetlić za pomocą dwóch zagnieżdżonych pętli.

Ewentualnie, jeżeli od razu chcesz generować HTML, stwórz zmienną pomocniczą, której na koniec iteracji ustawiać będziesz numer miesiąca. Na początku sprawdzasz czy miesiąc z obecnego wydarzenia różni się od tego zapisanego w poprzedniej iteracji. Jeżeli tak: dopiszesz coś w stylu </ul><ul><li>nazwa miesiąca</li>.

1 użytkowników online, w tym zalogowanych: 0, gości: 1