![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam w innym temacie pytalem jak zminiac wiersze, ale niestety nie uzyskałem odpowiedzi dlatego wpadłem na inny pomysł tylko potrzebuję jedną informację.
wyswietlanie tabeli polega na:
no i jest fajnie bo wyświetla sie tabela. Świetnie tylko że ja potrzebuje z wiersza poniżej zamienić wiersz[1]. czyli jest a a a b b b a ma być b a a a b b Czy jest jakaś możliwość w php zrobienia czegoś takiego, ale nie poprzez sortowanie? Ten post edytował neo1986kk 22.10.2009, 09:05:18 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Będziesz musiał wyciągnąć czas trwania zadania (ilość godzin od startu do końca), znać godzinę startu tego "specjala" i każdej po nim wstawionego odpowiednio "przesuwać daty oraz godziny". Posługując się Twoim przykładem...
1 a a1 2009-10-20 12:00 2009-10-20 15:00 2 b b1 2009-10-20 15:00 2009-10-20 19:00 3 c c1 2009-10-20 19:00 2009-10-20 20:00 Wiemy, że C dostał specjala i startuje o 12 zamiast A. Wstawiamy go tam z czasem 12.00 do 13 (bo C trwa godzinę, od 19 do 20). Teraz WSZYSTKIE po nim począwszy od tego z jakim go zamieniliśmy, czyli od A mają sprawdzamy czas trwania i dostosowywane są do zmienionego rozkładu. A więc: A trwa 3 godziny (12-15), więc od 13.00 (czas końca specjala) do 16.00 B trwa 4 godziny(15-19), więc od 16.00 (koniec A) do 20. Zmianom ulegają TYLKO zadania począwszy od tego, które zostało zastąpione do tego przed specjalnym. Na przykładzie nieco szerszym: 1 a a1 12:00 - 15:00 2 b b1 15:00 - 19:00 3 c c1 19:00 - 20:00 4 c c2 20.00 - 21.00 5 b b2 21.00 - 22.00 Gdy 4 ma zacząć się o 15.00... 4 trwa godzinę, a za sobą ma 5, zaś o 15.00 zaczyna się 2, co sprawia, że do korekty godzin kwalifikują się 2 i 3 (tylko one mają czasy startu od 15.00 do starego startu zadania 4 czyli 20.00). Jako że różnica to godzina, więc wszystkim złapanym robimy przesunięcie daty startu i końca zadania o godzinę, zaś priorytetowi stat ustawiamy na ową godzinę i dodajemy czas trwania. Da nam to: 1 a a1 12:00 - 15:00 4 c c2 15.00 - 16.00 2 b b1 16:00 - 20:00 3 c c1 20:00 - 21:00 5 b b2 21.00 - 22.00 Teraz widzisz na przykładzie co się dzieje? Robisz zapytanie do bazy, które zwraca Ci w wyniku rekordy z datami i czasami pomiędzy startem priorytetu a startem tego zadania gdyby było robione normalnie i w nich dodajesz do startu i końca czas trwania zadania priorytetowego. To jest wszystko co musisz zrobić (IMG:style_emoticons/default/smile.gif) EDIT: @ Webdice. Jak widzisz w przykładzie, to nie tyle 2 sąsiednie rekordy... Jeśli użyje linków w stylu "Wyżej", "Niżej" to mu wystarczy tylko zmiana czasu w rekordzie priorytetu i tym przed nim. Gdy posłużyłby się "drag&drop", to rozwiązanie jakie przedstawiłem obejmie więcej niż 2 rekordy zapewne. Czyli obejmuje to nie tyle sąsiednie 2 rekordy, tylko rekordy zawsze przed tym priorytetowym. Nigdy po nim następujące. EDIT2: Pamiętaj, że wybrana przez Ciebie godzina może być nieosiągalna (może trwać inne zadanie). Albo przerywasz je i kończysz później (w bazie zrobisz mały bajzel lub będziesz musiał zmienić jej strukturę by na to pozwalała), albo zaczniesz priorytet gdy skończy się trwające wtedy zadanie (rozsądniejsze). Twój pomysł z niżej, wyżej sugeruje podejście drugie. Ten post edytował thek 22.10.2009, 10:23:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 07:48 |