<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>echo - Kama Kaczmarek</title>
	<atom:link href="https://kamakaczmarek.net/tag/echo/feed/" rel="self" type="application/rss+xml" />
	<link>https://kamakaczmarek.net/tag/echo/</link>
	<description>Strona z materiałami dla uczniów i nauczycieli</description>
	<lastBuildDate>Tue, 29 Sep 2026 11:46:10 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>2. PHP &#8211; pierwszy skrypt, echo, komentarze.</title>
		<link>https://kamakaczmarek.net/php-pierwszy-skrypt-echo-komentarze/</link>
		
		<dc:creator><![CDATA[Kama]]></dc:creator>
		<pubDate>Fri, 28 Sep 2018 18:18:39 +0000</pubDate>
				<category><![CDATA[aplikacje]]></category>
		<category><![CDATA[dla ucznia]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[aplikacje internetowe]]></category>
		<category><![CDATA[echo]]></category>
		<category><![CDATA[komentarze]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[składnia]]></category>
		<guid isPermaLink="false">https://kamakaczmarek.net/?p=2284</guid>

					<description><![CDATA[<p>TaskQuest Dodatek Szybki quiz – przypomnienie poprzedniej lekcji 1. Który opis jest algorytmem? a) „Zrób coś z tymi liczbami, aż będzie dobrze.”b) „Weź dwie liczby, dodaj je, wypisz wynik, zakończ.”c) „Dodawaj liczby w nieskończoność.” 2. Ułóż etapy programowania we właściwej kolejności i wyjaśnij jednym zdaniem, dlaczego mówimy, że to proces cykliczny: 3. „Analizuje kod źródłowy, [&#8230;]</p>
<p>Artykuł <a href="https://kamakaczmarek.net/php-pierwszy-skrypt-echo-komentarze/">2. PHP &#8211; pierwszy skrypt, echo, komentarze.</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="#TaskQuest">TaskQuest</a></p>
<p><a href="#dodatek">Dodatek</a></p>



<h2 class="wp-block-heading">Szybki quiz – przypomnienie poprzedniej lekcji</h2>



<p class="wp-block-paragraph"><strong>1.</strong> Który opis jest algorytmem?</p>



<p class="wp-block-paragraph">a) „Zrób coś z tymi liczbami, aż będzie dobrze.”<br />b) „Weź dwie liczby, dodaj je, wypisz wynik, zakończ.”<br />c) „Dodawaj liczby w nieskończoność.”</p>



<p class="wp-block-paragraph"><strong>2.</strong> Ułóż etapy programowania we właściwej kolejności i wyjaśnij jednym zdaniem, dlaczego mówimy, że to proces <strong>cykliczny</strong>:</p>



<ul class="wp-block-list">
<li>analiza działania i rejestrowanie błędów</li>



<li>edycja kodu źródłowego</li>



<li>powrót do edycji kodu</li>



<li>uruchomienie programu</li>
</ul>



<p class="wp-block-paragraph"><strong>3.</strong> „Analizuje kod źródłowy, a przeanalizowane fragmenty od razu wykonuje.” – kompilator czy interpreter?</p>



<p class="wp-block-paragraph"><strong>4.</strong> Które zdanie o aplikacji internetowej jest prawdziwe?</p>



<p class="wp-block-paragraph">a) Działa wyłącznie w przeglądarce i nie potrzebuje serwera.<br />b) Pracuje na serwerze, a użytkownik korzysta z niej przez przeglądarkę; pośredniczy serwer WWW.<br />c) To każdy plik HTML zapisany na dysku komputera.</p>



<p class="wp-block-paragraph"><strong>5.</strong> Na wzór przykładu z lekcji zapisz w PHP zdanie: <em>„Jeżeli liczba jest mniejsza od zera, to wypisz, że jest ujemna”</em>.</p>



<p class="wp-block-paragraph"><strong>6.</strong> Co jest nie tak z tym zapisem bloków instrukcji?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">{ instrukcja_1; { instrukcja_2; instrukcja_3; }</code></pre>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>ODPOWIEDZI</strong></summary>
<p><!-- obsidian --></p>
<ol>
<li><strong>b</strong> – konkretne czynności i skończona liczba kroków. (a) nie mówi, co zrobić, (c) nigdy się nie kończy.</li>
<li>Edycja kodu źródłowego → uruchomienie programu → analiza działania i rejestrowanie błędów → powrót do edycji. Cykliczny, bo po analizie wracamy do edycji, żeby poprawić błędy lub rozbudować program – i tak w kółko.</li>
<li><strong>Interpreter.</strong> Kompilator tłumaczy kod na język niskiego poziomu przed uruchomieniem.</li>
<li><strong>b</strong></li>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">if($liczba&lt;0) echo "jest ujemna";</code></li>
<li>Otwarte są dwa bloki <code class="prettyprint lang-sql" style="font-size: 0.85em;">{</code>, a zamknięty tylko jeden <code class="prettyprint lang-sql" style="font-size: 0.85em;">}</code> – brakuje jednej klamry zamykającej.</li>
</ol>
</details>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Na zakończenie ostatniego tematu poprosiłam Cię o stworzenie &#8222;zeszytu elektronicznego&#8221;. W panelu lewym Twojego &#8222;zeszytu&#8221; dodaj link o treści: &#8222;PHP &#8211; pierwszy skrypt, echo, komentarze.&#8221;, który przeniesie Cię do podstrony o nazwie: &#8222;data_dziesiejszych_zajec.php&#8221; (oczywiście wpisz datę zajęć np. 280918.php).</p>



<p class="wp-block-paragraph">Pliki projektu zapisuj w katalogu serwera WWW, np.&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">C:\xampp\htdocs\NAZWA_PROJEKTU\</code>&nbsp;(Windows + XAMPP). Dzięki temu nie mieszasz plików z innymi ćwiczeniami i łatwo przenosisz projekt.</p>



<p class="wp-block-paragraph"><strong>Uwaga: skrypty php muszą być zapisane w pliku z rozszerzeniem .php, NIE .html.</strong></p>



<p class="wp-block-paragraph">Uruchom XAMPP Control Panel i wystartuj&nbsp;<strong>Apache</strong>.&nbsp;<strong>MySQL</strong>&nbsp;uruchamiaj tylko wtedy, gdy dana lekcja faktycznie korzysta z bazy danych. Uruchom przeglądarkę internetową wpisując w pasku adresu: <strong>localhost</strong>.</p>



<p class="wp-block-paragraph">Jesteś gotowy do pracy.</p>



<h2 class="wp-block-heading"><strong>Składnia PHP</strong></h2>



<p class="wp-block-paragraph">O składni języka PHP mówiliśmy na poprzedniej lekcji, ale w celu przypomnienia, aby skrypt PHP został prawidłowo zinterpretowany musi znajdować się pomiędzy standardowymi znacznikami:</p>



<pre class="wp-block-preformatted prettyprint">&lt;?php <br />    // kod PHP</pre>



<p class="wp-block-paragraph">Zamykanie&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">?&gt;</code>&nbsp;na końcu pliku PHP jest&nbsp;<strong>opcjonalne</strong>&nbsp;i często się go&nbsp;<strong>nie stosuje</strong>&nbsp;(zmniejsza ryzyko przypadkowego wysłania białych znaków i problemów z nagłówkami).</p>



<h2 class="wp-block-heading"><strong>Komentarze</strong></h2>



<p class="wp-block-paragraph">Pamiętasz jak wygląda komentarz w HTML?</p>



<pre class="wp-block-preformatted prettyprint">&lt;!-- komentarz --&gt;
</pre>



<p class="wp-block-paragraph">Komentarze w języku PHP występują w 3 postaciach:</p>



<pre class="wp-block-preformatted prettyprint">&lt;?php<br />// komentarz liniowy<br /># działa jak komentarz liniowy, ale w praktyce w PHP najczęściej spotkasz //<br />/* komentarza blokowy<br />kolejna linia<br />i kolejna<br />i kolejna<br />aż do zamknięcia komentarza */<br />?&gt;<br /></pre>



<p class="wp-block-paragraph"><strong>Uwaga: nie wolno zagnieżdżać w sobie komentarzy blokowych!</strong></p>



<p class="wp-block-paragraph">Komentarze są bardzo przydatnym narzędziem i nie bój się z nich korzystać.</p>



<p class="wp-block-paragraph">Mamy jeszcze komentarz dokumentacyjny, który musi zaczynać się od <strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">/**</code></strong>&nbsp;(otwarcie) i kończyć na&nbsp;<strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">*/</code></strong>&nbsp;(zamknięcie). Każda linia wewnątrz bloku powinna zaczynać się od gwiazdki (<code class="prettyprint lang-sql" style="font-size: 0.85em;">*</code>).</p>



<pre class="wp-block-preformatted prettyprint">&lt;?php<br />/**<br /> * Krótki opis (podsumowanie) funkcji.<br /> *<br /> * Dłuższy opis funkcji, który może zawierać szczegóły<br /> * dotyczące implementacji lub działania.<br /> *<br /> * @param string $param1 Opis parametru pierwszego.<br /> * @param int    $param2 Opis parametru drugiego.<br /> * @return array         Opis zwracanej wartości.<br /> */<br />function przykladowaFunkcja($param1, $param2) {<br />    // ... kod<br />}<br />?&gt;</pre>



<div class="Y3BBE" data-sfc-cp="" data-hveid="CAcQAA" data-processed="true">Tagi pozwalają ustrukturyzować informacje o kodzie. Najpopularniejsze z nich to:</div>



<ul class="wp-block-list KsbFXc U6u95">
<li><span class="T286Pc" data-sfc-cp="" data-processed="true"><strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">@param</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;typ&gt;</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;zmienna&gt;</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;opis&gt;</code></strong>: Opisuje parametry funkcji/metody.</span></li>



<li><span class="T286Pc" data-sfc-cp="" data-processed="true"><strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">@return</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;typ&gt;</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;opis&gt;</code></strong>: Opisuje zwracaną wartość.</span></li>



<li><span class="T286Pc" data-sfc-cp="" data-processed="true"><strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">@var</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;typ&gt;</code></strong>: Używany do definiowania typu zmiennych (np. właściwości klasy).</span></li>



<li><span class="T286Pc" data-sfc-cp="" data-processed="true"><strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">@author</code></strong>: Autor kodu.</span></li>



<li><span class="T286Pc" data-sfc-cp="" data-processed="true"><strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">@since</code></strong>: Wersja, od której element jest dostępny.</span></li>



<li><span class="T286Pc" data-sfc-cp="" data-processed="true"><strong class="Yjhzub" data-processed="true"><code class="prettyprint lang-sql" style="font-size: 0.85em;">@throws</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;typ&gt;</code>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;opis&gt;</code></strong>: Opisuje wyjątki, które mogą zostać wyrzucone.</span></li>
</ul>



<h2 class="wp-block-heading"><strong>Wyświetlanie tekstu w przeglądarce</strong></h2>



<p class="wp-block-paragraph">Aby wyświetlić tekst w przeglądarce posługujemy się instrukcją <strong>echo</strong></p>



<pre class="wp-block-preformatted prettyprint">echo "Hello World!"; // wyświetli napis: Hello World! </pre>



<p class="wp-block-paragraph">Alternatywnie możesz posłużyć się funkcją <strong>print</strong></p>



<pre class="wp-block-preformatted prettyprint">print "Hello World!"; // wyświetli napis: Hello World!  </pre>



<p class="wp-block-paragraph">Hmm&#8230; czy są identyczne?</p>



<p class="wp-block-paragraph"><strong>echo </strong>i <strong>print </strong>służą do wypisywania tekstu. <br />&#8211; echo to <strong>konstrukcja językowa</strong> i nie zwraca wartości. <br />&#8211; print zachowuje się jak <strong>wyrażenie</strong> i zwraca `1`, więc teoretycznie można go użyć w wyrażeniach. <br />W praktyce w nowoczesnym PHP (7/8) różnice wydajności są pomijalne — używaj tego, co jest czytelniejsze (najczęściej `echo`).</p>



<p class="wp-block-paragraph">ale co i jak jeszcze można wyświetlać:</p>



<pre class="wp-block-preformatted prettyprint">echo "&lt;br&gt;"; //w ten sposób dodajemy wyświetlanie nowej linii w HTML<br />echo "Linia 1\nLinia 2"; //w samym tekście (np. do pliku, do konsoli, do logów) używa się znaku nowej linii \n<br /><br />//wyświetlanie wielu linii<br />echo "Ten zapis obejmuje wiele linii, ale zostaną one wyświetlone w jednej linii, ponieważ sama instrukcja echo nie widzi w tym przypadku znaków nowej linii"; <br /><br />echo "&lt;br&gt;";<br />echo "&lt;br&gt;Ten zapis również obejmuje wiele linii.&lt;br&gt;<br />Będą one wyświetlane, w wielu liniach,&lt;br&gt;<br />przez dodanie znacznika nowego wiersza.";  <br /><br />echo "&lt;br&gt;";<br />//alternatywna metoda wyświetlania. PHP umożliwia tworzenie wielowierszowych ciągów znaków za pomocą operatora &lt;&lt;&lt;, czyli tzw. składni heredoc (here-document) umożliwiającej dosłowne wstawianie bloków tekstowych z zachowaniem miejsc łamania wierszy i innych białych znaków (w tym wcięć).Działa pod warunkiem, iż łańcuch rozpocznie się i zakończy tym samym słowem, w tym wypadku END. <br />Heredoc jest użyteczny, gdy chcesz wstawić większy blok tekstu bez uciekania cudzysłowów.  <br />Uwaga: jeżeli wypisujesz tekst do przeglądarki, sam znak nowej linii w tekście nie zrobi „nowej linii” w HTML — do tego potrzebujesz np. `&lt;br&gt;` albo CSS (`white-space`).<br />echo &lt;&lt;&lt;_END<br />Ten tekst może być wieloliniowy w edytorze.<br />Sprawdź czy zostanie tak wyświetlony w przeglądarce.<br />_END;<br /><br />W PHP 8 masz też <strong>nowdoc </strong>(gdy nie chcesz interpretacji zmiennych):  <br />```php<br />$txt = &lt;&lt;&lt;'END'<br />Tekst z $zmienna – tutaj NIE zostanie podstawiona.<br />END;<br />```<br /><br />echo "&lt;br&gt;";<br /><br />//wyświetlanie znaków specjalnych tj. "" musimy poprzedzić backslash'em<br />echo "Jeżeli chcemy wyświetlić cudzysłów \"Przykład\".";<br />/*<br />W łańcuchach w cudzysłowie `"` musisz uciekać znak `"` oraz możesz w nich używać sekwencji specjalnych (np. `\n`, `\t`).  <br />W apostrofach `'` nie ma interpretacji `\n` (poza `\'` i `\\`) i nie ma podstawiania zmiennych.<br />*/ <br /><br />echo "&lt;br&gt;"; <br /> <br />echo "Znak dolara \$";<br />echo "&lt;br&gt;";<br />echo "\"Tekst ujęty w znaki cudzysłowia\"";<br />echo "&lt;br&gt;";<br /><br />// Wyświetlanie zawartości zmiennych <br />$zmienna1 = "wartość zmiennej 1"; <br />$zmienna2 = "wartość zmiennej 2"; <br />echo "zmienna1 = $zmienna1, a zmienna2 = $zmienna2"; // wyświetli: zmienna1 = wartość zmiennej 1, a zmienna2 = wartość zmiennej 2<br /><br />echo "&lt;br&gt;"; <br /><br />// używając apostrofu wyświetlamy dokładnie to co znajduje się pomiędzy apostrofami (nie pobiera zawartości zmiennej)<br />echo 'wartość zmiennej 1 znajduje się w $zmienna1'; // wyświetli: wartość zmiennej 1 znajduje się w $zmienna1 <br /><br />echo "&lt;br&gt;"; <br /><br />// jeżeli wyświetlamy samą zmienną nie musimy używać cudzysłowów, ani apostrofów <br />echo $zmienna1; // wartość zmiennej 1<br /><br />echo "&lt;br&gt;"; <br /><br />echo "Wartością zmiennej \$zmienna1 jest $zmienna1 &lt;br&gt;"; <br /><br />echo "&lt;br&gt;"; <br />//łączenie wielu elementów do wyświetlenia<br />echo $zmienna1.$zmienna2."&lt;br&gt;"; // za pomocą kropki dołączamy kolejne zmienne <br />echo $zmienna1,$zmienna2,"&lt;br&gt;"; // przecinek działa podobnie, tylko ma inne zachowanie (m.in. nie działa jak konkatenacja i ma inny priorytet) - stosujemy kropkę<br /><br />// łączenie wielu elemetów - tekstu i zmiennych  <br />echo 'Można '.'łączyć '.'wiele '.'elementów '.' oraz dodawać zmienne '.$zmienna1.'&lt;br&gt;';<br /><br />// wyświetlanie tablicowe<br />$tablica = ["indeks" =&gt; "wartość"];<br />echo "wartość dla indeksu = {$tablica['indeks']} !"; <br />// wyświetli: wartość dla indeksu = wartość !<br /><br />echo "&lt;br&gt;";<br /><br />// wyświetlanie z warunkiem jeżeli (warunek) ? 'wartość gdy prawda' : 'wartość gdy fałsz'<br />$wiek = 18;<br />echo ($wiek &gt;= 18) ? 'pełnoletni' : 'niepełnoletni';</pre>



<h2 class="wp-block-heading"><strong>Integracja PHP z HTML</strong></h2>



<p class="wp-block-paragraph">Skrypty PHP możesz umieszczać w dowolnym miejscu kodu HTML, zarówno przed i za znacznikami jak i wewnątrz nich:</p>



<pre class="wp-block-preformatted prettyprint prettyprinted"><span class="dec">&lt;!DOCTYPE html&gt;</span>
<span class="tag">&lt;html&gt;</span>
<span class="tag">   &lt;head&gt;</span>
<span class="tag">   &lt;/head&gt;</span>
<span class="tag">   &lt;body&gt;</span><span class="pln">
      &lt;section id="</span><span class="pun">&lt;?</span><span class="pln">php </span><span class="com">dowolny skrypt </span><span class="pun">?&gt;</span><span class="pln">"&gt;
</span><span class="pln">         &lt;a href="</span><span class="pun">&lt;?</span><span class="pln">php echo </span><span class="str">'https://kamakaczmarek.net'</span><span class="pun">;</span> <span class="pun">?&gt;</span><span class="pln">"&gt;Materiały do nauki</span><span class="tag">&lt;/a&gt;</span>
<span class="tag">      &lt;/section&gt;</span>    
<span class="tag">   &lt;/body&gt;</span>
<span class="tag">&lt;/html&gt;</span></pre>



<p class="wp-block-paragraph">Istnieją 2 szkoły integrowania PHP z HTML:  pierwsza mówi o wyświetlaniu HTML za pomocą instrukcji <strong>echo, </strong>druga o rozdzieleniu HTML i PHP i umieszczaniu w kodzie HTML wielu skryptów objętych znacznikami &lt;?php ?&gt;. Ty decydujesz jakiej użyjesz. Ja jestem zwolenniczką 2 szkoły, ponieważ nie tracimy kolorowania składni HTML, a poza tym w testach jest odrobinę wydajniejsza ;P</p>



<pre class="wp-block-preformatted prettyprint">&lt;?php
   //wyświetlanie HTML w PHP  
   echo "&lt;p&gt;użycie HTML w PHP".$zmienna1."&lt;/p&gt;";  
?&gt;
&lt;p&gt;użycie PHP w HTML &lt;?php echo $zmienna1; ?&gt;&lt;/p&gt;
&lt;p&gt;użycie PHP w HTML w skróconej formie &lt;?=$zmienna1;?&gt;&lt;/p&gt;
</pre>



<p class="wp-block-paragraph">Wszystkie kody zaprezentowane w tej lekcji powinny zostać zapisane w Twoim zeszycie, przetestuj ich działanie i za pomocą CSS &#8222;upiększ&#8221; ich wyświetlanie.</p>



<h2 class="wp-block-heading">Zasady pisania kodu (dobre praktyki)</h2>



<p class="wp-block-paragraph">Dobrze napisany kod to taki, który jest&nbsp;<strong>czytelny</strong>,&nbsp;<strong>spójny</strong>,&nbsp;<strong>łatwy do rozbudowy</strong>&nbsp;i&nbsp;<strong>bezpieczny</strong>. Poniższe zasady warto stosować od pierwszych ćwiczeń.</p>



<h3 class="wp-block-heading">1) Czytelne nazewnictwo (zmienne, funkcje, pliki)</h3>



<ul class="wp-block-list">
<li>Używaj nazw, które mówią&nbsp;<strong>co przechowują / co robią</strong>, np.&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$cenaNetto</code>,&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$liczbaPunktow</code>,&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">obliczSume()</code>.</li>



<li>Unikaj skrótów typu&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$a</code>,&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$x</code>,&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$tmp</code>&nbsp;(chyba że w bardzo krótkim fragmencie i ma to sens).</li>



<li>Stosuj jeden styl zapisu, np.&nbsp;<strong>camelCase</strong>&nbsp;w PHP:
<ul class="wp-block-list">
<li>zmienne i funkcje:&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$nazwaUcznia</code>,&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">policzSrednia()</code></li>



<li>klasy:&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">NazwaKlasy</code></li>
</ul>
</li>



<li>Nazwy nie powinny być za długie, ale muszą być jednoznaczne.</li>
</ul>



<h3 class="wp-block-heading">2) Jeden język w kodzie</h3>



<ul class="wp-block-list">
<li>Trzymaj się konsekwentnie&nbsp;<strong>jednego języka nazw</strong>&nbsp;w projekcie.</li>



<li>Najczęściej spotkasz angielski (np.&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$userName</code>,&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$totalPrice</code>), ale jeśli w klasie/zeszycie ustalacie polski — używaj polskiego wszędzie.</li>



<li>Nie mieszaj: np. nie rób&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$userImie</code>&nbsp;albo&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$cenaTotal</code>.</li>
</ul>



<h3 class="wp-block-heading">3) Wcięcia, spacje i estetyka</h3>



<ul class="wp-block-list">
<li>Stosuj wcięcia (indentację) w blokach&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">{ }</code>&nbsp;— kod ma „wyglądać jak drzewko”.</li>



<li>Daj spacje po przecinkach i wokół operatorów:
<ul class="wp-block-list">
<li>dobrze:&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$a = $b + 2;</code></li>



<li>źle:&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">$a=$b+2;</code></li>
</ul>
</li>



<li>Jedna instrukcja na linię — unikaj „ściany kodu”.</li>



<li>Zostaw puste linie między logicznymi częściami programu (np. deklaracje zmiennych, obliczenia, wyświetlanie wyniku).</li>
</ul>



<h3 class="wp-block-heading">4) Komentarze – po co i jak</h3>



<ul class="wp-block-list">
<li>Komentarze mają tłumaczyć&nbsp;<strong>dlaczego</strong>&nbsp;coś robisz, a nie przepisywać oczywistości.</li>



<li>Dobre komentarze opisują zamiar, np. „Walidacja danych z formularza”, „Zabezpieczenie przed pustym parametrem”.</li>
</ul>



<h3 class="wp-block-heading">5) Unikaj powtórzeń (DRY)</h3>



<ul class="wp-block-list">
<li>Jeśli ten sam fragment kodu powtarza się 3+ razy, to znak, że warto zrobić:
<ul class="wp-block-list">
<li>funkcję, np.&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">formatujDate()</code></li>



<li>lub osobny plik/klasę (w większym projekcie)</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">6) Prosta struktura i podział na elementy</h3>



<ul class="wp-block-list">
<li>Mieszanie wszystkiego w jednym miejscu utrudnia pracę.</li>



<li>Staraj się rozdzielać:
<ul class="wp-block-list">
<li>pobieranie danych (np. z formularza)</li>



<li>przetwarzanie (logika)</li>



<li>wyświetlanie (HTML)</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">7) Przewidywalność i bezpieczeństwo danych</h3>



<ul class="wp-block-list">
<li>Nie ufaj danym z zewnątrz (formularze, URL) — sprawdzaj je (walidacja).</li>



<li>Przy wyświetlaniu tekstu w HTML stosuj escapowanie (ochrona przed XSS), np.&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">htmlspecialchars(...)</code>.</li>



<li>Ustal, co ma się stać w przypadku błędu (np. brak danych, zły format) i obsłuż to w kodzie.</li>
</ul>



<h3 class="wp-block-heading">8) Stała konsekwencja</h3>



<p class="wp-block-paragraph">Najważniejsza zasada:&nbsp;<strong>konsekwencja</strong>. Jeśli w projekcie ustalisz:</p>



<ul class="wp-block-list">
<li>styl nazw,</li>



<li>wcięcia,</li>



<li>sposób formatowania, to trzymaj się tego w całym kodzie. Dzięki temu kod jest czytelny nie tylko dla Ciebie, ale też dla innych.</li>
</ul>



<p>

































</p>



<h1 id="TaskQuest" class="wp-block-heading">TaskQuest — Twój projekt na cały semestr</h1>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong></strong><strong>KARTA PRACY</strong></summary>
<h1 class="wp-block-heading">Karta pracy</h1>



<p class="wp-block-paragraph"><strong>Projekt: TaskQuest</strong> — grywalizowana aplikacja do zarządzania zadaniami. Użytkownik loguje się, dodaje zadania, za ich wykonanie zdobywa punkty XP, awansuje na poziomy, zdobywa odznaki i widzi swoją pozycję w rankingu klasy. Każda lekcja rozbudowuje tę samą aplikację o nową funkcję.</p>



<h2 class="wp-block-heading">PHP — pierwszy skrypt, echo, komentarze</h2>



<h3 class="wp-block-heading">Cel lekcji</h3>



<p class="wp-block-paragraph">Napisać pierwszy działający skrypt PHP — stronę powitalną aplikacji.</p>



<h3 class="wp-block-heading">Co dziś budujesz</h3>



<p class="wp-block-paragraph">Plik index.php — statyczną stronę startową z nazwą aplikacji i krótkim opisem.</p>



<h3 class="wp-block-heading">Kroki do wykonania</h3>



<ol class="wp-block-list">
<li>W folderze taskquest/ utwórz plik index.php.</li>



<li>Dodaj podstawowy szkielet HTML, a w nim (w body) blok PHP .</li>



<li>Za pomocą echo wyświetl nazwę aplikacji „TaskQuest” jako nagłówek pierwszego stopnia.</li>



<li>Za pomocą echo wyświetl jedno-dwuzdaniowy opis aplikacji w akapicie (np. „Zdobywaj punkty za wykonane zadania i awansuj na kolejne poziomy!”).</li>



<li>Dodaj komentarze (// oraz /* */) opisujące, co robi każda sekcja pliku.</li>



<li>Uruchom serwer lokalny w xampp (lub np. wbudowany serwer PHP: php -S localhost:8000) i sprawdź stronę w przeglądarce.</li>
</ol>



<h3 class="wp-block-heading">Podpowiedzi / fragmenty kodu</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php
// Nazwa aplikacji — na razie na sztywno
echo "&lt;h1&gt;TaskQuest&lt;/h1&gt;";
/* Krótki opis aplikacji wyświetlany na stronie głównej */
echo "&lt;p&gt;Zdobywaj punkty za wykonane zadania!&lt;/p&gt;";
?&gt;</code></pre>



<h3 class="wp-block-heading">Do samodzielnego sprawdzenia</h3>



<p class="wp-block-paragraph">☐ Plik php otwiera się w przeglądarce bez błędów.</p>



<p class="wp-block-paragraph">☐ Widzę nazwę aplikacji i opis wygenerowane przez echo.</p>



<p class="wp-block-paragraph">☐ Kod zawiera co najmniej 2 komentarze.</p>



<h3 class="wp-block-heading">Pytania kontrolne</h3>



<ol class="wp-block-list">
<li>Czym różni się komentarz // od /* */?</li>



<li>Co się stanie, jeśli zapomnisz zamknąć znacznik ?&gt; w pliku, w którym dalej jest kod HTML?</li>
</ol>
</details>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">PODSUMOWANIE LEKCJI</h1>



<h1 id="dodatek" class="wp-block-heading">W skrócie</h1>



<ul class="wp-block-list">
<li><strong>PHP wykonuje się na serwerze.</strong> Przeglądarka dostaje tylko wynik (HTML), nigdy kod PHP. Dlatego plik musi mieć rozszerzenie <code class="prettyprint lang-sql" style="font-size: 0.85em;">.php</code>, leżeć w katalogu serwera (<code class="prettyprint lang-sql" style="font-size: 0.85em;">htdocs</code>) i być otwierany przez <code class="prettyprint lang-sql" style="font-size: 0.85em;">http://localhost/...</code> przy uruchomionym Apache – nie dwuklikiem z dysku.</li>



<li><strong>Kod PHP piszemy między <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php</code> a <code class="prettyprint lang-sql" style="font-size: 0.85em;">?&gt;</code>.</strong> Każda instrukcja kończy się średnikiem <code class="prettyprint lang-sql" style="font-size: 0.85em;">;</code>. Zamknięcie <code class="prettyprint lang-sql" style="font-size: 0.85em;">?&gt;</code> można pominąć tylko wtedy, gdy za kodem PHP nie ma już HTML.</li>



<li><strong>Komentarze:</strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">//</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">#</code> – do końca linii, <code class="prettyprint lang-sql" style="font-size: 0.85em;">/* */</code> – blokowy (nie wolno ich zagnieżdżać), <code class="prettyprint lang-sql" style="font-size: 0.85em;">/** */</code> – dokumentacyjny z tagami <code class="prettyprint lang-sql" style="font-size: 0.85em;">@param</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">@return</code>. Dobry komentarz mówi <strong>dlaczego</strong>, a nie powtarza, co widać w kodzie.</li>



<li><strong><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">print</code></strong> wypisują tekst. W praktyce używamy <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code>. <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code> przyjmuje kilka argumentów po przecinku, <code class="prettyprint lang-sql" style="font-size: 0.85em;">print</code> – tylko jeden (i zwraca <code class="prettyprint lang-sql" style="font-size: 0.85em;">1</code>).</li>



<li><strong>Nowa linia:</strong> w przeglądarce działa <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;br&gt;</code> (lub CSS). Znak <code class="prettyprint lang-sql" style="font-size: 0.85em;">\n</code> robi nową linię tylko w źródle strony / w tekście.</li>



<li><strong>Cudzysłów a apostrof:</strong>
<ul class="wp-block-list">
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">"..."</code> – podstawia wartości zmiennych i rozumie sekwencje <code class="prettyprint lang-sql" style="font-size: 0.85em;">\n</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">\t</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">\"</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">\$</code>,</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">'...'</code> – wypisuje tekst dosłownie (wyjątki: <code class="prettyprint lang-sql" style="font-size: 0.85em;">\'</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">\\</code>).</li>
</ul>
</li>



<li><strong>Łączenie (konkatenacja)</strong> tekstów i zmiennych – kropką <code class="prettyprint lang-sql" style="font-size: 0.85em;">.</code>.</li>



<li><strong>Element tablicy wewnątrz <code class="prettyprint lang-sql" style="font-size: 0.85em;">"..."</code></strong> zapisujemy w klamrach: <code class="prettyprint lang-sql" style="font-size: 0.85em;">"{$tablica['indeks']}"</code>.</li>



<li><strong>HTML generowany przez <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code>:</strong> cudzysłowy atrybutów muszą być inne niż te, które otaczają cały tekst, albo poprzedzone <code class="prettyprint lang-sql" style="font-size: 0.85em;">\</code>. To najczęstsze źródło błędów składni.</li>



<li><strong>PHP w HTML:</strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?= $zmienna1 ?&gt;</code> to skrót od <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php echo $zmienna1; ?&gt;</code>.</li>



<li>Kod piszemy w edytorze kodu, nie w Wordzie – „ładne” cudzysłowy <code class="prettyprint lang-sql" style="font-size: 0.85em;">„ ”</code> nie są dla PHP cudzysłowami.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Co trzeba umieć na INF.03?</h2>



<ul class="wp-block-list">
<li>uruchomić Apache w XAMPP, zapisać plik <code class="prettyprint lang-sql" style="font-size: 0.85em;">.php</code> w <code class="prettyprint lang-sql" style="font-size: 0.85em;">htdocs</code> i otworzyć go przez <code class="prettyprint lang-sql" style="font-size: 0.85em;">localhost</code>,</li>



<li>wstawić blok PHP w wybrane miejsce strony HTML (np. do <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;aside&gt;</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;section&gt;</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;footer&gt;</code>),</li>



<li>napisać <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code>, które wygeneruje poprawny znacznik HTML z atrybutem, np. <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;a href="index.php"&gt;...&lt;/a&gt;</code>,</li>



<li>połączyć tekst i zmienną – kropką lub przez podstawienie w <code class="prettyprint lang-sql" style="font-size: 0.85em;">"..."</code>,</li>



<li>rozpoznać i poprawić błąd składni spowodowany cudzysłowami lub brakującym średnikiem,</li>



<li>dodać komentarz jednoliniowy i blokowy,</li>



<li>nadawać zmiennym nazwy mówiące, co przechowują.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Minimum, które powinno wejść w pamięć</h2>



<ol class="wp-block-list">
<li>Plik <code class="prettyprint lang-sql" style="font-size: 0.85em;">.php</code> + katalog <code class="prettyprint lang-sql" style="font-size: 0.85em;">htdocs</code> + uruchomiony Apache + adres <code class="prettyprint lang-sql" style="font-size: 0.85em;">http://localhost/...</code>.</li>



<li>Kod PHP między <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php</code> a <code class="prettyprint lang-sql" style="font-size: 0.85em;">?&gt;</code>, każda instrukcja kończy się <code class="prettyprint lang-sql" style="font-size: 0.85em;">;</code>.</li>



<li>Nowa linia w przeglądarce to <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;br&gt;</code>, nie <code class="prettyprint lang-sql" style="font-size: 0.85em;">\n</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">"..."</code> podstawia zmienne, <code class="prettyprint lang-sql" style="font-size: 0.85em;">'...'</code> wypisuje dosłownie.</li>



<li>Łączymy kropką: <code class="prettyprint lang-sql" style="font-size: 0.85em;">"Witaj " . $imie</code>.</li>



<li>HTML w <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code>: w środku inne cudzysłowy niż na zewnątrz albo <code class="prettyprint lang-sql" style="font-size: 0.85em;">\"</code>.</li>



<li>Komentarze: <code class="prettyprint lang-sql" style="font-size: 0.85em;">//</code> oraz <code class="prettyprint lang-sql" style="font-size: 0.85em;">/* */</code> – bloków nie zagnieżdżamy.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?= $x ?&gt;</code> = <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php echo $x; ?&gt;</code>.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Ściągawka – najważniejsze polecenia i składnia</h2>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php
// komentarz jednoliniowy
# też komentarz jednoliniowy
/* komentarz
   blokowy */

echo "Tekst";                     // wypisanie tekstu
echo "Linia 1&lt;br&gt;Linia 2";        // nowa linia w przeglądarce
echo "Imię: $imie";               // podstawienie zmiennej
echo 'Imię: $imie';               // dosłownie: Imię: $imie
echo "Imię: " . $imie . "&lt;br&gt;";   // konkatenacja kropką
echo "Cudzysłów: \"tekst\"";      // \" – cudzysłów w "..."
echo "Znak dolara: \$";           // \$ – dolar zamiast zmiennej
echo "Wartość: {$tab&#91;'klucz']}";  // element tablicy w "..."
?&gt;</code></pre>



<p class="wp-block-paragraph"><strong>HTML z atrybutem w <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code> – trzy poprawne sposoby:</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo '&lt;a href="index.php"&gt;Start&lt;/a&gt;';
echo "&lt;a href='index.php'&gt;Start&lt;/a&gt;";
echo "&lt;a href=\"index.php\"&gt;Start&lt;/a&gt;";</code></pre>



<p class="wp-block-paragraph"><strong>PHP wewnątrz HTML:</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;p&gt;&lt;?php echo $imie; ?&gt;&lt;/p&gt;
&lt;p&gt;&lt;?= $imie ?&gt;&lt;/p&gt;</code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Zapis</th><th>Zmienne podstawiane?</th><th><code class="prettyprint lang-sql" style="font-size: 0.85em;">\n</code> działa?</th></tr></thead><tbody><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">"..."</code></td><td>tak</td><td>tak</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">'...'</code></td><td>nie</td><td>nie</td></tr><tr><td>heredoc <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;&lt;&lt;END</code></td><td>tak</td><td>tak</td></tr><tr><td>nowdoc <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;&lt;&lt;'END'</code></td><td>nie</td><td>nie</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Quiz – sprawdź się</h2>



<p class="wp-block-paragraph"><strong>1.</strong> Co zostanie wyświetlone w przeglądarce?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$imie = "Ola";
echo "Cześć $imie!&lt;br&gt;";
echo 'Cześć $imie!';</code></pre>



<p class="wp-block-paragraph"><strong>2.</strong> Co zobaczysz w przeglądarce, a co w źródle strony (Ctrl+U)?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "Linia 1\nLinia 2";</code></pre>



<p class="wp-block-paragraph"><strong>3.</strong> Dlaczego ten kod powoduje błąd? Podaj dwie poprawione wersje.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "&lt;a href="index.php"&gt;Start&lt;/a&gt;";</code></pre>



<p class="wp-block-paragraph"><strong>4.</strong> Uczeń skopiował kod z dokumentu tekstowego i dostał błąd. Dlaczego?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo „TaskQuest”;</code></pre>



<p class="wp-block-paragraph"><strong>5.</strong> Co się stanie po uruchomieniu tego pliku?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php
/* Sekcja nagłówka
   /* stary kod */
   echo "&lt;h1&gt;TaskQuest&lt;/h1&gt;";
*/</code></pre>



<p class="wp-block-paragraph"><strong>6.</strong> Uzupełnij jedną instrukcję <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code> w cudzysłowach <code class="prettyprint lang-sql" style="font-size: 0.85em;">"..."</code> tak, aby dla <code class="prettyprint lang-sql" style="font-size: 0.85em;">$imie = "Ola";</code> wyświetliła dokładnie:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">Zmienna $imie ma wartość Ola</code></pre>



<p class="wp-block-paragraph"><strong>7.</strong> Mamy <code class="prettyprint lang-sql" style="font-size: 0.85em;">$uczen = ["imie" =&gt; "Ola"];</code>. Która wersja poprawnie wyświetli <code class="prettyprint lang-sql" style="font-size: 0.85em;">Imię: Ola</code>?</p>



<p class="wp-block-paragraph">a) <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "Imię: $uczen['imie']";</code><br />b) <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "Imię: {$uczen['imie']}";</code><br />c) <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo 'Imię: {$uczen['imie']}';</code></p>



<p class="wp-block-paragraph"><strong>8.</strong> Który zapis zadziała, a który spowoduje błąd? Dlaczego?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "A", "B";
print "A", "B";</code></pre>



<p class="wp-block-paragraph"><strong>9.</strong> Plik zapisano jako <code class="prettyprint lang-sql" style="font-size: 0.85em;">index.html</code> i otwarto przez <code class="prettyprint lang-sql" style="font-size: 0.85em;">localhost</code>. W środku jest <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php echo "TaskQuest"; ?&gt;</code>. Co zobaczysz w przeglądarce i jak to naprawić?</p>



<p class="wp-block-paragraph"><strong>10.</strong> Zapisz krócej, tak aby działało tak samo:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;footer&gt;&lt;?php echo $autor; ?&gt;&lt;/footer&gt;</code></pre>



<p class="wp-block-paragraph"><strong>11.</strong> Który komentarz jest bardziej wartościowy i dlaczego?</p>



<p class="wp-block-paragraph">a) <code class="prettyprint lang-sql" style="font-size: 0.85em;">// wyświetlam h1</code><br />b) <code class="prettyprint lang-sql" style="font-size: 0.85em;">// Nazwa aplikacji na sztywno – w kolejnych lekcjach zastąpimy ją zmienną</code></p>



<p class="wp-block-paragraph"><strong>12.</strong> W jakiej sytuacji <strong>nie możesz</strong> pominąć znacznika <code class="prettyprint lang-sql" style="font-size: 0.85em;">?&gt;</code>?</p>



<p class="wp-block-paragraph"><strong>13.</strong> <em>(zadanie w stylu egzaminacyjnym)</em> Masz zmienne:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$plik = "index.php";
$nazwa = "TaskQuest";</code></pre>



<p class="wp-block-paragraph">Jedną instrukcją <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code> wygeneruj odnośnik: <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;a href="index.php"&gt;TaskQuest&lt;/a&gt;</code>. Wartości weź ze zmiennych, nie wpisuj ich ręcznie.</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>ODPOWIEDZI</strong></summary>
<p><!-- obsidian --></p>
<ol>
<li>W pierwszej linii <code class="prettyprint lang-sql" style="font-size: 0.85em;">Cześć Ola!</code>, w drugiej <code class="prettyprint lang-sql" style="font-size: 0.85em;">Cześć $imie!</code> – apostrofy nie podstawiają zmiennych.</li>
<li>W przeglądarce: <code class="prettyprint lang-sql" style="font-size: 0.85em;">Linia 1 Linia 2</code> (w jednej linii). W źródle strony: dwie osobne linie. <code class="prettyprint lang-sql" style="font-size: 0.85em;">\n</code> nie jest znacznikiem HTML.</li>
<li>Cudzysłów przed <code class="prettyprint lang-sql" style="font-size: 0.85em;">index.php</code> kończy tekst rozpoczęty po <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code>, więc PHP nie rozumie reszty. Poprawnie: <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo '&lt;a href="index.php"&gt;Start&lt;/a&gt;';</code> lub <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "&lt;a href='index.php'&gt;Start&lt;/a&gt;";</code> (albo <code class="prettyprint lang-sql" style="font-size: 0.85em;">\"</code> wokół <code class="prettyprint lang-sql" style="font-size: 0.85em;">index.php</code>).</li>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">„</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">”</code> to cudzysłowy typograficzne, a nie <code class="prettyprint lang-sql" style="font-size: 0.85em;">"</code>. PHP ich nie rozpoznaje – błąd składni. Poprawnie: <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "TaskQuest";</code></li>
<li>Błąd składni i <strong>nic się nie wykona</strong>. Komentarz kończy się na pierwszym <code class="prettyprint lang-sql" style="font-size: 0.85em;">*/</code> (po „stary kod”), więc <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code> nie jest zakomentowane, a ostatnie <code class="prettyprint lang-sql" style="font-size: 0.85em;">*/</code> PHP traktuje jako kod – to błąd. Stąd zasada: nie zagnieżdżamy komentarzy blokowych.</li>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "Zmienna \$imie ma wartość $imie";</code></li>
<li><strong>b</strong>. (a) – błąd składni: element tablicy z kluczem w apostrofach wewnątrz <code class="prettyprint lang-sql" style="font-size: 0.85em;">"..."</code> musi być w klamrach. (c) – błąd składni: apostrof przed <code class="prettyprint lang-sql" style="font-size: 0.85em;">imie</code> kończy tekst. Poprawne jest też: <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "Imię: " . $uczen['imie'];</code></li>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "A", "B";</code> działa (wyświetli <code class="prettyprint lang-sql" style="font-size: 0.85em;">AB</code>). <code class="prettyprint lang-sql" style="font-size: 0.85em;">print "A", "B";</code> – błąd, bo <code class="prettyprint lang-sql" style="font-size: 0.85em;">print</code> przyjmuje tylko jeden argument.</li>
<li>Napis się nie pojawi – serwer nie wykonuje PHP w pliku <code class="prettyprint lang-sql" style="font-size: 0.85em;">.html</code>, więc kod trafia do przeglądarki w surowej postaci (widać go w źródle strony). Trzeba zmienić rozszerzenie na <code class="prettyprint lang-sql" style="font-size: 0.85em;">.php</code>.</li>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;footer&gt;&lt;?= $autor ?&gt;&lt;/footer&gt;</code></li>
<li><strong>b</strong> – wyjaśnia, dlaczego kod tak wygląda i co się zmieni. (a) powtarza to, co widać w kodzie.</li>
<li>Gdy za kodem PHP w tym samym pliku jest jeszcze HTML – bez <code class="prettyprint lang-sql" style="font-size: 0.85em;">?&gt;</code> serwer potraktowałby HTML jako kod PHP.</li>
<li>Przykładowe poprawne rozwiązania:
<ul>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo '&lt;a href="' . $plik . '"&gt;' . $nazwa . '&lt;/a&gt;';</code></li>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "&lt;a href=\"$plik\"&gt;$nazwa&lt;/a&gt;";</code></li>
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">echo "&lt;a href='$plik'&gt;$nazwa&lt;/a&gt;";</code></li>
</ul>
</li>
</ol>
</details>



<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>Artykuł <a href="https://kamakaczmarek.net/php-pierwszy-skrypt-echo-komentarze/">2. PHP &#8211; pierwszy skrypt, echo, komentarze.</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
