[PHP] Ładowanie fragmentów strony

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Hawk
Przelotem
Przelotem
Posty: 209
Rejestracja: ndz gru 22, 2002 9:34 pm

Re: [PHP] Ładowanie fragmentów strony

Post autor: Hawk »

marek333 pisze:chciałbym aby po kliknięciu linku na stronie nie wczytywała się ona na nowo w całości ale tylko jej fragment z nową treścią
Tak sie niestety nie da, jesli chcesz korzystac z PHP to zmiana nawet malego fragmentu strony wymaga przeladowania jej od nowa.
marek333 pisze:Czy ten wczytywany fragment robię jako osobną stronę umieszczam na serwerze a w indesie podaję tylko wywołanie.
Mozesz tak zrobic. Najprostszym sposobem jest skorzystanie z funkcji include() - ten temat byl juz wielokrotnie poruszany na tym forum.
Hawk
Przelotem
Przelotem
Posty: 209
Rejestracja: ndz gru 22, 2002 9:34 pm

Re: [PHP] Ładowanie fragmentów strony

Post autor: Hawk »

To juz zalezy od tego jak sobie skrypt napiszesz, najprostrzy przyklad:

[php]
// kod html
<?php
$plik = $_GET["id"];
include($plik.'.html');
?>
// ciag dalczy kodu html
[/php]

Odwolanie bedzie wygladac mnie wiecej tak, index.php?id=strona1, wtedy skrypt zaladuje plik strona1.html znajdujacy sie w tym samym katalogu co index.php, ale nic nie stoi na przeszkodzie zeby w funkcji include() ustawic jakas sciezke do katalogu z plikami.

To co napisalem to bardzo duze uproszczenie. Ten kod pozwala na wyswietlenie dowolnego pliku .html z serwera, w praktyce lepiej byloby zrobic na przyklad tablice z dozwolonymi nazwami plikow tak zeby ktos lepiej zorientowany nie wyswietlil sobie czegos czego nie powinien :).
Balas
Moderator
Posty: 252
Rejestracja: wt sie 02, 2005 12:53 pm
Lokalizacja: Inowroclaw
Kontakt:

Re: [PHP] Ładowanie fragmentów strony

Post autor: Balas »

chciałbym aby po kliknięciu linku na stronie nie wczytywała się ona na nowo w całości ale tylko jej fragment z nową treścią
Do tego mozesz uzyc AJAXa ;)
http://forum.php.pl/index.php?showforum=16
Roberto
Nowy
Nowy
Posty: 38
Rejestracja: czw paź 20, 2005 4:04 pm

Re: [PHP] Ładowanie fragmentów strony

Post autor: Roberto »

marek333 pisze: 1 czy oko ma mieć rozszrzenie ".php"? (pytam dla świętego spokoju choć jestem pewien że tak)
Nie musi. Może mieć html a może nawet nie mieć wcale rozszerzenia.
2 Czy w prawej dolnej komórce w indesie wystarczy wpis:
<td>
<?php include("oko.php"); ?>
</td>
Jeśli komórka "prawa dolna" nie będzie tą częścią strony która ma się zmieniać po kliknięciu na jakieś linki umieszczone gdzieś indziej to tak; taki include wystarczy.
3 czy index ma rozszerzenie "php" czy "html"?
W zasadzie powinny działać oba ale ja się spotykałem z serwerami na których kod php działał dopiero gdy rozszerzenie pliku było *.php i choć nie wiem czemu tak się dzieje to dla świętego spokoju daję rozszerzenie php i nie ma prawa nie działać ;p
4 jaką konstrukcję ma wczytywana w index strona "oko.php"? Czy jest to normalny zapis jak pod html tylko z innym tozszerzeniem np:

<html>
<body>
<img src="plikgraf.jpg">tekst tekst tekst tekst tekst
tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst
</body>
</html>

i ten plik zapisuję pod nazwą "oko.php"?
Absolutnie nie, bo przecież include jest odpowiedzialny za wciągnięcie zawartości jednego pliku do innego pliku, więc jeśli zrobisz include takiego oko.php do index.php to w efekcie będziesz miał index.php zawierający dwie deklaracje typu dokumentu, dwie sekcje body, itd. Plik includowany ma zawierać tylko i wyłącznie to co faktycznie chcesz do strony wczytać.

Albo inaczej; piszesz normalnie cały index, potem zaznaczasz ten fragment kodu który ma być includowany, wycinasz go, na jego miejsce wpisujesz funkcję include, a to co wyciąłeś wklejasz do pliku oko.php
5 Gdzie na serwerze umieszczam plik "oko.php"? w tym samym folderze co index? Czy stworzyć jakiś nowy folder? gdzieś czytałem że ma to być folder include
W sumie to chyba obojętne, grunt, żeby ścieżka do tego pliku zapisana w kodzie strony zgadzała się z faktycznym jego położeniem.


A tak w ogóle to precz z układem na tabelkach :P

--

Hawk podał ci jeden z przykładów includowania stron, ale to co on podał służy do zupełnie czegoś innego, a jeśli dobrze rozumiem twój problem to tobie chodzi o coś takiego jak np. stopka, która zawsze (na każdej postronie) wyświetla się tak samo i zawiera np. datę ostatniej modyfikacji serwisu. Wtedy po dokonaniu zmian na serwisie nie trzeba klepać tej samej stopki na każdej podstronie z osobna, tylko wystarczy zmienić plik stopka.php który w każdej podstronie includowany jest tą krótszą wersją include ;)
Ostatnio zmieniony pt kwie 07, 2006 9:17 pm przez Roberto, łącznie zmieniany 1 raz.
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: [PHP] Ładowanie fragmentów strony

Post autor: Stig »

marek333 pisze:1 czy oko ma mieć rozszrzenie ".php"? (pytam dla świętego spokoju choć jestem pewien że tak)
Nie, nie musi.
marek333 pisze:2 Czy w prawej dolnej komórce w indesie wystarczy wpis:

Kod: Zaznacz cały

<td>
<?php include("oko.php"); ?> 
</td>
Wystarczy.
marek333 pisze:3 czy index ma rozszerzenie "php" czy "html"?
Rozszerzenie dla którego serwer pozwoli parserowi wykonać skrypt - najczęści jest to *.php.
marek333 pisze:4 jaką konstrukcję ma wczytywana w index strona "oko.php"? Czy jest to normalny zapis jak pod html tylko z innym tozszerzeniem np:

Kod: Zaznacz cały

<html>
<body>
<img src="plikgraf.jpg">tekst tekst tekst tekst tekst
tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst
</body>
</html>
Jest to kod, który chciałbyś ujrzeć zamiast instrukcji include. A więc wstawianie tagów html i body jest działaniem niepoprawnym.
marek333 pisze:5 Gdzie na serwerze umieszczam plik "oko.php"? w tym samym folderze co index? Czy stworzyć jakiś nowy folder? gdzieś czytałem że ma to być folder include
Jeśli jako wartość argumentu instrukcji inlcude podajesz samą nazwę pliku oko.php to musi się on znajdować w tym samym miejscu co index.php
marek333 pisze:inna sprawa
Odwolanie bedzie wygladac mnie wiecej tak, index.php?id=strona1
gdzie owo odwołanie jest wpisane?
Za znakiem zapytania. id to zmiena przekazywana metodą GET (w adresie), a strona1 to jej wartość.
marek333 pisze:kolejna rzecz
Znaleziony przeze mnie kod:

[php]<?php include("oko.php"); ?>[/php]

ma się jakoś biednie przy Twoim

Twój kod:

[php]<?php
// kod html
$plik = $_GET["id"];
include($plik.'.html');
// ciag dalczy kodu html
?>[/php]
Zachowując odpowiednie standardy bezpieczeństwa powinien on wyglądać mniej więcej tak.

EDIT: jak wiadać Roberto mnie ubiegł ;)

EDIT2:
Roberto pisze:A tak w ogóle to precz z układem na tabelkach :P
Popieram :)
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: [PHP] Ładowanie fragmentów strony

Post autor: Stig »

Ależ proszę bardzo - to nie jest żadna tajemnica - tabele służą do przekazywania danych tabelarycznych - każde inne ich zastosowanie łamie zasady semantyki. Tabele służące do budowania układu stron negatywnie wpływają m. in. na poziom funkcjonalności, dostępności i optymalizacji. Rozwiązaniem dla tego sposobu jest semantyczny kod - gdzie każdy znacznik wykorzystywany jest do właściwego celu. Nie widzę sensu rozpisywania się na ten temat, skoro takie źródła jak prezentacja "Dlaczego układ na tabelkach jest głupi: opis problemu i jego rozwiązania" (którą Ci już wcześniej podlinkowałem) oraz artykuł "Projektujesz w tabelkach? OBUDŹ SIĘ!" tłumaczą to w znacznie lepszy sposób.

BTW, strona główna wp.pl jest w znacznej mierze semantyczna i poprawna. A poza tym, to że serwis jest popularny nie musi świadczyć o tym, że jest poprawnie stworzony ;)
Roberto
Nowy
Nowy
Posty: 38
Rejestracja: czw paź 20, 2005 4:04 pm

Re: [PHP] Ładowanie fragmentów strony

Post autor: Roberto »

marek333 pisze:utrzymam dalej koncepcję z tabelami
a to ja bojkotuję dalszą pomoc :-D i ogranicze się do podania jednego z przykładów includowania jakie jest ci potrzebne: http://www.webdiary.pl/technologie+art.id+50.htm
ODPOWIEDZ