PHP/Studium przypadku - Księga gości: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Zyx (dyskusja | edycje)
napisana pierwsza część
Zyx (dyskusja | edycje)
→‎ksiega.php: utworzenie
Linia 128:
 
=== ksiega.php ===
W pliku tym znajdzie się główna część funkcjonalna księgi. To jego powinniśmy uruchamiać z poziomu przeglądarki. Zaczynamy jego pisanie od nagłówka HTML oraz dołączenia uprzednio napisanego pliku:
 
<nowiki><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
{{TODO|Napiszę w weekend}}
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<title>Księga gości Wikibooks</title>
</head>
<body>
<h1>Księga gości Wikibooks</h1>
<?php
require('.dane.php');</nowiki>
 
Właściwy kod rozpocznie się instrukcją warunkową, która zadecyduje, czy wysłany został formularz dodawania, czy też wystarczy wyświetlić aktualną zawartość księgi. PHP zapisuje informację o użytej metodzie wysyłania żądania w specjalnej zmiennej ''$_SERVER['REQUEST_METHOD']'', która może przyjąć wartości '''POST''' (formularz) albo '''GET''' (zwyczajne żądanie). Z niej właśnie skorzystamy:
 
<nowiki> if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Dodawanie wpisu
if(dodajWpis($_POST['tytul'], $_POST['autor'], $_POST['www'], $_POST['tresc']))
{
echo '<p>Dziękujemy, wpis został dodany prawidłowo.</p>';
}
else
{
echo '<p>Proszę wypełnić prawidłowo formularz.</p>';
}
echo '<p><a href="ksiega.php">Powrót</a></p>';
}</nowiki>
 
Kontrola danych jest realizowana w pliku ''dane.php'' i nie ma potrzeby jej tu powtarzać. Wprowadzamy do funkcji ''dodajDane()'' poszczególne pola formularza i ifem sprawdzamy, jaki jest rezultat, aby móc wygenerować stosowny komunikat.
 
Jeżeli nie dodajemy aktualnie żadnego nowego wpisu, wyświetlamy te, które już mamy:
 
<nowiki> else
{
// Wyswietlanie wpisow
$wpisy = pobierzWpisy();
foreach($wpisy as $wpis)
{
echo '<hr /><p><b>Tytuł: <i>'.$wpis['tytul'].'</i>;
Autor: '.$wpis['autor'].'; Data: '.$wpis['data'];
if(strlen($wpis['www']) > 0)
{
echo '; <a href="'.$wpis['www'].'" target="_blank">Strona WWW</a>';
}
echo '</b></p>';
echo '<p>'.$wpis['tresc'].'</p>';
}
?><hr /></nowiki>
 
Tablicę z wpisami dostajemy z funkcji ''pobierzWpisy()''. Skanujemy ją pętlą foreach i wyświetlamy każdy z elementów. Zauważ, że skrypt potrafi ominąć pole z adresem WWW, jeśli ten nie został podany. Po prostu funkcją ''strlen()'' sprawdzamy, czy jego długość jest większa od zera.
 
Ostatnim akordem będzie dodanie formularza HTML:
 
<nowiki><form method="post" action="ksiega.php">
<table border="0" width="50%">
<tr>
<td>Tytuł</td>
<td><input type="text" name="tytul"/></td>
</tr>
<tr>
<td>Autor</td>
<td><input type="text" name="autor"/></td>
</tr>
<tr>
<td>WWW</td>
<td><input type="text" name="www"/></td>
</tr>
<tr>
<td>Treść</td>
<td><textarea name="tresc" rows="4" cols="50"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Dodaj"/></td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html></nowiki>
 
Formularz wysyłamy metodą '''POST''' do pliku ''ksiega.php''. Jego wysłanie spowoduje uaktywnienie się dodawania wpisów. Przed wysłaniem ostatnich znaczników musimy dodać jeszcze klamrę kończącą instrukcję warunkową, która decyduje, co należy wykonać. Umieszczenie jej w tym miejscu gwarantuje, że formularz pokaże się tylko podczas wyświetlania wpisów. Jeśli skrypt będzie wysyłać komunikat o dodaniu wpisu, nie zostanie on już dołączony.
 
To już koniec naszej księgi gości. Utwórz teraz pusty plik ''wpisy.txt'' i zacznij korzystanie.
 
=== Co dalej? ===