Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie dat
Largo
post
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

Ostrzeżenie: (0%)
-----


Witam,

Mam listę wyboru miesięcy. Z początku pobiera ona dane na zasadzie do 12 miesięcy od daty rejestracji i to działa idealnie. Ale skrypt jak minie 12 miesięcy, kończy iterację, aby nie zrobić listy tak wydłużonej i ma pokazywać ostatnie 12 miesięcy względem dzisiejszego miesiąca. Jak to zrobić? Jako przykład podam:

Użytkownik zarejestrował się 1 Grudnia 2008 roku, więc wg. skryptu bez limitu lista miałaby 16 pozycji. Ale ja chcę, aby lista wygenerowała listę na zasadzie:

...
Marzec 2010

Zamiast kropek 11 miesięcy.

Pozdrawiam,
Largo

Ten post edytował Largo 16.03.2010, 15:25:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
DiH
post
Post #2





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


Jeżeli zapytaniem pobierasz faktycznie konkretnie miesiące, to wystarczyłoby do zapytania LIMIT 12.
Go to the top of the page
+Quote Post
Largo
post
Post #3





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

Ostrzeżenie: (0%)
-----


  1. /* User want to see that? */
  2. if( $this->memberData['member_fg_show_stats'] && !$this->isModeratorSection )
  3. {
  4. /* Create list of months! */
  5. $startDate = $this->memberData['joined'];
  6. $actualDate = time();
  7. $actualMonth = date( 'n', $actualDate );
  8. $monthsData = '';
  9. $countMonths = 1;
  10.  
  11. /* Joined date is older than 12 months? */
  12. /* Jak to zrobić? */
  13.  
  14. /* Set start date... */
  15. IPSTime::setTimestamp( $startDate );
  16.  
  17. /* Create language array of months */
  18. $monthsNames = array( $this->lang->words['M_1'], $this->lang->words['M_2'], $this->lang->words['M_3'],
  19. $this->lang->words['M_4'], $this->lang->words['M_5'], $this->lang->words['M_6'],
  20. $this->lang->words['M_7'], $this->lang->words['M_8'], $this->lang->words['M_9'],
  21. $this->lang->words['M_10'], $this->lang->words['M_11'], $this->lang->words['M_12'] );
  22.  
  23. /* List months! */
  24. while( $startDate < $actualDate )
  25. {
  26. /* More than 12 months? */
  27. if( $countMonths >= 12 )
  28. {
  29. break;
  30. }
  31.  
  32. /* Get Month */
  33. $dateArray = IPSTime::unixstamp_to_human( $startDate );
  34.  
  35. /* Add to list of months... */
  36. $monthsData .= "\t<option value='{$dateArray['month']}'";
  37. $monthsData .= ( $inputMonth && ( $inputMonth == $dateArray['month'] ) ) ? " selected='selected'" : '';
  38. $monthsData .= ">{$monthsNames[ $dateArray['month'] - 1 ]} {$dateArray['year']}</option>\n";
  39.  
  40. /* Add month! */
  41. IPSTime::add_month();
  42. $startDate = IPSTime::getTimestamp();
  43.  
  44. /* Increment! */
  45. $countMonths++;
  46. }
  47.  
  48. /* Current month? */
  49. $monthsData .= "\t<option value='".$actualMonth."'";
  50. $monthsData .= ( !$inputMonth ) ? " selected='selected'" : '';
  51. $monthsData .= ">{$monthsNames[ date( 'm', $startDate ) - 1 ]} ".date( 'Y', $startDate)."</option>\n";
  52. }


Datę pobieram na zasadzie ostatnie 12 miesięcy, jeżeli data dołączenia jest większa niż 12 miesięcy.

Ten post edytował Largo 16.03.2010, 17:39:06
Go to the top of the page
+Quote Post
DiH
post
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


Spróbuj pobrać dane do wyświetlenia zapytaniem:
  1. SELECT * FROM tabela WHERE data_dodania < DATE_SUB(NOW(), INTERVAL 12 MONTH);


Poczytaj także:
http://dev.mysql.com/doc/refman/5.1/en/dat...nction_date-sub
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 10:51