oto moj problem:
robie przegladarke plikow, wiekszosc juz jest gotowa, tylko mam problem z sortowaniem pozycji. pola to:
- nazwa
- rozmiar
- typ
- ostatnia modyfikacja
gdyby dane przechowywane byly w bazie danych, nie mialbym z tym problemu, ale chyba glupie jest robienie przegladarki przez baze danych.
normalnie jestem w stanie posortowac wedlug nazwy, jednak gdybym sprobowal sortowac rozmiar, to posortuje sie tylko roziar, a reszta zostanie na miejscu.
dalej, sortowanie wg. typu - chodzi tu raczej o grupowanie wedlug tych samych typow i rozmieszczenie grup alfabetycznie + ten sam problem co w przypadku rozmiaru.
teraz modyfikacja, ten sam problem co w przypadku rozmiaru + czy mozna sortowac znacznik czasu jak zwykle liczby i uzyskac posortowane daty?
[php] sortowanie w przegladarce
-
Grzegorz Winiarski
- Nowy

- Posty: 147
- Rejestracja: pt lut 27, 2004 10:36 pm
- Lokalizacja: Kraków
Re: [php] sortowanie w przegladarce
Odpowiem od końca.
Sortowanie dat można uzyskać poprzez zamiane daty na liczbe sekund ewentualnie minut. np 14:30:21 to 14*3600+30*60+21.
A jeśli chodzi o sortowanie tablic wielowymiarowych, to kiedys napisałem coś takiego, myśle że moze Ci sie przydac.
[php]<?php
$lines_array = file('colors.txt');
$size = count($lines_array);
$i=0;
while($i<$size) {
list($id, $date, $color, $color_pl) = explode('|', $lines_array[$i]);
$array_to_sort[] = $color;
$i++;
}
sort($array_to_sort);
foreach($array_to_sort as $key) {
for($i=0; $i<$size; $i++) {
list($id, $added, $color, $color_pl) = explode('|', $lines_array[$i]);
//echo "$id | $added | $color | $color_pl <br>";
if($key==$color) $sorted_array[] = array($id, $added, $color, $color_pl);
}
}
$i=0;
while($i<$size) {
list($id, $added, $color, $color_pl) = $sorted_array[$i];
echo "$id $added $color $color_pl <br>";
$i++;
}
?>[/php]
i jeszcze tabelka w colors.txt
Sortowanie dat można uzyskać poprzez zamiane daty na liczbe sekund ewentualnie minut. np 14:30:21 to 14*3600+30*60+21.
A jeśli chodzi o sortowanie tablic wielowymiarowych, to kiedys napisałem coś takiego, myśle że moze Ci sie przydac.
[php]<?php
$lines_array = file('colors.txt');
$size = count($lines_array);
$i=0;
while($i<$size) {
list($id, $date, $color, $color_pl) = explode('|', $lines_array[$i]);
$array_to_sort[] = $color;
$i++;
}
sort($array_to_sort);
foreach($array_to_sort as $key) {
for($i=0; $i<$size; $i++) {
list($id, $added, $color, $color_pl) = explode('|', $lines_array[$i]);
//echo "$id | $added | $color | $color_pl <br>";
if($key==$color) $sorted_array[] = array($id, $added, $color, $color_pl);
}
}
$i=0;
while($i<$size) {
list($id, $added, $color, $color_pl) = $sorted_array[$i];
echo "$id $added $color $color_pl <br>";
$i++;
}
?>[/php]
i jeszcze tabelka w colors.txt
Kod: Zaznacz cały
1|12.03.2003|dark red|ciemny czerwony
2|12.05.2003|light_blue|jasny niebieski
3|17.05.2003|silver|srebrny
4|21.06.2003|black|czarny
5|5.07.2003|green|zielony
Re: [php] sortowanie w przegladarce
hmmm z tego co widze to myslimy podobnie - tez myslalem o stworzeniu tablicy, ktora przechowywalaby liczbowy porzadek pozycji w stosunku do posortowanego elementu ale tak napawde chodzilo mi wlasnie o jakies alternatywne - prostrze rozwiazanie. niedlugo znajde troche czasu, to wkleje troche kodu przegladarki zeby bylo jasniej.
co do znacznika czasu - to czy przypadkiem sam znacznik nie ma czegos wspolego z sekundami? i czy sortujac go np. malejaco uzyskam sortowanie dat od najwczesniejszej do najstarszej?
co do znacznika czasu - to czy przypadkiem sam znacznik nie ma czegos wspolego z sekundami? i czy sortujac go np. malejaco uzyskam sortowanie dat od najwczesniejszej do najstarszej?
Re: [php] sortowanie w przegladarce
znacznik (pieczątka) czasu (timestamp) ma całkiem sporo wspólnego z sekundami bo to jest ilość sedund które upłynęły od 1.1.1970 00:00:00:00:00:00 (etc.). Jeżeli posortujesz go malejąco to otrzymasz sortowanie od najnowszego do najstarszego, bo ilość sekund które upłynęły będzie się zmniejszała, więc data będzie bliższa daty odniesienia, które jest w przeszłości, więc będzie wcześniejsza.
Re: [php] sortowanie w przegladarce
dzieki wixor (edycja: Krzysztof Aszkiełowicz :D)- tak myslalem (no to znacznik czasu mamy z glowy)
pozostaje ogolna alternatywa do przedstawionego rozwiazania a takze:
sortowanie typami - moj pomysl jest taki:
najpierw biore i sprawdzam jakie typy plikow wystepuja w pobieranych pozycjach i sortuje jes alfabetycznie.
nastepnie grupujac wszystkie elementy jednych typow - sortuje je alfabetycznie w grupach - teraz wykorzystuje podwojna petle aby wyswietlic rozrzerzenia w grupach - alfabetycznie rozszerzeniami i alfabetycznie nazwami w grupach.
czy to jest dobre rozwiazanie?
pozostaje ogolna alternatywa do przedstawionego rozwiazania a takze:
sortowanie typami - moj pomysl jest taki:
najpierw biore i sprawdzam jakie typy plikow wystepuja w pobieranych pozycjach i sortuje jes alfabetycznie.
nastepnie grupujac wszystkie elementy jednych typow - sortuje je alfabetycznie w grupach - teraz wykorzystuje podwojna petle aby wyswietlic rozrzerzenia w grupach - alfabetycznie rozszerzeniami i alfabetycznie nazwami w grupach.
czy to jest dobre rozwiazanie?
-
Grzegorz Winiarski
- Nowy

- Posty: 147
- Rejestracja: pt lut 27, 2004 10:36 pm
- Lokalizacja: Kraków
Re: [php] sortowanie w przegladarce
Pomysł wydaje się dobry, chyba nic lepszego nie wymysle, a co do sortowania to jaką alternatywe proponujesz Dreen?
Re: [php] sortowanie w przegladarce
no wlasnie nie wiem >] ale coraz bardziej zaczynam myslec ze to jest najprostrze rozwiazanie

