Я довольно новичок в PHP и пытаюсь проверить простую форму с тремя полями ввода. По какой-то причине я ничего не получаю, когда нажимаю кнопку «Отправить», пока поля пусты. Я боролся с этим вопросом уже несколько часов.
Я пытаюсь получить текст ошибки рядом с полями, когда они пусты / недействительны.
Вот мой код HTML и PHP.
HTML:
<form method="post" action="">
<table width="450px">
<tr>
<td valign="top">
<label for="nimi">Nimi</label>
</td>
<td valign="top">
<td><input type="text" name="nimi"><span class="error"><?php echo $nimiVirhe;?></span></td>
</td>
</tr>
<tr>
<td valign="top">
<label for="sposti">Sähköposti</label>
</td>
<td valign="top">
<td><input type="text" name="sposti"><span class="error"><?php echo $spostiVirhe;?></span></td>
</td>
</tr>
<tr>
<td valign="top">
<label for="palaute">Palaute</label>
</td>
<td valign="top">
<textarea name="palaute" maxlength="1000" cols="30" rows="6"></textarea><span class="error"><?php echo $palauteVirhe;?> </span>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<input type="submit" value="Lähetä" name="submit">
</td>
</tr>
</table>
</form>
PHP
<?php
$nimiVirhe = $spostiVirhe = $palauteVirhe = "";
$nimi = $sposti = $palaute = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["nimi"])) {
$nimiVirhe = "Name is required";
} else {
$nimi = test_input($_POST["nimi"]);
if (!preg_match("/^[a-zA-Z ]*$/",$nimi)) {
$nimiVirhe = "Only letters and white space allowed";
}
}
if (empty($_POST["sposti"])) {
$spostiVirhe = "Contact is required";
} else {
$sposti = test_input($_POST["sposti"]);
if (!filter_var($sposti, FILTER_VALIDATE_EMAIL)) {
$spostiVirhe = "Invalid email format";
}
}
if (trim($_POST["palaute"]) == "") {
$palauteVirhe = "City is required";
} else {
$palaute = test_input($_POST["palaute"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
Я не знаю, что попробовать дальше.
Заранее спасибо за помощь!