Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sortowanie dat
Forum PHP.pl > Forum > Przedszkole
sliwa007
Witam,

Mam w bazie kolumnę w której są zapisywane daty w formacie np. 10_10_2011 i teraz chcę te daty wyciągnać z bazy i posortować od najnowszej do najstarszej. Od razu nadmieniam że nie są to daty dodania rekordu do bazy. Kiedy próbuje posegregować je po liczbie wychodzi:

01_10_2011
01_11_2011
02_10_2011
03_10_2011

a chaiłbym

01_10_2011
02_10_2011
03_10_2011
04_10_2011

Z góry dziekuję za podpowiedzi
Helid
Zamiast się męczyć w taki sposób, zmień typ tego pola na date.
wNogachSpisz
Przerobić te daty na timestampty przy pomocy funkcji date_ create_ from_ format()
a potem posortować tablice od namniejszego do największego zwykłym xsort()
sliwa007
date_ create_ from_ format() - ta funkcja u mnie nie działa.

Fatal error: Call to undefined function date_create_from_format() in xxxxxxxxxxxxxxxx on line 18
croc
  1. UPDATE tabela SET pole = concat(
  2. substring(pole, 7, 4),
  3. '-',
  4. substring(pole, 4, 2),
  5. '-',
  6. substring(pole, 1, 2)
  7. );
  8. ALTER TABLE tabela CHANGE COLUMN pole pole DATE NOT NULL;

Najlepiej wykonaj to na kopii pola, żebyś czegoś nie zepsuł.
wNogachSpisz
Cytat(sliwa007 @ 28.10.2011, 08:57:38 ) *
date_ create_ from_ format() - ta funkcja u mnie nie działa.

Fatal error: Call to undefined function date_create_from_format() in xxxxxxxxxxxxxxxx on line 18

A wiesz co to jest manual?
sliwa007
zrobiłem to w ten sposób:

  1. include('config/db.php');
  2. $query = mysql_query("SELECT data, opis FROM terminy WHERE id_login = '$id'");
  3. $ile = mysql_num_rows($query);
  4.  
  5.  
  6. $x = 0;
  7. while($x < $ile) {
  8.  
  9.  
  10. $wynik = mysql_fetch_assoc($query);
  11.  
  12. $exp_d = explode('_', $wynik['data']);
  13. $data_ok = $exp_d[0].'-'.$exp_d[1].'-'.$exp_d[2];
  14. $tablica[$x] = strtotime($data_ok).' - '.$data_ok;
  15.  
  16. $x++;
  17. }
  18.  
  19.  
  20.  
  21. if(isset($tablica)) {
  22.  
  23. sort ($tablica);
  24. $x = 0;
  25. while($x <5 ) {
  26. echo $tablica[$x].'<br>';
  27. $x++;
  28. }
wNogachSpisz
szybciej by było dać str_replace('_', '-');
croc
Kolega ma elementy daty w innej kolejności, więc mylisz się.

Kod zadziałał? Bo jest jakiś dziwny.
wNogachSpisz
Cytat(croc @ 28.10.2011, 14:12:13 ) *
Kolega ma elementy daty w innej kolejności, więc mylisz się.

O czym Ty teraz bredzisz?
sliwa007
Tak wszystko działa tak jak chciałem. Fakt można trochę skórcić kod i skożystać z tej funkcji którą podałeś. Jestem początkujący i nie znałem jej wcześniej. Dzięki za pomoc wszystkim.
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.