I need help with this code. How can I make it shorter? How can I create an array with the names, for example, errors, and modify code without so many If
statements? I still can't solve it. I'm a beginner in PHP.
$error1 = $error2 = $error3 = $error4 = $error5 = $error6 = $error7 = $error8 = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["fname"])) {
$error1 = "fill in fname";
}
if (empty($_POST["lname"])) {
$error2 = "fill in lname";
}
if (empty($_POST["street"])) {
$error3 = "fill in street";
}
if (empty($_POST["city"])) {
$error4 = "fill in city";
}
if (empty($_POST["postcode"])) {
$error5 = "fill in postcode";
}
if (empty($_POST["country"])) {
$error6 = "fill in country";
}
if (empty($_POST["email"])) {
$error7 = "fill in email";
}
if (empty($_POST["phone"])) {
$error8 = "fill in phone";
}
if (empty($_POST["fname"]) ||
empty($_POST["lname"]) ||
empty($_POST["street"]) ||
empty($_POST["city"]) ||
empty($_POST["postcode"]) ||
empty($_POST["country"]) ||
empty($_POST["email"]) ||
empty($_POST["phone"])) {
} else {
$form_items = $_POST;
$document = new DOMDocument("1.0", "utf-8");
if (is_file('form_data.xml'))
{
$document->load("form_data.xml");
$xmlko = $document->getElementsByTagName('xml')->item(0);
}
else
{
$xmlko = $document->createElement("xml");
$document->appendChild($xmlko);
$xmlko = $document->getElementsByTagName('xml')->item(0);
}
$form = $document->createElement("form");
$new_user = $document->createElement("user");
foreach ($form_items as $ite => $val) {
$this_user = $document->createElement($ite, $val);
$new_user->appendChild($this_user);
}
$form->appendChild($new_user);
$xmlko->appendChild($form);
$document->save("form_data.xml");
}
}
?>
Here is HTML code. Everything is in one PHP file.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>form</title>
<link rel="stylesheet" href="CSS/styly.css">
</head>
<body>
<h1>FORM</h1>
<form action="" method="post">
<p>FName:</p>
<input type="text" name="fname"/><span class="error"><?php echo $error1?></span>
<p>LName:</p>
<input type="text" name="lname"/><span class="error"><?php echo $error2?></span>
<p>Street:</p>
<input type="text" name="street"/><span class="error"><?php echo $error3?></span>
<p>City:</p>
<input type="text" name="city"/><span class="error"><?php echo $error4?></span>
<p>Postcode:</p>
<input type="text" name="postcode"/><span class="error"><?php echo $error5?></span>
<p>Country:</p>
<input type="text" name="country"/><span class="error"><?php echo $error6?></span>
<p>E-mail:</p>
<input type="text" name="email"/><span class="error"><?php echo $error7?></span>
<p>Phone:</p>
<input type="text" name="phone"/><span class="error"><?php echo $error8?></span>
<input type="submit" value="SUBMIT"/>
</form>
<?php
$document = new DOMDocument("1.0", "utf-8");
if (is_file('form_data.xml')) {
$document->load("form_data.xml");
$users = $document->getElementsByTagName("user");
echo "<table>";
echo '<tr>';
foreach($users->item(0)->childNodes as $data) {
echo '<th>'.$data->nodeName."</th>";
}
echo '</tr>';
foreach($users as $user){
echo '<tr>';
foreach($user->childNodes as $data) {
echo '<td>'.$data->nodeValue."</td>";
}
echo '</tr>';
}
echo "</table>";
}
?>
</body>
</html>
All data from the HTML form is inserted into the table below the form.