![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 23.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym uzyskać taki efekt możliwie najprostszym sposobem: ../category/subcategory/id ze wszystkimi możliwymi kombinacjami np: .../id, ../subcategory, ../subcategory/id Otóż w zasadzie napisałem kod, który działa. Trzy niewiadome były jeszcze znośne, ale potrzebuje jeszcze utworzyć podobny na ok. 5 niewiadomych (już sama myśl mnie przeraża), dlatego chciałem się spytać czy nie ma czasem jakiegoś prostszego sposobu? Mam przeczucie, że jednak nie do końca wykorzystuje możliwości frameworka (mój pierwszy projekt). A jeśli chodzi o wady poniższego kodu to: -każdorazowo muszę sprawdzać 'category_name', czyli po prostu warianty kategorii. Jest ich ok.7, więc jest jeszcze ok. -sam kod to potworek (wkleiłem tylko pierwszy szkielet). W rzeczywistości w każdym if-ie rozważanych jest jeszcze kilka możliwości z każdorazowym połączeniem z bazą danych. routes.php HomeController
Do tego wszystkiego dochodzi parę drobnych filtracji przesyłanych za pomocą sesji, w zależności od tego co wybierze użytkownik w checkbox-ie. Ten post edytował damian1 8.09.2014, 17:50:53 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wcięcia i nowe linie nie spowalniają ci aplikacji, one są dla ciebie.. Więc używaj ich na litość..
Według mnie to beznadziejnie do tego podszedłeś, przecież to nie musi być w jednej akcji wszystko, powiedz lepiej co konkretnie chcesz osiągnąć. PS. as w routingu nie służy do podania regułki, tylko skróconej/czytelniejszej nazwy routa, dzięki czemu łatwiej można później wygenerować link. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Coś mi się zdaje że źle się do tego zabierasz.
Powiedz dokładniej co robisz i co chcesz osiągnać |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 23.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam
W zasadzie to galeria zdjęć. Chodzi mi o coś takiego: www.adres-strony.pl/WIELKA-KATEGORIA/{category}/{subcategory}/{subcategory2}/{id} Do tej pory napisałem kod na 3 niewiadome ({category/{subcategory}/{id}), ale jak wspomniałem wczesniej wiem, że będe potrzebował podobny na 4-5 niewiadomych. Na Wielką kategorię mam routing, a następne części chce by były dynamiczne, bo jest dużo możliwości. {category}- ok. 8-10, {subactegory}-ok.50, a dalej tylko więcej. Chce by na podstawie tych wartości odbywało się pobranie z bazy danych. Jeśli podane jest tylko {category} to wyszukuje tylko na tej podstawie i zwraca listę zdjęć. jeśli podane jest {id} zwraca konkretne zdjęcie. Inne możliwości to np: {category}{subcategory2}{id}, {category}{subcategory}..... W zasadzie wszystkie. I wygląda to mniej więcej tak:
Zmienna $wid (widoczność) jest przesyłana w sesji i ustalana na początku, w zależności od tego czy zmienna istnieje bądź nie. W przyszłości w sesji planuje również przesłać różne drobniejsze filtracje np: nie wiem - koloru. Zobaczę jeszcze, czy ewentualnie zmiennych w with nie da się przesłać w 1 tablicy i dziękuje odnośnie uwagi o 'as' - już doczytałem więcej. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
@damian1 małe podpowiedzi :
1 / ROUTE -> pocztaj o "any" 2 / "pobieranie tych Twoich niewiadomych" -> pocztaj o Request::segment() 3 / przekazywanie "zmiennych w with" -> pocztaj w maualu PHP o compact() -------------------- Polecam MyDevil hosting idealny dla deweloperów
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 23.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za podpowiedzi, z pewnością niektóre wykorzystam, aczkolwiek nie rozwiązują do końca moich problemow.
A w zasadzie 1 problemu: jak szybko rozpoznać, że {category}, nie jest {subcategory} i podam przykład: www.adres-strony.pl/krajobraz/góry/skały/ I jeśli użyłbym $request = Request::segment(2) pobrałoby góry, a jeśli adres wyglądałby inaczej: www.adres-strony.pl/krajobraz/skały/ pobrałoby skały i powstałby mały konflikt w bazie danych: 1)$photos = Photo::where('kryterium_ksztalt_terenu', '=', $request)->get(); 2)$photos = Photo::where('kryterium_przedmiot', '=', $request)->get(); a nie mógłbym na stałe użyć pierwszego adresu, bo skały są nie tylko w górach, ale też na nizinach, nad morzem... Poprzez sesje filtruje dodatkowo (w razie potrzeby) kolor, rozmiar, kształt... W moim pierwszym kodzie miałem 3 "niewiadme". Wersja z 2 możliwościami (Request::segment(1), Request::segment(2)) // www.adres-strony.pl/kategoria/7 Id potraktowana jako liczba
Na wyjściu otrzymuje $category=kategoria, $galeria=null, $id=7 i teraz mogę wygodnie przeszukiwać bazę danych. Problem polega na tym, że muszę jeszcze rozważyć kategoria/galeria ; galeria/5, czyli rozróżnić kategorie i galerię. W związku z tym przeszukuje z góry ustalone możliwości kategorii i jeśli ich nie znajduję ustawiam $kategoria=null, $galeria= to co wpisane; I teraz podobny problem muszę rozważyć na pięciu niewiadomych. Myślałem, że jest jakiś prostszy sposób, ale bez własnej funkcji chyba się jednak nie obejdzie. I teraz pytanie jak zrobić to najbardziej optymalnie? Na razie najlepszy pomysł jaki mi przychodzi do głowy to przedrostki: kat-kategoria,sub-subcategoria... tylko nie w Route, bo by nie działało, tylko po prostu jako nazwy i odpowiednio je później wykryć. Nie mniej tego wolałbym uniknąć. Dziękuje za dotychczasowa pomoc. <!-- EDIT --> Ok, albo w sumie zrobię jak mówicie, a skałę potraktuje jako wyjątek i będzie ewentualnie dosyłana w sesji. Mam jeszcze tylko kilka pytań optymalizacyjnych (w sumie może głupie, ale tylko domyślam się niektórych odpowiedzi). Ktoś ma doświadczenie co może być szybsze? 1) Zapisanie kategorii, subkategorii w bazie danych jako 1,2,3..... i filtrowanie w PHP if($category == 'gory'){$category =1;} i wyszukanie: ...where('category', '=', $category)..., czy od razu zapisanie w bazie danych "stringów"? 2)Powinienem stworzyć relacyjną bazę danych np: category, subcategory, subcategory2 - 1 tabelka, tile, lokazlizacja, opis, widoczność - 2 tabelka? Czy nie będzie przeszkadzało jak bede miał wszystko w 1 tabelce z indeksowaniem, niektórych kolumn? albo jakaś dobra strona, gdzie mógłbym o tym doczytać... Ten post edytował damian1 9.09.2014, 10:54:23 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 84 Dołączył: 29.11.2006 Skąd: bełchatów Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, że jest prostszy. Klasyczny problem to i klasyczne rozwiązanie. Poczytaj o drzewkach Trees in SQL databases, nasted tree
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:55 |