Macieqqq Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 Witam, mam pytanie... czy uzywanie funkcji inlclude jest optymalnym rozwiazaniem? Czy sa moze lepsze sposoby na zminimalizowanie powielania tych samych elementow strony? Jesli nie, to... Czy mozna "zincludowac" naglowek (znaczniki meta, head, itp.) strony? Tzn czy nie bedzie to przeszkadzalo wyszukiwarka czy komukolwiek? :wink: Z gory dziekuje za odpowiedz Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 (edytowane) I tak, i nie. Optymalnym jest w sensie działania, ale lepszym jest "require". Działanie identyczne, przy czym wywala błąd w przypadku nie znalezienia pliku. Widzę, do czego zmierzasz. Generalnie są 2 sposoby na zrobienie tego: 1. Istnieje index.php który przez wywołanie z parametrem dołącza treść poszczególnych podstron: » Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... « (nagłówek pliku html)<body....>(tu jakies menu)<?if(substr($page, 0, 1) != "_") require('_c01.htx');else { if (is_file($page)) require($page); else echo "<p class=\"news\">!!! BŁĄD !!!<br /><br />Wybrana przez Ciebie strona nie istnieje w naszym serwisie.</p>"; }?>(tu stopka i zamknięcie html)Natomiast w pliku dołączanym jest sama treść konkretnej podstrony/artykułu (razem z formatowaniem html) 2. Sposób dokładnie odwrotny. Każda z podstron (rozszerzenia .php) dołącza sobie resztę strony. » Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... « Rozcinamy powyższy index.php na 2 części: header.htx i footer.htx. Wywołujemy strony normalnie, np: localhost/firma/info_o_firmie.php. W środku wygląda to tak: <? require('header.htx'); ?>(tu treść artykułu z formatowaniem)<? require('footer.htx'); ?> Wyszukiwarki skaczą po linkach "a href", więc oboma sposobami dostają identyczną zawartość strony - sam kod html. Edytowane 21 Stycznia 2007 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
SGJ Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 I tak, i nie. Optymalnym jest w sensie działania, ale lepszym jest "require". Działanie identyczne, przy czym wywala błąd w przypadku nie znalezienia pliku. Include wywali warninga. A to czy wywali warninga przy include czy fatal errora przy require to juz zalezy jak w php jest ustawione wyswietlanie błędów bo moze i zadnego nie wyswietlic. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Macieqqq Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 (edytowane) Chyba jednak zostane przy include, gdyz moja znajomosc PHP nie jest wystarczjaca. No chyba, ze ktos moglby mi to jakos łopatologicznie wytlumaczyc :rolleyes: EDIT: To jak Waszym zdaniem? Zostawac przy include? Edytowane 21 Stycznia 2007 przez Macieqqq Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 (edytowane) @SGJ: Na dobrą sprawę można sobie ustawić zupełnie odwrotnie, ale nie o to chodzi. ;) @Macieqqq: Polecenia nie różnią się niczym prócz nazwy i tego, jaki wywalają błąd (przy domyślnych ustawieniach). To, czy napiszesz: require('plik')czyinlcude('plik')zależy już od Ciebie. Reszta kodu leci tak samo. Edytowane 21 Stycznia 2007 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Macieqqq Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 Wyszukiwarki skaczą po linkach "a href", więc oboma sposobami dostają identyczną zawartość strony - sam kod html.Oba sposobami, czyli za pomoca include jak i require mozna "zincludowac" naglowek strony, tak? Jesli nie ma roznic, to zostane przy include... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 Chodziło mi o 2 sposoby konstrukcji witryny. Nie mniej jednak ten wniosek także jest trafny - nie ma różnicy. Możesz zostać przy inlcude, jeśli się tak upierasz. ;) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
bellum Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 (edytowane) jest jeszcze jedna różnica miedzy tymi poleceniami, równie ważna o ile nie ważniejsza: Require: kod pliku jest dodawany do bieżącego kodu przed wykonaniem przez parser PHP Inlcude: plik jest dodawany podczas przetwarzania kody przez parser PHP co za tym idzie nazwa pliku dla polecenia require jest zdefiniowana z gory a dla Inlcude nazwa może pochodzić ze zmiennej, w pewnych sytuacjach nie ma innej możliwości tylko użyć include PS. jak chcesz dodawać treść na stronę z pliku PHP a treść ma być uprzednio przetwarzana to użyj AJAX-a Edytowane 21 Stycznia 2007 przez Zawadaki Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 W przedstawionym przeze mnie przypadku używam require i nazwa pliku pochodzi ze zmiennej w wywołaniu strony. :] Zapomniałem dodać, iż w powyższym przypadku wywołanie podstrony wygląda np. tak: <a href="go-d01" class="rollover">Programy</a>Natomiast do poprawnego działania, potrzebny jest wtedy plik .htaccess o takiej zawartości: Options +FollowSymLinks +IncludesRewriteEngine OnRewriteRule ^go-([^/]+)$ index.php?page=_$1.htx [L] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
bellum Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 (edytowane) W przedstawionym przeze mnie przypadku używam require i nazwa pliku pochodzi ze zmiennej w wywołaniuno tak moj bład ale czy nie lepiej użyć czegoś takiego: » Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... « <script type="text/javascript">var ObiektXMLHttp = false;if (window.XMLHttpRequest) {ObiektXMLHttp = new XMLHttpRequest();} else if (window.ActiveXObject) {ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");}function Wstaw(plik,element) {var element_div = document.getElementById(element);if (ObiektXMLHttp) {ObiektXMLHttp.open('GET', plik, true);ObiektXMLHttp.onreadystatechange = function() {if (ObiektXMLHttp.readyState == (1 || 0)) {element_div.innerHTML = 'Ładuje czekaj...';} else if (ObiektXMLHttp.readyState == (4 || 2) && ObiektXMLHttp.status == 200) {element_div.innerHTML = ObiektXMLHttp.responseText;}}ObiektXMLHttp.send(null);}}</script></head><body onload="Wstaw('plik_A.php','okno')"><a href="Wstaw('plik_B.php','okno')"></a> lub <a href="Wstaw('plik.php?cos=fgfg','okno')"></a><div id="okno"></div></body></html> » Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... « zmiany w oknie nie przeładuja całej strony Edytowane 21 Stycznia 2007 przez Zawadaki Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
SGJ Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 I jak wyłacze js to cała strona nie bedzie działała... Uzywanie ajaxa tam gdzie nie ma takiej potrzeby jest błędem. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...