![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 2.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Skończyłem robić właśnie mini aplikację internetową, w której w łatwy i przyjemny sposób administrator może dodawać/edytować i usuwać rezerwacje. Stworzyłem również system wyświetlania rezerwacji - wybieramy rok i interesujący nas miesiąc i pobieramy wszystkie rezerwacje pasujące do zapytania. Wszystko niestety oparłem o tabelę i wyszło dość sporo zagnieżdżeń tj. :
I teraz pytanie - można to jakoś uprościć by tych iteracji było znacznie mniej? Pokoi jest 50. Dni w miesiącu mamy średnio 30. Rezerwacji niech będzie ~400 na miesiąc co daje ok. 600 000 operacji ;( Foreach dla pokoi - potem do/while dla każdego dnia miesiąca no i potem przy każdym dniu sprawdzenie każdego zamówienia czy pasuje do założeń (dzień i pokój). Jak na razie wszystko działa, ale chciałbym to rozwiązać nieco bardziej "profesjonalnie" ![]()
Powód edycji: [Kshyhoo]: bb-code
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 2 Dołączył: 13.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
ale Panie namieszales
Sprobuj cos w tym stylu (ponizszy kod nie bedzie dzialac bo nie znam Twoich tablic )
Bez sensu jest podawanie zalozen w if a nie kodu. CIezko pomagac kiedy musimy sie domyslac-> popraw <-- wynik tego foreach-a wstaw w zmienna w pierwszej petli ( *for* bo i tu i to uzywasz tej samej zmiennej $x do iteracji wiec po co 2 razy to samo. i w odpowiednim momencie (podejrzewam, ze na koncu doklej do reszty. Ten post edytował JakubBab 2.06.2016, 21:27:39 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 2.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Już tłumaczę.
Pokoje: Id_Pokoje Nazwa_pokoje cena_pokoje opis_pokoje zdjecie_pokoje Muszą wyświetlać się wszystkie pokoje - nawet te nie zarezerwowane. Co do if wewnątrz sprawdzenia rezerwacji: Kod foreach ($rezerwacje as $rezerwacje_spec) { if($rezerwacje_spec['id_pokoje'] == $pokoje_spec['id_pokoje']){ // Jeżeli jest rezerwacja dla danego pokoju if ($rezerwacje_spec['data_poczatkowa_rezerwacje'] == $aktualna_data){ // Jeżeli data poczatkowa rezerwacji jest taka jak aktualna data przypisana do komórki w tabeli tzn. ,że to pierwszy dzień rezerwacji echo '<div class="rezerwacje_min_start" title="'.$rezerwacje_spec['id_rezerwacje'].'"><a href="'.base_url().'admin_rezerwacje/rezerwacje_edit/'.$rezerwacje_spec['id_rezerwacje'].'"></a></div>'; } elseif(($rezerwacje_spec['data_poczatkowa_rezerwacje'] < $aktualna_data) and ($rezerwacje_spec['data_koncowa_rezerwacje'] > $aktualna_data)){ // Jeżeli data jest pomiędzy data poczatkowa i koncowa rezerwacji echo '<div class="rezerwacje" title="'.$rezerwacje_spec['id_rezerwacje'].'"><a href="'.base_url().'admin_rezerwacje/rezerwacje_edit/'.$rezerwacje_spec['id_rezerwacje'].'"></a></div>'; } elseif ($rezerwacje_spec['data_koncowa_rezerwacje'] == $aktualna_data){ // Jeżeli data koncowa rezerwacji jest taka jak aktualna data przypisana do komórki w tabeli tzn. ,że to ostatni dzień rezerwacji echo '<div class="rezerwacje_min_end" title="'.$rezerwacje_spec['id_rezerwacje'].'"><a href="'.base_url().'admin_rezerwacje/rezerwacje_edit/'.$rezerwacje_spec['id_rezerwacje'].'"></a></div>'; } } } W skrócie chodzi o specyficzne oznaczenie rezerwacji tj pierwszy i ostatni dzień w siatce zajmuje tylko pół komórki a środkowe dni całą komórkę <td> wraz z przyciskiem umożliwiającym szybkie przejscie do edycji danej rezerwacji ![]() Chodzi mi przede wszystkim czy można jakoś zminimalizować ilość zagnieżdżeń foreach/do while, bo nic nie przychodzi mi do głowy ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 2 Dołączył: 13.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Cytat W skrócie chodzi o specyficzne oznaczenie rezerwacji tj pierwszy i ostatni dzień w siatce zajmuje tylko pół komórki a środkowe dni całą komórkę <td> wraz z przyciskiem umożliwiającym szybkie przejscie do edycji danej rezerwacji wink.gif Jesli dobrze rozumiem, to chodzi o formatowanie stylu <td>? jesli tak to skorzystaj z : http://www.w3schools.com/html/html_tables.asp . Jesli natomiast chcsze formatowac ktoras z komorek to wtedt ustaw $counter =0 przed foreach a nastepnie w foreach $counter++ i warunek :
Co do zagniezdzen uzyj tego co napisalem powyzej i bedzie git. Co do ostatniego postu to tutaj zrobiles ten sam warunek co w peirwszej petli ( x< $number) tak wiec, mozesz skorzystac z jego dobrodziejstw i tam go wstawic tylko, ze w innej zmiennej:
itd itp. Tak wiec $tableDiv bedzie przechowywac juz sformatowane '<div>' -y gotowe zeby byly doklejone pod glowna $table. Po skonczonym skrypcie wyswietlisz tylko raz kod bez potrzby zagniezdzania go w pierdylion linijek html-a. Ten post edytował JakubBab 2.06.2016, 21:34:12 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 2.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za pomoc - kilka kwestii przetestuję
![]() Teraz pytanie - na ile rozwiązanie dotyczące przypisania całego kodu html do zmiennej a potem tylko wypisanie jej całej wpływa na szybkość działania całego serwisu? Można jakoś realnie określić wzrost wydajności? ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 11:37 |