html php 未入力エラー
<実現したいこと>
複数入力項目がある中、未入力の場合、それぞれのテキストボックスの下にエラー表示させたい。
<困っていること>
入力項目が複数ある中、1つしかうまくエラーが表示されません。
以下にコードを貼っていますが、以下の結果になりました。
原因が分かりましたら、教えていただけますでしょうか。よろしくお願いいたします。
<結果>
・「日付」だけが未入力の場合、エラーは表示されない、ページは遷移しない。
・「種別」、「タイトル」だけが未入力の場合、エラーは表示されない、ページは遷移する。
・「内容」だけが未入力の場合、エラー表示される。ページは遷移しない。
・「内容」と他の項目が未入力だと、内容も他の項目もエラー表示されます。
if (isset($_POST['edit'])) {
$regist_date = $_POST['regist_date'];
$category = $_POST['category'];
$title = htmlspecialchars($_POST['title'], ENT_QUOTES, "UTF-8");
$content = htmlspecialchars(nl2br($_POST['content']), ENT_QUOTES, "UTF-8");
$errors = array();
if (empty($regist_date)) {
$errors['regits_date'] = "日付が選択されていません";
}
if (empty($category)) {
$errors['category'] = "種別が選択されていません";
}
if (empty($title)) {
$errors['title'] = "タイトルが入力されていません";
}
if (empty($content)) {
$errors['content'] = "内容が入力されていません";
}
<form action="" method="post" enctype="multipart/form-data">
<table class="form-table registration_table">
<tbody>
<?php if (isset($result)) { while ($row = mysqli_fetch_assoc($result)) {?>
<tr>
<th>投稿日</th>
<td>
<input type="date" name="regist_date" value="<?=$row['regist_date']?>"/>
<?php if(isset($errors['regist_date'])) { ?>
<?="<span class='error'>".$errors['regist_date'] ."</span>"?>
<?php } ?>
</td>
</tr>
<tr>
<th>種別</th>
<td>
<select name="category" value ="<?=$row['category']?>">
<option value="">選択してください</option>
<?php foreach($array_category as $key =>$value){ ?>
<option value="<?=$value?>" <?php if ($row['category'] == $value) { echo 'selected'; }?>><?=$value?></option>
<?php }?>
</select>
<?php if(isset($errors['category'])) { ?>
<?="<span class='error'>".$errors['category']."</span>"?>
<?php } ?>
</td>
</tr>
<tr>
<th>タイトル</th>
<td>
<input type="text" name="title" value="<?=$row['title']?>"/>
<?php if(isset($errors['title'])) { ?>
<?="<span class='error'>".$errors['title']."</span>"?>
<?php } ?>
</td>
</tr>
<tr>
<th>内容</th>
<td>
<textarea name="content" cols="20" rows="2"><?=$row['content']?></textarea>
<?php if(isset($errors['content'])) { ?>
<?="<span class='error'>".$errors['content']."</span>"?>
<?php } ?>
</td>
</tr>