| A. | Praktiska exempel |
| A.1 | Flersideslayout |
| A.2 | Gästbok |
| __________________________ | |
Det som alltför många (enligt mig) guider saknar är en hjälp på traven till script som faktiskt kan vara användbara. Scripten som jag visar upp här får ni använda precis som ni vill. Anledningen till det är att scripten är så simpla så att ni själva kommer kunna skriva likadana inom ingen tid alls.
Först ut bland exemplena är hur man kommer bort från ramar (frames) som många använder för att slippa ändra på t ex menyn för varje sida om de vill lägga till ett altenativ. Lösningen till det är att kolla i adressfältet ($_GET) efter en variabel som säger vilken sida man befinner sig på och sen stoppa in den med include(). Jag brukar använda mig av select-case när jag gör sidor med flera altenativ och if-else när det är lite färre men det är skitsamma egentligen.
<html>
<head>
<title>En sida</title>
</head>
<body>
Meny: <a href="index.php">Hem</a>,
<a href="index.php?sida=filer">Filer</a>,
<a href="index.php?sida=ovrigt">Övrigt</a><br>
<br>
<?php
if ($_GET["sida"] == "filer")
{
include("filer.php");
}
elseif ($_GET["sida"] == "ovrigt")
{
include("ovrigt.php");
}
else
{
include("hem.php");
}
?>
</body>
</html>
Med en sådan kod så räcker det med att skriva layouten, och även menyn, på ett ställe eftersom det bara är en sida som laddas, dock visar php-koden olika innehåll beroende på vad som står i adressfältet. Självklart så går det att skriva in .html-filer istället för .php-filer i include(), det spelar ingen som helst roll.
Gästböcker är simpla att skriva, men använder ganska många funktioner och är ett bra sätt att öva upp sin skicklighet inom kodning eftersom man nästan kan skriva hur avancerade gästböcker som helst.
Den gästboken som jag kommer ta upp här till att börja med är simplast möjliga och den kommer använda sig av följande funktioner:
Den kommer fungera så att den sparar alla inlägg i en fil, varannan rad med ett namn (den som postade), och varannan rad med själva inlägget. Sen kommer den visa alla inlägg i omvänd ordning (längst ner visas först).
<html>
<head>
<title>En sida</title>
</head>
<body>
<?php
if ($_POST["postat"])
{
$fil = fopen("gastbok.txt", "a");
fwrite($fil, htmlspecialchars($_POST["namn"])."\r\n");
fwrite($fil, htmlspecialchars($_POST["text"])."\r\n");
fclose($fil);
}
$rader = file("gastbok.txt");
for ($i = count($rader); $i > 0; $i -= 2)
{
$text = $rader[$i-1];
$namn = $rader[$i-2];
echo "<i>" . $namn . "</i> skrev: <b>" . $text . "</b><br>\n";
}
?>
<form method="post">
Namn: <input name="namn"><br>
Text: <input name="text"><br>
<input type="submit" name="postat" value="Posta">
</form>
</body>
</html>
If-satsen kollar om formuläret har blivit använt. Det genom att kolla om $_POST["postat"] innehåller något, har man använt formuläret (som har en knapp med namnet "postat" och ett värde) så kommer $_POST["postat"] att innehålla det värdet. Det som händer i if-satsen är att den först öppnar filen för att skriva i slutet på den (a) och sen skriver jag ut namnet och texten, båda med htmlspecialchars() så folk inte förstör genom att skriva in sina egna taggar (kolla 3.5 Praktiska funktioner).
Nästa steg är att läsa in och visa alla inlägg. Det kan göras genom att först läsa in hela filen i en lista, ett värde för varje rad (file()) och sedan loopa igenom alla rader. Eftersom raderna hör ihop två och två så räknar loopen bara varannat värde.