Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] i [sql]jak sortowac
Forum PHP.pl > Forum > Przedszkole
pkania
hej
jak sortowac w [php] mam tabelke ktora wyrzuca mi dane z bazy i
segreguje je w kolejnosci alfabetycznej

zapytanie:
  1. SELECT *
  2. FROM `tabela` ORDER BY `termin` ASC


wpis w polu termin jest (1. 12 grudnia, 2. 10 grudnia.....itd)

tabelka wyswietla mi tak
1. 12 grudnia
11. 15 grudnia
13. 01 stycznia
2. 10 grudnia
3. 11 grudnia

a chcialbym zeby wyswietlala tak
1. 12 grudnia
2. 10 grudnia
3. 11 grudnia
11. 15 grudnia
13. 01 stycznia

macie pomysl jak to zrobic?
kossa
1. zaprojektuj w inny sposób tabelę z danymi w bazie danych
albo
2. analizuj po kolei każdy wpis i zastosuj algorytm sortowania bombelkowego po wcześniejszym umieszczeniu wszystkich danych w tablicy

Łukasz
pkania
a czy nie ma jakiegos prostego sposobu?
gdy sortuje po 'id' wszystkie cyfry ukladaja sie dobrze 1,2,3...10,11,12,....itd
kwiateusz
nie rozumiem? to sortuj po id jak chcesz zeby liczby były odpowiednio posortowane...
pkania
ale "id" to kolejny numer mojego wpisu w bazie, a ja chcialbym posegregowac wedlug drugiego wpisu jakim jest "termin"
i tak po kolei termin nr 1 to u mnie wpis "1. 12 grudzien" termin nr 2 to wpis "2. 15 grudzien" itd a numer "id" dajmy na to 1 nie odpowiada w tym przypadku terminowi "1. 12 grudzien"
mag6661
O ile dobrze kojaze w sql jest typ danych DATE zmien pole termin na ten typ i powinno styknąć
pkania
probowalem ale wtedy format daty ustawiaja sie 0000-00-00 a ja chce 1. 12 grudnia
gdy zmieniam na typ int sortuje dobrze ale z kolei wycina mi wsztstko po kropce i z wpisu 1. 12 grudnia zostaje sama 1
tomaszdurka
Chodzi ci o to żeby sortowało względem daty.

1. Napisałeś że chcesz żeby było tak...

Kod
1. 12 grudnia
2. 10 grudnia
3. 11 grudnia
11. 15 grudnia
13. 01 stycznia


ale zaraz zaraz... pewnie jeszcze chcesz żeby za rok było tak...

Kod
1. 12 grudnia
2. 10 grudnia
3. 11 grudnia
11. 15 grudnia
13. 01 stycznia
...
99. 2 grudnia



No to w ten sposób się raczej nie uda.

Potrzebujesz zmienić typ pola 'termin' na "date".
O formacie [dzien]-[miesiac]-[rok].
Wtedy posortuje ładnie, np.:

Kod
2007-02-13
2007-02-24
2007-02-28
pkania
tak, tylko nie chce zeby wyswietlamo mi "12 grudnia" (date) tylko "1. 12 grudnia" (jako pierwszy termin)
SongoQ
@pkania Radze poczytac manuala. Jesli masz pole typu timestamp, datetime i inego sluzace do tego typu to sortowanie zadziala prawidlowo. To w jakiej postaci dane wyswietlac juz uzywasz maski. Wszystko czego ppotrzebujesz jest w manualu. Nie stosuj zadnych sortowan w SQLu (qsort czy innego gorszego) bo po co, mechanizmy bazy oferuja takie rzeczy.
tomaszdurka
Rozumiem, myślałem, że to przed kropką to jest ID.

Zmień strukture bazy danych albo posortuj to w PHP, (ew. JS), ale to zybt duża strata czasu.
Jeśli nie chcesz 'date' to rozdziel to co masz na dwa lub trzy pola.
Sortowanie w PHP (czy JS) się nie opłaca.
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.