Jest tutaj tyle przykładów, jak coś policzyć i wyświetlić w PHP. Jednak jak ja to mam połączyć z wyglądem strony, który przecież jest pisany w HTML? Mam mieć cały kod HTML i wcinki PHP w jednym dużym pliku? Wygląda to na rozwiązanie dość skomplikowane i trudne w rozwoju.
Dzień dobry,
trochę odświeżę pytanie. Coś tam stworzyłem w HTML i JS (proste początki) i próbuję to rozbudować o PHP. Tylko nie mogę złapać współdziałania. Na swojej stronie mam kalkulator obliczający pewną wielkość. W HTML dwa pola wyboru opcji (parametrów) i na podstawie tego obliczana wartość. Start obliczeń OnClick klawisza, które uruchamia skrypt JS. W JS jest wzór do obliczenia wartości i funkcje do podmiany zawartości strony (bez przeładowania) do wyświetlenia wyniku. Ponieważ HTML i JS działają w przeglądarce, po stronie klienta, sposób obliczenia wartości jest jawny. Chciałbym, aby nie było możliwości poznania formuły obliczeniowej, więc pomysł że PHP będzie liczył na serwerze. Z tego co zrozumiałem do tej pory, w PHP nie ma możliwości zmiany zawartości strony bez jej przeładowania, ponieważ musi być ponownie wygenerowana. Ale jak, po wysłaniu formularza ze strony do pliku “obliczeniowego” PHP, wrócić na stronę z wyświetlonym wynikiem (z podmienioną zawartością) ? No i czytając przedmówcę doszedłem do wniosku, że z całą stroną to będzie problem. Tak więc, czy dobrze zrozumiałem, że trzeba budować strony z fragmentów, które można podmieniać w razie potrzeby ? Np. w moim przypadku “includować” przy pomocy PHP fragment kodu HTML z wynikiem ?
Cześć Marcin,
masz rację że można to zrobić na wiele sposobów, a AJAX czy jQuery to pewnie optymalne narzędzia. Tylko, że ja na razie próbuję rozgryźć filozofię, zasadę działania PHP. I tak, np. taki prosty przykład. Użytkownik wysyła formularz na serwer. W PHP przeprowadzam walidację, dane niekompletne. Chcę wysłać komunikat aby uzupełnić dane, nie zmieniając treści strony (chyba i tak musi się przeładować). Wykombinowałem, że w PHP wyślę alert JS (nie doszedłem jeszcze czy w PHP jest taka funkcja). Tylko, że na razie otrzymuję albo pustą stronę z komunikatem, albo odświeżoną stronę bez komunikatu. Może brakuje mi ogólnej wiedzy na temat działania klient-serwer.
Witaj Marcinie,
dziękuję za odpowiedź. Pewnie masz rację, że w takim przypadku najlepszymi narzędziami będzie AJAX czy jQuery, tylko że ja na razie próbuję załapać filozofię-zasadę działania PHP. Nie doczytałem jeszcze podręcznika do końca, ale taki prosty przykład. Użytkownik wysyła formularz z danymi na serwer. W PHP dokonuję obliczeń na podstawie tych danych. I teraz może mnie oświecisz jak wyprowadzić wynik na stronę z której wysłano formularz ?
Pozdrawiam
PHP przygotowuje kompletny wynik po stronie serwera – może to być gotowa strona HTML, a może tylko jakaś krótka struktura JSON czy XML. Generalnie, Twój przykład może działać tak, że wysyłając formularz załadujesz tę stronę raz jeszcze, a w kodzie PHP będzie na początku sprawdzenie, czy dane formularza zostały wysłane. Jeśli tak, skrypt dokona obliczeń i wyświetli kompletną stronę z wynikiem. Jeśli danych z formularza nie ma, to wyświetli stronę z pustym formularzem do wypełnienia. A możesz formularz wysłać metodą AJAX, czyli wysłać dane z formularza na inny adres PHP, który przejmie te dane i policzy wynik, po czym wyśle sam wynik w formie JSON. Wtedy Twój skrypt JavaScript rozpozna otrzymaną odpowiedź i zaktualizuje stronę bez jej przeładowywania. Popróbuj i szybko zobaczysz, jak to działa.
PHP to narzędzie do generowania stron w HTML właśnie. Metod jest wiele. Można mieć pliki z ustalonym nagłówkiem i stopką i składać je przed opublikowaniem.
<?php include_once "header.html" include_once "zajawka_tematu01.html" // funkcje w php składające treść include_once "footer.html" ?>
Można w pliku php “trzymać całość. Można stworzyć swój framework (wybrałem tą drogę) lub skorzystać z istniejącego. Metod jest wiele. Na pewno nie uniknie się znajomości HTML i JS. Z góry odradzam tworzenie jednego, wielkiego, wszystkomającego pliku. Chyba, że jest to jakieś małe, jednostkowe, proste rozwiązanie wyświetlające na przykład temperaturę lub zmieniające się obrazki.
Jak ze wszystkim… trzeba poznać narzędzie, mieć cel do realizacji i wolę jego zakończenia i na pewno się uda. Przechodziłem to samo od “nie wiem nic” do np simuz.pl i dało się to zrobić w 2 lata. Trzymam kciuki.
Cześć Andrzej,
Wystarczy, że skorzystasz z technologii zwanej AJAX. W surowym JavaScript będzie to wymagało nieco zachodu, ale jeśli używasz np. jQuery to zrobisz to mega prosto – https://api.jquery.com/jquery.post/