Упражнения с функцией PHP: вывести метеоусловия введенные пользователем в текстовое поле
Вывести метеоусловия введенные пользователем в текстовое поле
За основу возьмите сценарий из предыдущего упражнения. Перепишите исходную форму, представленную пользователю, с помощью функции создания флажков. В этом упражнения добавьте «туман, влажность» к аргументам погоды для вашей объектной функции. Вы увидите, что функция будет работать как раньше, даже с другим количеством аргументов.
Добавьте в форму запрос: «Что-нибудь еще? Перечислите дополнительные погодные условия в поле ниже, разделив их запятыми». Ниже поставьте текстовое поле размером 60. (Дайте пользователю достаточно места).
Теперь напишите функцию под названием «listIt» для создания элементов для неупорядоченного списка. Ваша функция должна принимать в качестве аргумента строку с разделителями-запятыми или массив строк. В ответе пользователю используйте функцию listIt для ответа пользователя из флажков и из текстового поля.
В результате вы должны получить такую форму:
Пример
Попробуй сам »<?php
//Определить функцию чекбоксов
function ckBox(){
$args=func_get_args();
foreach ($args as $a){
echo "<input type=\"checkbox\" name=\"weather[]\" value=\"$a\" />".ucwords($a)."<br>\n";
}
}
//Определение функции элемента списка
function listIt($args){
//Условный оператор для определения, является ли аргумент массивом. Если нет, сделайте это
if (!is_array($args)){
$args = explode(',', $args);
}
//Цикл по массиву. Обязательно включите переводы строк
foreach ($args as $a){
echo "<li>" . ucwords($a). "</li>\n";
}
}
//Если форма не отправлена, отобразить форму
if (!isset($_POST['submit'])){
?>
<form method="post" action="yourfile.php">
<p>Пожалуйста, введите вашу информацию:</p>
Город: <input type = "text" name = "city" />
Месяц: <input type = "text" name = "month" />
Год: <input type = "text" name = "year" />
<p> Выберите тип погоды из списка ниже</p>
<!-- Используйте здесь свой флажок -->
<?php
ckBox('солнце', 'облака', 'дождь', 'град', 'мокрый снег', 'снег', 'ветер', 'холод', 'тепло', 'туман', 'влажность'); // Сюда добавлен туман, влажность.
?>
<p/>
<!-- Новый запрос данных от пользователя.-->
<p> Что-нибудь еще? Пожалуйста, укажите дополнительные погодные условия в поле ниже,
через запятую. </p>
<input type="text" name="more" size="60" /><p/>
<input type="submit" name="submit" value="Выполнить" />
</form>
<?php
// Если форма отправлена, обрабатываем ввод
}else{
//Получение информации о дате и местоположении
$inputLocal = array(
$_POST['city'],
$_POST['month'],
$_POST['year']
);
echo "В городе $inputLocal[0] в месяце $inputLocal[1] $inputLocal[2] года,
вы наблюдали следующую погоду:<br/> <ul>";
/*Получить ответ пользователя. Создавать эти переменные не обязательно.
Вы можете просто использовать переменную $ _POST в функции, но создавая отдельные
переменные упрощают чтение кода */
$weather = $_POST['weather'];
$more = $_POST['more'];
//Вызов функции для каждого ответа
listIt($weather);
listIt($more);
echo "</ul>";
}
?>
explode — Разбивает строку с помощью разделителя
Синтаксис
explode ( string $separator , string $string , int $limit = PHP_INT_MAX ) : array
Возвращает массив строк, полученных разбиением строки string с использованием separator в качестве разделителя.
Список параметров
-
separator
-
Разделитель.
-
string
-
Входная строка.
-
limit
-
Если аргумент
limit
является положительным, возвращаемый массив будет содержать максимумlimit
элементов, при этом последний элемент будет содержать остаток строкиstring
.Если параметр
limit
отрицателен, то будут возвращены все компоненты, кроме последних -limit
.Если
limit
равен нулю, то он расценивается как 1.
Комментарии
<code>
, несколько строчек кода — в теги<pre><code>
...ваш код...</code></pre>
.