我有一个正在处理的表单,用户输入的数据显示在页面上。还有一个检查,如果该字段为空,则不显示,但由于某种原因,如果某些字段(不是全部)为空,则会报错:Notice: Undefined index: hobbies in C:\ xampp\htdocs\index.php 第 25 行。并且并非在所有空字段中都给出此错误。
表格代码:
<body>
<div class="wrapper">
<h1>Урок "Формы": теги и их атрибуты.</h1>
<h2>Расскажите немного о себе...</h2>
<p id="instruction">Попробуйте создать аналогичную форму. Для целей демонстрации вполне подойдут и вымышленные</p>
<form action="index.php" method="GET">
<ul class="fieldsets">
<li>
<fieldset>
<legend>Коротко о себе</legend>
<ul class="info">
<li class="short-info-element">
<label for="name">Имя:</label>
<input type="text" id="name" name="first-name"/>
</li>
<li class="short-info-element">
<label for="second-name">Фамилия:</label>
<input type="text" id="second-name" name="last-name"/>
</li>
<li class="short-info-element">
<span>Пол:</span>
<input type="radio" id="male" name="sex" value="male">
<label for="male">Мужской</label>
<input type="radio" id="female" name="sex" value="female">
<label for="female">Женский</label>
</li>
<li class="short-info-element">
<label for="age">Возраст:</label>
<input type="text" id="age" name="age">лет
</li>
</ul>
</fieldset>
</li>
<li>
<fieldset>
<legend>Подробнее о себе</legend>
<p>
<input type="radio" id="sex-male" name="sex-detailed" value="male">
<label for="sex-male">Молодой человек</label>
</p>
<p>
<input type="radio" id="sex-female" name="sex-detailed" value="female">
<label for="sex-female">Девушка</label>
</p>
<ul class="info">
<li>
<input type="date" id="birth" class="personal-info" name="birthday"/>
<label for="birth">Дата рождения</label>
</li>
<li>
<input type="text" id="family-status" class="personal-info" name="martial-status"/>
<label for="family-status">Семейное положение</label>
</li>
<li>
<input type="text" id="social-status" class="personal-info" name="social-status"/>
<label for="social-status">Социальный статус</label>
</li>
<li>
<input type="text" id="place-of-living" class="personal-info" name="live-place"/>
<label for="place-of-living">Местожительства</label>
</li>
</ul>
<p class="bold-text">Что вы обычно делаете на выходных:</p>
<ul class="info">
<li>
<input type="checkbox" id="sleep" name="hobbies[]" value="Sleep"/>
<label for="sleep">Сплю</label>
</li>
<li>
<input type="checkbox" id="friends" name="hobbies[]" value="Friends"/>
<label for="friends">Гуляю с друзьями</label>
</li>
<li>
<input type="checkbox" id="fishing" name="hobbies[]" value="Fishing"/>
<label for="fishing">Хожу на рыбалку</label>
</li>
<li>
<input type="checkbox" id="games" name="hobbies[]" value="Games"/>
<label for="games">Играю в игры</label>
</li>
</ul>
<p class="bold-text">Рассказать о формах в книге, посвященной HTML:</p>
<p>
<select id="books" name="books">
<option value="Book 1">Book 1</option>
<option value="Book 2">Book 2</option>
<option value="Book 3">Book 3</option>
<option value="Book 4">Book 4</option>
<option value="Book 5">Book 5</option>
</select>
</p>
<p class="bold-text">Сколько книг вы прочитали за свою жизнь:</p>
<ul class="info">
<li>
<input type="radio" id="first-option" name="quantity-of-books" value="0-10"/>
<label for="first-option">0-10</label>
</li>
<li>
<input type="radio" id="second-option" name="quantity-of-books" value="11-20"/>
<label for="second-option">11-20</label>
</li>
<li>
<input type="radio" id="third-option" name="quantity-of-books" value="21-50"/>
<label for="third-option">21-50</label>
</li>
<li>
<input type="radio" id="fourth-option" name="quantity-of-books" value="50+"/>
<label for="fourth-option">50+</label>
</li>
</ul>
<span class="no-bottom-padding">Ваши комментарии:</span>
<p>
<textarea id="comments" name="comments" rows="10" cols="50"></textarea>
</p>
<p>
<select id="positions" name="positions[]" multiple>
<option value="First Position">Первая позиция</option>
<option value="Second Position">Вторая позиция</option>
<option value="Third Position">Третья позиция</option>
<option value="Fourth Position">Четвёртая позиция</option>
</select>
</p>
</fieldset>
</li>
<li>
<fieldset>
<legend>И в заключении</legend>
<p>
<input type="text" id="placeholder-example" placeholder="Это поле было введено до вас"
disabled>
</p>
<span class="no-bottom-padding">Email:</span>
<p>
<input type="email" id="email" name="email">
</p>
<span class="no-bottom-padding">Хотите подписатья на самую модную рассылку спама?</span>
<p class="choose-categories">Выберите категории</p>
<ul class="info">
<li>
<input type="checkbox" id="equipment" name="categories[]" value="Equipments"/>
<label for="equipment">Оборудование</label>
</li>
<li>
<input type="checkbox" id="dinners" name="categories[]" value="How To Cook Dinners"/>
<label for="dinners">Как приготовить обеды</label>
</li>
<li>
<input type="checkbox" id="millions" name="categories[]" value="Million on 2 days"/>
<label for="millions">Заработай миллион за два дня!</label>
</li>
</ul>
<p class="bold-text">На сколько сложная задача:</p>
<ul class="info">
<li>
<input type="radio" id="easy" name="how-hard" value="Easy"/>
<label for="easy">Совсем нет</label>
</li>
<li>
<input type="radio" id="so-so" name="how-hard" value="So-so"/>
<label for="so-so">Так себе</label>
</li>
<li>
<input type="radio" id="hard" name="how-hard" value="Hard"/>
<label for="hard">Еле справились</label>
</li>
</ul>
</fieldset>
</li>
<div>
<button type="submit" name="submit">Отправить</button>
</div>
</ul>
</form>
</div>
</body>
表单处理代码:
<body>
<dl>
<?php
$first_name = $_GET["first-name"];
$last_name = $_GET["last-name"];
$sex = $_GET["sex"];
$age = $_GET["age"];
$sex_detailed = $_GET["sex-detailed"];
$birthday = $_GET["birthday"];
$martial_status = $_GET["martial-status"];
$social_status = $_GET["social-status"];
$live_place = $_GET["live-place"];
$hobbies = $_GET["hobbies"];
$books = $_GET["books"];
$quantity_of_books = $_GET["quantity-of-books"];
$comments = $_GET["comments"];
$positions = $_GET["positions"];
$email = $_GET["email"];
$categories = $_GET["categories"];
$how_hard = $_GET["how-hard"];
function getTextData ($variable, $label) {
if (!empty($variable)) {
echo '<div class="row no-gutters">';
echo '<dt>' . $label . '</dt>';
echo '<dd>' . $variable . '</dd>';
echo '</div>';
}
}
getTextData($first_name, "Имя:");
getTextData($last_name, "Фамилия:");
if (!empty($sex) && $sex == 'male') {
echo '<div class="row no-gutters">';
echo '<dt>' . "Пол:" . '</dt>';
echo '<dd>' . "Мужской" . '</dd>';
echo '</div>';
}
if (!empty($sex) && $sex == 'female') {
echo '<div class="row no-gutters">';
echo '<dt>' . "Пол:" . '</dt>';
echo '<dd>' . "Женский" . '</dd>';
echo '</div>';
}
getTextData($age, "Ваш возраст: ");
if (!empty($sex_detailed) && $sex_detailed == 'male') {
echo '<div class="row no-gutters">';
echo '<dt>' . "Вы:" . '</dt>';
echo '<dd>' . "Молодой человек" . '</dd>';
echo '</div>';
}
if (!empty($sex_detailed) && $sex_detailed == 'female') {
echo '<div class="row no-gutters">';
echo '<dt>' . "Вы:" . '</dt>';
echo '<dd>' . "Девушка" . '</dd>';
echo '</div>';
}
getTextData($birthday, "Дата рождения:");
getTextData($martial_status, "Семейное положение:");
getTextData($social_status, "Социальный статус:");
getTextData($live_place, "Местожительства:");
if (!empty($hobbies)) {
echo '<div class="row no-gutters">';
echo '<dt>' . "Ваши хобби:" . '</dt>';
foreach ($hobbies as $hobby) {
echo '<dd>' . $hobby . ',' . '</dd>';
}
echo '</div>';
}
getTextData($books, "Книга: ");
getTextData($quantity_of_books, "Прочитано книг за свою жизнь:");
getTextData($comments, "Ваши комментарии:");
if (!empty($positions)) {
echo '<div class="row no-gutters">';
echo '<dt>' . "Позиции:" . '</dt>';
foreach ($positions as $position) {
echo '<dd>' . $position . ',' . '</dd>';
}
echo '</div>';
}
getTextData($email, "Email:");
if (!empty($categories)) {
echo '<div class="row no-gutters">';
echo '<dt>' . "Подписки:" . '</dt>';
foreach ($categories as $category) {
echo '<dd>' . $category . ',' . '</dd>';
}
echo '</div>';
}
getTextData($how_hard, "Насколько сложная задача:");
?>
</dl>
</body>
以下是提交空白表单时的错误:
注意:未定义的索引:第 18 行 C:\xampp\htdocs\index.php 中的性
注意:未定义的索引:第 20 行 C:\xampp\htdocs\index.php 中的性详细信息
注意:未定义索引:第 25 行 C:\xampp\htdocs\index.php 中的爱好
注意:未定义的索引:第 27 行 C:\xampp\htdocs\index.php 中的书籍数量
注意:未定义的索引:第 29 行 C:\xampp\htdocs\index.php 中的位置
注意:未定义索引:第 31 行 C:\xampp\htdocs\index.php 中的类别
注意:未定义的索引:第 32 行 C:\xampp\htdocs\index.php 中的难易程度
但是如果你填写了与这些变量相关的字段,那么这些错误就不存在了。问题是什么?谢谢你。
不是很明显,当不填写表格时,就
$_GET
没有数据,也无处可取表格中的所有财富$_GET["first-name"]
等等$_GET["sex"]
。有必要检查
$_GET
一个请求是否已经到达,并且只有当它已经到达时 - 解析它,将数据放入变量并处理它。如果你真的想,那么你可以通过isset或null 合并运算符或为空单独检查每个变量