Solution: Showing "Congratulations!"
Let's solve the challenge given in the previous lesson.
We'll cover the following...
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.