Source:
<html>
<head>
<link href="php.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
/*
Maak een pagina met verwijzingen naar favorieten.
*/
function pagina_opmaken()
{
// het bestand met de verwijzingen in een array inlezen
$array_favorieten = file("favo.txt");
// de regelovergangen uit de tabel verwijderen, die worden bij het
//wegschrijven van het bestand opnieuw toegevoegd
for ($i=0; $i<count($array_favorieten); $i++)
{
$array_favorieten[$i] = trim($array_favorieten[$i]);
}
// tellen hoeveel elementen er in de tabel zijn terechtgekomen
$totaal = sizeof($array_favorieten);
// als er geen verwijzingen zijn een melding geven
if ($totaal == 0)
{
echo "<p>Er zijn geen favorieten gevonden.</p>";
}
else
{
// een variabele om te bepalen of de naam van de rubriek getoond moet worden
$rubriek_vorig = "";
// van elk element in de array een verwijzing maken
foreach ($array_favorieten as $regel)
{
// regel opsplitsen in rubriek, linknaam en linkurl
// zoeken naar de haakjes, let daarbij op de beginpositie voor het zoeken
$vanaf1 = strpos($regel, '(', 0) + 1;
$lengte1 = strpos($regel, ')', 0) - $vanaf1;
$rubriek = substr($regel, $vanaf1, $lengte1);
$vanaf2 = strpos($regel, '(', $vanaf1+$lengte1) + 1;
$lengte2 = strpos($regel, ')', $vanaf2) - $vanaf2;
$linknaam = substr($regel, $vanaf2, $lengte2);
$vanaf3 = strpos($regel, '(', $vanaf2+$lengte2) + 1;
$lengte3 = strpos($regel, ')', $vanaf3) - $vanaf3;
$linkurl = substr($regel, $vanaf3, $lengte3);
// rubriek alleen bij verandering tonen
if ($rubriek != $rubriek_vorig)
{
echo '<p><b>' . $rubriek . '</b></p>';
$rubriek_vorig = $rubriek;
}
// de verwijzing zelf, voorzien van de knop Gooi weg
echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<input type="submit" name="welke_actie" value="Gooi weg">
<input type="hidden" name="regel" value="' . $regel . '">
<input type="hidden" name="password" value="' . $_POST['password'] . '">
<a target="_blank" href="' . $linkurl . '">' . $linknaam . '</a></form><br>';
} // einde foreach()
} // einde if ($totaal == 0)
echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<input type="hidden" name="password" value="' . $_POST['password'] . '">
<input type="submit" name="welke_actie" value="Nieuw"></form>';
} //einde pagina_opmaken()
/*
Een verwijzing uit het bestand verwijderen.
*/
function verwijzing_verwijderen($v_regel)
{
// het bestand met de verwijzingen in een array inlezen
$array_favorieten = file("favo.txt");
// de regelovergangen uit de tabel verwijderen, die worden bij
// het wegschrijven van het bestand opnieuw toegevoegd
for ($i=0; $i<count($array_favorieten); $i++)
{
$array_favorieten[$i] = trim($array_favorieten[$i]);
}
// opzoeken welk element het in de tabel is
$array_index = array_search($v_regel, $array_favorieten);
// de verwijzing verwijderen
array_splice($array_favorieten, $array_index, 1);
// de tabel samenvoegen tot een bestand
$favo_bestand = implode("\r\n", $array_favorieten);
// het bestand met favorieten wegschrijven
$fh_favo = fopen("favo.txt", "w");
if ($fh_favo)
{
fwrite($fh_favo, $favo_bestand);
}
fclose($fh_favo);
} // einde verwijzing_verwijderen()
/*
Een nieuwe verwijzing toevoegen.
De terugkeerwaarde van deze functie:
true: de toevoeging is helemaal afgerond, de favorietenpagina kan opnieuw getoond worden
false: de toevoeging is nog onderhanden
*/
function verwijzing_toevoegen()
{
// de drie velden die een nieuwe inhoud zullen krijgen
$t_rubriek = "";
$t_linknaam = "";
$t_linkurl = "";
// controleer of de rubriek ingevuld is
if (IsSet($_POST['rubriek']))
{
$t_rubriek = $_POST['rubriek'];
}
// controleer of de linknaam ingevuld is
if (IsSet($_POST['linknaam']))
{
$t_linknaam = $_POST['linknaam'];
}
// controleer of de linkurl ingevuld is
if (IsSet($_POST['linkurl']))
{
$t_linkurl = $_POST['linkurl'];
}
// als alledrie de velden zijn ingevuld: bestand met favorieten aanpassen
if ($t_rubriek != "" && $t_linknaam != "" && $t_linkurl != "")
{
bestand_aanpassen($t_rubriek, $t_linknaam, $t_linkurl);
return true;
}
// als niet alledrie de velden ingevuld zijn: een melding en het formulier opnieuw tonen
echo 'Alle velden moeten verplicht ingevuld worden!';
invoerformulier($t_rubriek, $t_linknaam, $t_linkurl);
return false;
} // einde verwijzing_toevoegen()
/*
Het bestand met favorieten daadwerkelijk aanpassen.
In de andere drie variabelen staan eventueel aangepaste gegevens.
*/
function bestand_aanpassen ($b_rubriek, $b_linknaam, $b_linkurl)
{
// inhoud van de nieuwe verwijzing samenstellen
$b_nieuwe_regel = '(' . $b_rubriek . ')(' . $b_linknaam . ')(' . $b_linkurl . ')';
// het bestand met de verwijzingen in een array inlezen
$array_favorieten = file("favo.txt");
// de regelovergangen uit de tabel verwijderen, die worden bij het
//wegschrijven van het bestand opnieuw toegevoegd
for ($i=0; $i<count($array_favorieten); $i++)
{
$array_favorieten[$i] = trim($array_favorieten[$i]);
}
// de nieuwe verwijzing toevoegen
array_push($array_favorieten, $b_nieuwe_regel);
// de array sorteren zodat de favorieten in de goede volgorde getoond worden
sort ($array_favorieten);
// de array samenvoegen tot een bestand
$favo_bestand = implode("\r\n", $array_favorieten);
// het bestand met favorieten wegschrijven
$fh_favo = fopen("favo.txt", "w");
if ($fh_favo)
{
fwrite($fh_favo, $favo_bestand);
}
fclose($fh_favo);
} // einde bestand_aanpassen ()
/*
Toon een formulier waarmee een verwijzing aangepast kan worden.
In de andere drie velden staan eventueel aangepaste gegevens.
*/
function invoerformulier ($f_regel, $f_rubriek, $f_linknaam, $f_linkurl)
{
// het formulier voor een nieuwe verwijzing naar het scherm schrijven
echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<input type ="hidden" name="regel" value="' . $f_regel . '">
<input type="hidden" name="password" value="' . $_POST['password'] . '">
<p>
Rubriek:<br>
<input type="text" name="rubriek" size="50" maxlength="100" value="'.$f_rubriek.'"><br>
Linknaam:<br>
<input type="text" name="linknaam" size="50" maxlength="100" value="'.$f_linknaam.'"><br>
Link URL:<br>
<input type="text" name="linkurl" size="50" maxlength="255" value="'.$f_linkurl.'">
</p>
<p>Vul de inhoud van de rubriek en klik op Toevoegen! Alle velden zijn verplicht.</p>
<p><input type="submit" name="welke_actie" value="Toevoegen"></p>
</form>
';
} // einde invoerformulier()
?>
</body>
</html>
1