Show sourcecode
The following files exists in this folder. Click to view.
Webbsrvprg/exercises/php_formulär/
php_formulär_1.php
php_formulär_2.php
php_formulär_3.php
php_formulär_4.php
php_formulär_5.php
php_formulär_6.php
php_formulär_6.php
89 lines UTF-8 Windows (CRLF)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
<?php
// GitHub Copilot
declare(strict_types=1);
function sanitizeArray(array $values): array {
return array_values(array_filter(array_map(function($v) {
$v = trim((string)$v);
return $v === '' ? null : htmlspecialchars($v, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}, $values)));
}
function formatFavorites(array $favorites): string {
$count = count($favorites);
if ($count === 0) {
return 'Du har inte valt någon maträtt.';
}
if ($count === 1) {
return 'Din favoritmaträtt är ' . $favorites[0] . '.';
}
// Join with commas and "och" before last item
if ($count === 2) {
$text = $favorites[0] . ' och ' . $favorites[1];
} else {
$last = array_pop($favorites);
$text = implode(', ', $favorites) . ' och ' . $last;
}
return 'Dina favoritmaträtter är ' . $text . '.';
}
function renderForm(array $selected = []): void {
$options = ['Pizza', 'Sushi', 'Tacos', 'Pasta', 'Sallad', 'Kebab', 'Biff'];
// Ensure values are safe for attributes
$sel = array_map('htmlspecialchars', $selected, array_fill(0, count($selected), ENT_QUOTES));
?>
<!doctype html>
<html lang="sv">
<head>
<meta charset="utf-8">
<title>Välj maträtter</title>
</head>
<body>
<h1>Välj dina favoritmaträtter</h1>
<form method="post">
<label for="matratter">Maträtter (välj en eller flera):</label><br>
<select name="matratter[]" id="matratter" multiple size="6">
<?php foreach ($options as $opt):
$escaped = htmlspecialchars($opt, ENT_QUOTES, 'UTF-8');
$isSelected = in_array($opt, $selected, true) ? ' selected' : '';
?>
<option value="<?php echo $escaped; ?>"<?php echo $isSelected; ?>><?php echo $escaped; ?></option>
<?php endforeach; ?>
</select>
<br><br>
<button type="submit">Skicka</button>
</form>
</body>
</html>
<?php
}
// Main
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$raw = $_POST['matratter'] ?? [];
if (!is_array($raw)) {
$raw = [$raw];
}
$favorites = sanitizeArray($raw);
// Output result page
?>
<!doctype html>
<html lang="sv">
<head>
<meta charset="utf-8">
<title>Resultat</title>
</head>
<body>
<h1>Resultat</h1>
<p><?php echo formatFavorites($favorites); ?></p>
<p><a href="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>">Gör ett nytt val</a></p>
</body>
</html>
<?php
exit;
}
// Show form initially
renderForm([]);