![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 30.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
prosiłbym o wypowiedź osób, które mają dość duże doświadczenie w programowanie aplikacji webowych. Otóż mam paginację wraz z sortowaniem, wartości dotyczące sortowania wypełnia się poprzez formularz na stronie (GET). Wszystkie te flagi muszę później załadować do metody, która pobiera listę elementów i mam to tak zakodowane:
Dodatkowo mam jeszcze kilka innych elementów srotujących więc trochę if-ów się tworzy pytanie czy to jedyny bezpieczne optymalne rozwiązanie ![]() |
|
|
![]()
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 ![]() |
Przekombinowałeś moim zdaniem. 10 pól w bazie i 2 możliwe kierunki to "tylko" 20 możliwych kombinacji jako pola tablicy, a na dodatek wzajemnie się wykluczających
![]() Czemu tak? Posłużę się najprostszym możliwym klejeniem zapytania (query builder byłby lepszy, ale nie znam implementacji):
Oczywiście to tylko idea. Osobiście zabezpieczałbym to przed głupotami z kierunkiem czy sprawdzeniem istnienia kolumn i takie tam "drobiazgi" ![]() Zauważ... Jedna tablica z kluczem jako nazwa pola i wartością jako kierunek, a dodatkowo kolejność w tablicy odgrywa rolę gdy mamy order by z użyciem wielu pól. Przy odrobinie pomyślunku można nawet to przerobić tak by generował także:
I nie jest to trudne ![]() ![]() A jak zabezpieczać? Przykładowo zastosowałbym mapowanie. Skoro ze skryptu otrzymuję konkretne wartości to mam też zapewne tablicę, gdzie mogę tę wartość zamienić na odpowiednią nazwę kolumny. Sprawdzam to co otrzymuję od usera pod kątem zgodności z tablicą mapującą. Jeśli mam coś niezgodnego z nią - wywalam. To samo gdy otrzymam ze skryptu coś, co nie mapuje się na ASC lub DESC jako kierunek sortowania. Takie coś też wylatuje. Ostatecznie coś mi tam zostaje (lub nie) i to wykonuję. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 30.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Budowanie zapytań odpada bo używam Active Record w Codeigniterze.
Zamknąłem się w takim zapytaniu. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Myślisz, że Active Record to naprawdę problem?
Nie bez powodu napisałem, że query buildery byłby lepszy ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 20:48 |