Podstawy PHP

Podstawy PHP

Plan laboratorium

W ramach laboratorium należy wykonywać ćwiczenia, posługując się podanymi wskazówkami i przykładami. W większości etapów jest udostępniony przykład, który może służyć za szablon. Proszę również obejrzeć udostępnione wraz ze slajdami z wykładu przykłady.

Środowisko pracy

Katalogi

  • W katalogu domowym powinien być wcześniej założony katalog public_html.
  • Proszę założyć w nim katalog php.
  • W tym katalogu należy przechowywać wszystkie pliki z laboratorium.
  • Proszę przejść do tego katalogu.

Edycja

Proszę otworzyć wybrany edytor, w którym będziecie Państwo edytować pliki. Polecanym edytorem jest gedit lub BlueFish (w razie problemów z kodowaniem znaków: Edycja/Ustawienia/Pliki, Dokument/Kodowanie_Znaków)

Poza edytorem należy otworzyć przynajmniej jedno dodatkowe okno terminala, z katalogiem bieżącym ustawionym na ~/public_html/php. Będzie ono pomocne przy zmianie praw dostępu, itp.

Przeglądarka

O ile nie podano inaczej wszystkie pliki należy przeglądać przy pomocy domyślnej przeglądarki internetowej (np. Mozilla Firefox).

Wprowadzenie do języka PHP

  1. Proszę otworzyć główną stronę PHP http://www.php.net i odnaleźć na niej podręcznik do PHP w języku angielskim i polskim.
  2. Jak z głównej strony PHP odnaleźć dokumentację do konkretnej funkcji np. echo() lub instrukcji foreach. Można także znaleźć w podręczniku rozdziały dotyczące PostgreSQL (wpisz w wyszukiwarce na stronie php: pgsql).

Pierwsza strona

  1. W pliku public_html/index.html proszę umieścić jakiś tekst, a następnie zobaczyć go w przeglądarce pod adresem localhost/~konto/. Proszę także spróbować zamiast localhost podać adres IP.
  2. Następnie proszę dołączyć wywołanie dowolnej funkcji PHP, np. echo z jakimś komunikatem powitalnym.
  3. Sprawdzić działanie w przeglądarce, podając adres: borg.kis.agh.edu.pl/~konto/.
  4. W podkatalogu public_html/php proszę umieścić poniższy plik:
info.php
<?php
phpinfo();
?>

Proszę obejrzeć kod żródłowy w przeglądarce (show source) i porównać go z kodem w edytorze pliku.

Prosty formularz

Proszę ściągnąć poniższy prosty formularz w HTMLu do katalogu public_html/php, a następnie obejrzeć rezultat w przeglądarce:

form-1.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-2">
<title>To jest nasz 1. formularz
</title>
</head><body>
 
<h1>Taki prosty formularz do danych osobowych</h1>
 
<p><center>
<form method="post" action="intro.php">
<br>Proszę podać imię:
<br><input type="text" name="fname">
<br>nazwisko:
<br><input type="text" name="lname">
<br>i swoje uwagi:
<br><textarea name="memo" rows="4" cols="20" wrap="physical">
NIC!</textarea>
<br>
<br><input type="submit" value="WPROWADZ">
</center></p>
 
</body></html>

Zwróć uwagę:

  • jakim tagiem tworzony jest formularz,
  • w jaki sposób podawana jest metoda przekazywania danych.

Włączanie PHP

Proszę zapisać poniższą stronę intro.php i dopisać do niej fragmentu kodu w PHP, wyświetlającego przy pomocy echo lub print dodatkowe napisy.

intro.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<title>To jest strona o PHP5</title>
</head><body>
 
<?php
 
if ( $_POST["fname"] OR $_POST["lname"] ) {    
  $fname = $_POST["fname"];
  $lname = $_POST["lname"];
  $memo = $_POST["memo"];
 
  echo " <h1> Ajajaj! Ktoś nas wywołał z formularza!</h1>
<p>Napisał, że nazywa się: $fname $lname i chce nam powiedzieć: \"$memo\"";
    if ($memo == "NIC!")
        echo " (ale on jest leniwy!)";
}
 
?>
 
<p>Kilka dodatkowych plików:
<ul>
<li><a href="info.php">informacje z <i>phpinfo()</i></a>
<li><a href="form-1.php">prosty formularz</a>
<li><a href="form-2.php">nieco inny formularz</a>
</ul>
 
</body></html>

Zadania:

  1. Do pliku intro.php proszę samodzielnie dodać fragment wyświetlający całą tablicę $_GET i $_POST na różne sposoby. Sprawdź, które z metod umożliwiają wyświetlenie zawartości całej tablicy:
    • print_r,
    • print,
    • var_dump,
    • echo.
  2. Zmień formularz i stronę docelową w taki sposób, by korzystały z metody GET.

Zaobserwuj:

  • w jaki sposób odnieść się do poszczególnych elementów tablicy,
  • jak przekazywane są dane metodami GET i POST.

Ćwiczenia: Zmienne i typy danych

  1. Przećwicz definiowanie zmiennych w dokumencie w PHP. Zdefiniuj zmienną napisową zawierającą ciąg znaków, całkowitoliczbową oraz zmiennoprzecinkową, a następnie wyświetl ich wartości w jednej linii:
    $imie = "Krzys";
    echo"<h1>Oto $imie uczy się PHP</h1>";
  2. Stwórz dynamicznie w PHP listę numerowaną HTML przy pomocy pętli ''for'' (na bazie kodu poniżej):
    for ($i=1; $i<=$n; $i++) {
      echo "element numer $i";
    }
  3. Stwórz i przetestuj zmienne typu tablicowego – stwórz tablicę zawierającą spis nazw przedmiotów. Wyświetl w pętli foreach przedmioty z tej tablicy.
  4. Stwórz tablicę zawierającą spis imion i nazwisk prowadzących zajęcia na, indeksowaną (z kluczami) skrótowymi nazwami przedmiotów, np. „ztb” ⇒ „Krzysztof Kluza”. Wyświetl w pętli foreach elementy z tej tablicy.
  5. Napisz pętle while i foreach wyświetlające kolejne elementy w.w. tablic. Przetestuj także działanie instrukcji if i switch.

Przekazywanie parametrów

Poniższy przykład tworzy formularz z polami do zaznaczania (checkbox), którego wynik będzie analizowany przez skrypt PHP.

form-2.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-2">
<title>To jest mały test...</title>
</head><body>
<?php
if (!isset($_POST["submit"]))
{
    ?>
    <h1>Czyje zajęcia lubisz najbardziej</h1>
 
    <p>Na studiach podyplomowych?
    <form action="form-2.php" method="POST">
    <input type="checkbox" name="person[]" value="prof. Tomasz Szmuc">prof. Tomasz Szmuc<br>
    <input type="checkbox" name="person[]" value="dr Radosław Klimek">dr Radosław Klimek<br>
    <input type="checkbox" name="person[]" value="dr Grzegorz Rogus">dr Grzegorz Rogus<br>
    <input type="checkbox" name="person[]" value="dr Krzysztof Kluza">dr Krzysztof Kluza<br>
    <br>
    <input type="submit" name="submit" value="Wybierz">
    </form>
    <p>
    <?php
    }
else
{
    ?>
    <h1>Wybrałeś:</h1>
    <br>
    <?php
     if(!empty($_POST['person'])) {
         foreach($_POST['person'] as $person)
         {
           echo "<i>$person</i><br>";
           switch ( $person ) {
           case "prof. Tomasz Szmuc":
             $TSZ=true;
             break;
           case "dr Krzysztof Kluza":
             $KKL=true;
             break;
           } 
         }
         if ( $KKL==true )
            echo ("<br><b>BRAWO!</b>");
      }
      else
        echo "Nie wybrales nikogo...";
}
?>
<p><hr><br>
<a href="intro.php">Powrót do głównego dokumentu</a>
</body>
</html>

Dla chętnych: Odczyt i zapis do pliku

Poniższy program tworzy słownik polsko-angielski w pliku słownik.txt (na podstawie danych z formularza zapisuje do pliku w kolejnych liniach słowa w postaci: slowo_en:slowo_pl, np. cat:kot).

slownik.php
<?php
if(empty($_GET)) {
?>
 
<form action="slownik.php" method="GET">
  Polskie:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input type="text" name="pl" value=""><br>
  Angielskie:&nbsp;
  <input type="text" name="en" value=""><br><br>
  <input type="submit" value="Zapisz">
</form> 
 
<?php
} else {
	$txt = "";
	$pl = $_GET['pl'];
	$en = $_GET['en'];
	$txt = $en.":".$pl."\n";	
	echo "<br>Dane z formularza $txt<br>";
	echo '<a href="slownik.php">Dodaj nowe słowo</a>';
 
	$fp = fopen("slownik.txt", "a");
	fputs($fp, $txt);
	fclose($fp);
}
?>

Proszę napisać program, który wyświetli formularz do wyszukiwania słów, tak by po wpisaniu słowa po angielsku, słownik wyświetlił odpowiednie słowo po polsku.

Sprawdź, jak można wykorzystać następujące funkcje:

  • file do wczytania pliku do tablicy
  • split do podziału ciągu znaków

Proszę zdekomponować dotychczasowy kod na pliki, np. w jednym pliku mogą się znajdować funkcje budujące ogólną strukturę strony (nagłówek, stopka), w innym funkcje generujące elementy nawigacyjne; pliki te powinny być włączane do „głównych” które mają być dostępne bezpośrednio przez HTTP.

Przykłady

Przykłady z tego lab można pobrać: przyklady-php.tar.gz.
Aby rozpakować: tar -zxvf przyklady-php.tar.gz

Dalsza część laboratorium: PHP i połączenie z bazą danych

podstawy_php_2018.txt · ostatnio zmienione: 2019/05/18 09:44 przez krzysiek