Mam problem ze stworzeniem prostej listy wyboru listy miesięcy od daty rejestracji. Nie mam problemu z wygenerowaniem samych miesięcy, wykonuję to tym kodem:
/* Create list of months! */ $userJoinDate = $this->memberData['joined']; $monthsData = ''; $countMonths = 1; /* Set to current time! */ IPSTime::setTimestamp( $userJoinDate ); /* Create language array of months */ $monthsNames = array( $this->lang->words['M_1'], $this->lang->words['M_2'], $this->lang->words['M_3'], $this->lang->words['M_4'], $this->lang->words['M_5'], $this->lang->words['M_6'], $this->lang->words['M_7'], $this->lang->words['M_8'], $this->lang->words['M_9'], $this->lang->words['M_10'], $this->lang->words['M_11'], $this->lang->words['M_12'] ); /* List months! */ while( $userJoinDate <= $actualDate ) { /* More than 12 months? */ if( $countMonths >= 12 ) { break; } /* Get Month */ $dateArray = IPSTime::unixstamp_to_human( $userJoinDate ); /* Add to list of months... */ $monthsData .= "\t<option value='{$dateArray['month']}'"; $monthsData .= ( $actualMonth == $dateArray['month'] ) ? " selected='selected'" : ''; $monthsData .= ">{$monthsNames[ $dateArray['month'] - 1 ]} {$dateArray['year']}</option>\n"; /* Add month! */ IPSTime::add_month(); $userJoinDate = IPSTime::getTimestamp(); /* Increment! */ $countMonths++; }
Jedyny znany mi błąd, to ten, że nie dodaje mi ostatniego miesiąca, ale z tym sobie jakoś poradzę. Problem tkwi w tym, że wybierając jeden z miesięcy, ma Ajax aktualizować wyniki, ale co zapisać w wartości opcji? Nie ma sensu zapisywać ID miesiąca, bo je generuję do 12 miesięcy, aby lista nie była zbyt duża, a także, żeby wyników nie było za dużo. Nie widzę sensu zapisywać wartości jako datę unixową, chyba, że to ma sens? To ma działać tylko dla wywołań Ajax, więc sprawa rozbija się o zapisanie wartości i dlaczego nie dodaje mi ostatniego możliwego miesiąca?
Moim celem jest stworzenie listy w ten sposób:
Grudzień 2009
Styczeń 2010
Luty 2010
Gdzie w grudniu nastąpiła rejestracja do dnia dzisiejszego. Żebym mógł w łatwy sposób via Ajax aktualizować wyniki.
Pozdrawiam,
Largo
Witam,
Z tamtym problemem sobie poradziłem w 100% i nie okazał się trudny :-) Ale moim nowym problem jest zapytanie MySQL. Mam danę zapisywaną w formacie unixowym, więc operacje na formacie dat z MySQL odpada, zostaje konwersja, ale to za dużo roboty. Mam rozwiązanie polegające na dołączeniu deklaracji warunku z datami pomiędzy, więc wykorzystanie BETWEEN, ale czy to najoptymalniejsze wyjście?
Myślałem, że dałoby się poprzez przygotowanie danych wykorzystać warunek, że w danym miesiącu. Mam do wyboru z opcji dać nazwę miesiąc ( IMHO bezsens ), ale dałem liczbę określającą dany miesiąc. I jak takie zapytanie stworzyć? Problem polega na tym, że użytkowników wybiera danych miesiąc i tylko z niego są pokazywane informacje.
Proszę o porady.
Pozdrawiam,
Largo