![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 17.07.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Tworzę mała witrynę w php. Podstrony wczytuję za pomoca zmiennych np. "/index.php?zmienna=". Wszystko jest oki ale przecież cała witryna nie moze być zbudowana na jednym pliku index.php! Jak zrobić by naprzykład plik "podstrona.php" nie zawierał tego co "index.php" a witryna zawierała to?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
PS. Strona nie jest zbudowana na tabelach tylko na DIV'ach i CSSie! |
|
|
|
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
W manualu są opisane takie funkcje jak
include() oraz require() - za ich pomoca zrobisz to, co chcesz zrobić. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 17.07.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
np strona: "clubbing.pl": W lewym menu każdy link odnosi się do innego skryptu *.php. Klikasz w link a menu pozostaje i napewno nie zaiwerają go podstony. Jesli uzyję funkcji "include" wtedy powórnie mi sie wczyta menu obok i bede miał 2 menu....
|
|
|
|
Post
#5
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Wszystko zależy od tego jak zaprojektujesz stronę. Możesz stworzyć "ramówkę" do której będziesz wpychał kawałki stron.
np. Najprostszy przykład dla zobrazowani a sytuacji index.php head.php etc. Powyższy kod nie jest za bardzo przydatny, ale ilutsruje tylko same założenie, czyli wydzielanie teg, co na stronie jest zmienne. |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
... albo jakies szablony (smarty)
... czy frameworki typu prado jest kilka mozliwosci Ten post edytował nasty_psycho 17.07.2006, 12:45:44 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 30.12.2004 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%)
|
Jak widzę podstrony na switch i case to mi się śmiać chce (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Najlepiej kod jaki podał mateofi, ale lepiej zrobić go tak:
I na przyszłość mateofi nie ucz początkujących wyświetlania wartości zmiennych tak: "$zmienna". |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%)
|
LamaMaster -> Smiej sie smiej, ja i tak uwazam ze switchowy szybszy i bezpieczniejszy. Zamiast tony ifow dajesz default: include("404.pgp"); na przyklad, do tego nie ma zabardzo mozliwosci wstawienia jakiejkolwiek innej zmiennej bo switch poprostu pojdzie na default. A z tego co wiem przy takim includowaniu nawet z file_egzists miozna podstawic jakies ta ciekawe stringi do adresu. Ale kto wie moze sie myle.
Pozatym nie rozumiem skad taka zmiana na mentora php (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Niedawno byl problem z cookies i odejmowaniem dat ! Swoja droga zaintrygowales mnie, dlaczego chce Ci sie smiac z Switchow ? A wracajac do tematu u mnie to zawsze wyglada tak...
Ten post edytował thornag 18.07.2006, 10:00:09 |
|
|
|
Post
#10
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%)
|
Rozwiązanie ze switch może być dobre dla małej ilości podstron. A co kiedy mój serwis ma ich 100 ? Np. archiwum newsów, atrykułów itp. Zrobisz switcha ze 100 warunkami ?
file_exists sprawdzi czy plik istnieje na dysku, więc nie wiem co byś musiał podać w urlu, żeby zaincludować swój plik, chyba hokus pokus (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Można ewentulanie jeszcze zmienną z adresu objąć basename. |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%)
|
No ja przyzwyczailem sie do innego typu. Switch mi odpowiada jak najbardziej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kiedy mam 10 glownych 'dzialow' a w kazdym z nich jest po 10 podstron, to u mnie jest 10 dodatkowych switchow, index.php5?section=dzial&dzial=podstrona, a casy dodaje w trakcie tworzenia. Jakos bardziej to do mnie przemawia. Jesli jest znaczna roznica w predkosci wykonywania, czy tez przewaga ifow nad switchem to prosze o dobitne argumenty (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Calkiem mozliwe ze zdanie zmienie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Co do tego archowum np, to przeciez masz tylko strony z np lista i podgladem newsa. W tym skrypty pobierajace z bazy danych i wyswietlajace :0 Nie mam zamiaru robic switcha dla kazdego news_id :DDDD Ten post edytował thornag 18.07.2006, 10:19:16 |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%)
|
Hehe z cookies to ja nigdy nie miałem problemu, tylko ostatnio mi wylogowywanie nie działało, bo IE nie usuwa tego cookies (a kod jest poprawny). Być może wina leży po innej stronie.
A dodawanie dat to taka prosta sprawa nie jest (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Tak czy siak nie jestem żadnym mistrzem php, ale ładowanie podstron to rzecz podstawowa. Po pierwsze switch jest wolniejszy, a po drugie co jak ktoś będzie miał 120 podstron? Zrobisz 120 razy case? Poza tym ja wskazałem ścieżkę: 'podstrony/'.$id.'.php', więc ona musi znajdować się na serwerze. Co innego jeżeli ścieżka to było same $id. Ktoś musiałby coś zuploadować do tamtego katalogu żeby odpalić. Dlatego skrypt jest jak najbardziej bezpieczny. PS: dopiero teraz czytałem dalsze posty - widzisz tu też gadają o tylu casach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ify przeważają - są szybsze i można więcej rzeczy nimi zrobić, a dobry if nigdy nie jest niebezpieczny. Co prawda różnicy w prędkości nigdy nie zauważysz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) edit a ja w moim rozwiązaniu znalazłem buga:
Z rozpędu sprawdza samo $id (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Oczywiście ma być tak:
Ten post edytował LamaMASTER 18.07.2006, 10:31:02 |
|
|
|
Post
#13
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%)
|
Przykład za archiwum to tylko przykład. Nie mówiłem nic o bazie danych, chodziło mi o serwis z dużą ilością stron bez bazy.
Prównaj to ze swoim kodem, nadal nie widzisz różnicy ? Tak jak napisałem wcześniej, kiedy w serwisie masz masz niedużo podstron to rób switcha, ale jeśli jest ich więcej i będzie przybywać to takie rozwiązanie jest bez sensu, bo będziesz musiał ciągle dodawać dodatkowe warunki do switcha. A kod który podałem napiszesz raz i tyle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#14
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Cytat Ify przeważają - są szybsze i można więcej rzeczy nimi zrobić, a dobry if nigdy nie jest niebezpieczny. Możesz to rozwinąć? Osobiście jedyna różnica jaką widzę, to zastosowanie - gdzieś jest dobry if else, a gdzieś indziej switch switch [ang], przełącz - mówi samo za siebie |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%)
|
Ogólnie warunki wykonują się szybciej niż porównywanie do casów. Więcej rzeczy można nimi zrobić - no ify nie są tylko do ładowania podstron, a poza tym wyżej jest podany kod, który mówi sam za siebie co można za pomocą ifa zrobić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%)
|
Serwisy ktore dotychczas robilem raczej opieraja sie na niewielkiej ilosci plikow(szablonow) do ktorych jest ladowane wszystko z bazy. Takze dla mnei if przyjemniejszy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Cytat Tak jak napisałem wcześniej, kiedy w serwisie masz masz niedużo podstron to rób switcha, ale jeśli jest ich więcej i będzie przybywać to takie rozwiązanie jest bez sensu, bo będziesz musiał ciągle dodawać dodatkowe warunki do switcha. Takze zostaje caly czas przy swoim (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Poki robienie nie wiecej niz 10 casow dla switcha mi nie przeszkadza bede robil to dalej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Co do ifow to rzeczywiscie przy wielu podstronach nie ma sensu przelaczac. Jednak zazwyczaj jak juz pisalem opieram strone na 10(przykladowo) glownych dzialac wiec mam 'glowna sterownie' zlozona z niezbyt duzego switcha. No to doszlismy do jakis wnioskow (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#17
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
@lamaMASTER - Oprócz szybkości działania (potestowałem troszkę (IMG:http://forum.php.pl/style_emoticons/default/happy.gif) ), to nie widzę przewagi if else nad switchem. Za pomocą switch zrobisz to samo.
Już gdzieś pisałem, że jeśli trzeba reagować na więcej niż trzy wartosci, to switch jest lepszy, bo bardziej przejrzysty. |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%)
|
Dodam jeszcze ze np
Czasem nie chce includowac pliku tylko przekierowac na niego (header(Location); Eg : index.php5?page=home zostaje w tym samym oknie.(tzn includuje do srodka) index.php5?page=faq przekierowuje na storne z innym layoutem. Od razu dodam ze wiem ze moge poprostu linka wstawic zamiast index.php5 daj faq.php. Ale ja wole utrzymac wszystko w strukturze page= to dzial do wyswietlenia. Wtedy switchem zrobie to bez problemu, uzywajac tylko IF statement musze dodac kolejny warunek sprawdzajacy czy zmienna eg page jest rowna faq jesli tak to zamiast include header. |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%)
|
Co do przykładu ze switchem - mi się wydaje, że if jest jednak bardziej przejrzysty (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tak samo można zrobić:
Na dodatek if nie potrzebuje break (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#20
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Już gdzieś pisałem, że jeśli trzeba reagować na więcej niż trzy wartosci, to switch jest lepszy, bo bardziej przejrzysty. Nie w tej sytuacji, tylko gdy masz więcej możliwych rezultatów. np od 1 do 50 . Będziesz robił 50 razy if elseif elseif ... else ? No chyba lepiej switch nieprawdaż? (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) |
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 03:51 |