Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak zrobić na stronie dynamiczne przełączanie sie zawartości?
Madras
post 14.03.2010, 20:28:05
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.11.2008
Skąd: Włocławek

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


Witam,
W PHP jestem nowicjuszem, więc proszę o wyrozumiałość. Piszę stronę od zera.
W jaki sposób zrobić na stronie zmianę treści poprzez kliknięcie na odpowiednią pozycję w menu? Chodzi o to, że mam stronę główną index.php z menu po lewo i treścią na prawo od menu. Do ładowania treści chcę użyć funkcji include (nie wiem czy będzie ona odpowiednia do tego zadania). Chcę wyznaczyć zmienną ścieżki do include. Po uruchomieniu strony pierwszy raz, domyślnie wartość tej zmiennej ma być "news.html". Po kliknięciu w menu na np galeria, wartość zmiennej ma się zmienić na "gallery.html" i strona ma się odświeżyć z nową zawartością itd.
Za wszelką pomoc będę bardzo wdzięczny. Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Ellington
post 14.03.2010, 21:37:15
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


Ustaw w menu adresy:

Kod
<a href="index.php?id=gallery">Galeria</a>


W index.php odbierz zmienną z adresu:

Kod
<?php $id = $_GET['id']; ?>


i przypisz do include'a:

Kod
<?php include($id.'.html'); ?>


To nie jest bezpieczne wyjście, ale obrazujące problem. Poszukaj w sieci i poczytaj, jak się zabezpieczać w takich sytuacjach przed nieautoryzowanym dostępem do plików.

Ten post edytował Ellington 14.03.2010, 21:38:49


--------------------
while ( !die() ) code();
Go to the top of the page
+Quote Post
Madras
post 14.03.2010, 22:21:46
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.11.2008
Skąd: Włocławek

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


Wielkie dzięki! ;-)
Właśnie coś takiego chciałem otrzymać. A co do dostępu do "wrażliwych" plików to w Apache da się kontrolować za pomocą .htaccess. Mam jeszcze jedno pytanko jak zrobić by była podświetlona aktywna opcja w menu?
EDIT:
Jeszcze jedno banalne pytanie ;p Co zrobić, żeby przy pierwszym uruchomieniu automatycznie ładowało się news?

Ten post edytował Madras 14.03.2010, 22:39:47
Go to the top of the page
+Quote Post
Rysh
post 15.03.2010, 06:00:40
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Ja proponuje zamiast:
  1. <?php include($id.'.html'); ?>

Użyć switch.

Co do drugiego pytania, na początku musisz sprawdzić czy istnieje zmienna $_GET['id'], jeśli jej brak includujesz news.php.

W funkcji switch używasz default.

Ten post edytował Rysh 15.03.2010, 06:03:31


--------------------
Go to the top of the page
+Quote Post
frytek92
post 15.03.2010, 07:28:57
Post #5





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 9.11.2007
Skąd: Goleniów

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


Cytat
Użyć switch.


Czy ja wiem myślę ze to jest bez większego znaczenia której funkcji się używa switch jedynie ładniej wygląda a IF jest wygodniejsza wiec jeżeli ci wygodniej to spokojnie użyj IF do tego dodam że Switch jest trochę wolniejsza od IF winksmiley.jpg

Apropo twojego tematu niekoniecznie musisz sprawdzać czy $_GET['id'] istnieje wystarczy że na poczatku zdefiniujesz $id np :

Kod
$id = '1';


Dzieki czemu potem każdy kto da nieistniejąca liczbę w $_GET['id'] wyświetli się główna strona a nie błąd ze strona nie istnieje winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Ellington
post 15.03.2010, 07:32:08
Post #6





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


Jeżeli nie sprawdzisz, czy istnieje $_GET przed przypisaniem go do zmiennej, to w przypadku, gdy $_GETa nie będzie, php wyrzuci notyfikację, że zmienna z której chcesz przypisać nie istnieje - dobrą praktyką jest unikanie wszelkich uwag PHP, nawet tych niegroźnych, więc myślę, że warto poświęcić jedną linię kodu, żeby się upewnić.


--------------------
while ( !die() ) code();
Go to the top of the page
+Quote Post
Rysh
post 15.03.2010, 10:10:14
Post #7





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Prawdę mówiąc nie rozumiem tego co piszesz:
  1. <?php
  2. $id = 1;
  3. $id = $_GET['id'];
  4. ?>

Co Ci da że na początku zadeklarujesz że $id = 1 skoro za chwilę i tak ją nadpiszesz?


--------------------
Go to the top of the page
+Quote Post
Madras
post 15.03.2010, 12:44:02
Post #8





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.11.2008
Skąd: Włocławek

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


Ok, problem z automatycznym news rozwiązany ;-)
  1. <?php if($id=='') $id='news'; ?>

Pozostaje jeszcze: jak zrobić, żeby aktywna opcja w menu była wyróżniona innym kolorem.
Go to the top of the page
+Quote Post
mortus
post 15.03.2010, 12:57:12
Post #9





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

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


  1. <a href="index.php?id=news" <?php if($_GET['id'] == 'news') echo 'class="active"'; ?>>Newsy</a>
Jeśli wcześniej przepisujesz $_GET['id'] do jakiejś zmiennej, to w warunku if podajesz zamiast $_GET['id'] właśnie tą zmienną. No i tworzysz sobie w css klasę
  1. .active {
  2. color: #ccc;
  3. }
Oczywiście kolor może być inny.

Ten post edytował mortus 15.03.2010, 13:00:18
Go to the top of the page
+Quote Post
Madras
post 15.03.2010, 19:26:03
Post #10





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.11.2008
Skąd: Włocławek

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


Dzięęki! ;-) Już wszystko działa jak powinno!

Hah, zamęczę was tymi pytaniami. Napisałem funkcję do przełączania podświetlenia, żebym nie musiał niczego kopiować.
  1. function menu_item($text,$objective)
  2. {
  3. if($id==$objective) return '<font color="#FF0000">'.$text.'</font>';
  4. else return '<a href="index.php?id='.$objective.'" class="active">'.$text.'</a>';
  5. }

Ale jest jakiś problem z return echo. Jak inaczej można to napisać?

Ten post edytował Madras 15.03.2010, 19:25:57
Go to the top of the page
+Quote Post
mortus
post 15.03.2010, 20:26:47
Post #11





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

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


Nie rozumiem Twoich intencji, ale taka funkcja nie ma prawa zadziałać, bo nie ma nigdzie zdefiniowanej zmiennej $id. Natomiast gdyby ta zmienna $id była, to aby wydrukować wynik tej funkcji należałoby napisać
  1. echo menu_item('jakiś tekst', 'identyfikator');
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:38