...

/

Solution: Showing "Congratulations!"

Solution: Showing "Congratulations!"

Let's solve the challenge given in the previous lesson.

Solution

Have a look at the complete implementation of the challenge below.

<?php

$availableLanguages = [
    'en' => 'English',
    'ger' => 'German',
    'de' => 'Deutsch'
];

// Default language: en
$defaultLanguage = 'en';

$selectedLanguage = $defaultLanguage;

if (isset($_GET['language'])) {
    // If the user selected a language, use it
    $selectedLanguage = $_GET['language'];
} elseif (isset($_COOKIE['language'])) {
    // If the language is stored as a cookie, use it
    $selectedLanguage = $_COOKIE['language'];
}

// If the language doesn't actually exist, use the default language
if (!isset($availableLanguages[$selectedLanguage])) {
    $selectedLanguage = $defaultLanguage;
}

setcookie('language', $selectedLanguage);

$messages = [
    'en' => 'Congratulations!',
    'ger' => 'Gratuliere!',
    'de' => 'Gefeliciteerd!'
]
?>
<!DOCTYPE html>
<html>
<head>
    <title>Congratulations</title>
</head>
<body>
<form method="get">
    <p>
        <label for="language">Language:</label>
        <select id="language" name="language">
            <?php
            foreach ($availableLanguages as $key => $value) {
                ?>
                <option value="<?php echo htmlspecialchars($key, ENT_QUOTES); ?>"
                    <?php if ($selectedLanguage === $key) { ?> selected<?php } ?>>
                    <?php echo htmlspecialchars($value, ENT_QUOTES); ?>
                </option>
                <?php
            }
            ?>
        </select>
    </p>
    <p>
        <button type="submit">Submit</button>
    </p>
</form>
<p class="message">
    <?php echo $messages[$selectedLanguage]; ?>
</p>
</body>
</html>

Explanation

Let’s break down the solution and analyze it.

public/congratulations.php file

We followed these steps to solve the challenge:

  • At line 3, we created an array of available languages.
...