I need a help with this code. How can I make it shorter ? I think How can I create an array with name for example errors a 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 html form are inserted into the table below the form. Thanks in advance!