[php] sortowanie w przegladarce

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

[php] sortowanie w przegladarce

Post autor: Dreen »

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?
Grzegorz Winiarski
Nowy
Nowy
Posty: 147
Rejestracja: pt lut 27, 2004 10:36 pm
Lokalizacja: Kraków

Re: [php] sortowanie w przegladarce

Post autor: Grzegorz Winiarski »

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

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
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [php] sortowanie w przegladarce

Post autor: Dreen »

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?
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [php] sortowanie w przegladarce

Post autor: wixor »

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.
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [php] sortowanie w przegladarce

Post autor: Dreen »

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?
Grzegorz Winiarski
Nowy
Nowy
Posty: 147
Rejestracja: pt lut 27, 2004 10:36 pm
Lokalizacja: Kraków

Re: [php] sortowanie w przegladarce

Post autor: Grzegorz Winiarski »

Pomysł wydaje się dobry, chyba nic lepszego nie wymysle, a co do sortowania to jaką alternatywe proponujesz Dreen?
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [php] sortowanie w przegladarce

Post autor: Dreen »

no wlasnie nie wiem >] ale coraz bardziej zaczynam myslec ze to jest najprostrze rozwiazanie
ODPOWIEDZ