Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] a'la iframe w PHP problem z ładowaniem
adek-
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Witam, kombinuję w php aby mi strona index.php wyświetlała różne zawartości html/php w głównej jej części, w zależności od linka jaki kliknę i zrobiłem sobie coś takiego:
w index.php na środku czyli tam gdzie treść będzie zmienna
  1. header
  2. <?php
  3. pokaz($show,$id);
  4. ?>
  5. footer

no i porobiłem sobie plik funkcje który zaincludowałem do index.php
  1. function pokaz($mod,$id)
  2. {
  3. switch($mod)
  4. {
  5. case 'strona1': { strona1(); break; }
  6. case 'strona2': { strona2(); break; }
  7. default: { main(); break; }
  8. }
  9. }
  10. // funkcje zawartości stron
  11. function main()
  12. {
  13. echo 'Cała zawartość stony głównej';
  14. }
  15. function strona1()
  16. {
  17. echo 'Cała zawartość stony1';
  18. }
  19. // ...itd... i wywoływałem linkiem
  20. <a href="?show=strona1">Strona1</a>

Ale wymaga to register globals on! Jest jakieś obejście tego bez włączania registerek? Chyba, że ktoś zna bardzo podobną opcję funkcjonowania takich rzeczy ;/

=================
Wcześniej robiłem coś na zasadzie includowania plików, co już mi się znudziło i chciałem przejść na funkcje i case, odchodząc od ciągłych include...
  1. $id=$_GET['id'];
  2. if(empty($id) or $id=="main"){
  3. include("dane/main.php"); }
  4. if($id=="strona1"){ include("dane/strona1.php"); }
  5. if($id=="strona2"){ include("dane/strona2.php"); }

// i wywoływałem linkiem
<a href="index.php?id=strona1">Strona1</a>

Ten post edytował adek- 10.02.2012, 15:22:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adek-
post
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Ad1. CuteOne, a ja wcale się nie wypierałem... próbowałem raczej się wytłumaczyć, że jednak jestem początkującym, a dopiero wieloletnie, bądź jakiekolwiek doświadczenie weryfikuje takie właśnie błędy.
Ad2. bezlik funkcji mam na myśli jeden plik, gdzie mam umieszczone wszystkie case'y na podstrony, a każda podstrona posiada swoje funkcje, gdzie zawarte jest wszystko dotyczące danej sekcji strony... dodawanie/usuwanie tabel i danych, jak i wyświetlanie tych danych potrzebnych w danej sekcji strony, funkcje odpowienich kalkulatorów, czy masy innych zmiennych, przez co ograniczam liczbę plików do jednego includa "funkcje.php".

Nie mówię, że jest to dobre rozwiązanie, po prostu dla mnie jak narazie najbardziej wygodne na stan mojej wiedzy dt. PHP/MySQL (IMG:style_emoticons/default/wink.gif)

Moją bolączke rozwiązała sprawa:
  1. if(isset($_GET['show'])) $show=$_GET['show']; else $show='main()';
  2. pokaz($show);
  3. //a jeszcze lepszym, bo zarazem krótszym rozwiązaniem było:
  4. $show = $_REQUEST['show'];


Nie mniej jednak CuteOne jestem ciekaw Twojego rozwiązania, bo być może jest 100 razy lepsze jako bardziej doświadczonego. Nie bardzo tylko wiem o co chodzi z funkcją która sprawdza plik cache i jego świeżość. Chodzi o coś co będzie sprawdzało datę utworzenia, bądź edycji danego pliku który ma zostać zaincludowany? Tzn w folderze /cache/ są inne pliki niż /inlcude/ różniące się aktualną zawartością?

Ten post edytował adek- 13.02.2012, 13:16:35
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Cytat(adek- @ 13.02.2012, 13:13:24 ) *
  1. //a jeszcze lepszym, bo zarazem krótszym rozwiązaniem było:
  2. $show = $_REQUEST['show'];

Przecież to to samo (tablica superglobalna $_REQUEST "zawiera" w sobie inne teblice superglobalne, m.in. $_GET, $_POST) i jeśli w adresie URL nie będzie zmiennej show, to również zostanie wyświetlony błąd-uwaga. Temat include-owania jednego pliku zamiast kilku mniejszych był ostatnio na forum poruszany, przeszukaj tematy wstecz, a dowiesz się co będzie lepszym rozwiązaniem.
Pisząc aplikacje strukturalnie również warto zadbać o jak najlepsze odseparowanie warstwy logicznej od warstwy prezentacji i starać się programować zgodnie z regułami DRY i KISS. Najprostszym przykładem jest w Twoim przypadku zbędna instrukcja switch, bo skoro nazwa funkcji przekazywana jest w adresie URL, to wystarczy:
  1. $akcja = isset($_GET['show']) && $_GET['show'] != '' ? $_GET['show'] : 'main';
  2. if(function_exists($akcja)) $akcja();


Renderowanie widoków, to nic innego, jak wstawianie plików za pomocą include i wykorzystuje się to praktycznie wszędzie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 14:33