Nihal Sahu
Nihal Sahu

Reputation: 189

Simple Validator in PHP not working

I created a little form validator with PHP and having some problems with it. MY VIEW FILE is here :

<form action="" method="post">
<?php if( isset($status) ) : ?>
    <p class="notice"><?php echo $status; ?> </p>
    <?php endif; ?>

        <ul>
            <li>
                <label for="name">Your Name : </label>
                <input type="text" name="name">
            </li>

            <li>
                <label for="email">Your Email : </label>
                <input type="text" name="email">
            </li>

            <li>
                <input type="submit" value="Sign Up">
            </li>
        </ul>



    </form>

and here's my little controller :

<?php
require 'index.tmpl.php';

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $name  = trim($_POST['name']);
    $email = trim($_POST['email']);

    if (empty($name) || empty($email)) {
        $status = "Please provide a name and a valid email address";
    }

    echo $name;

}

?>

Now what happens is that , when I open up the page and leave the form fields blank and submit it ,it just reloads ,does not echo anything.

Upvotes: 0

Views: 46

Answers (4)

Digital Chris
Digital Chris

Reputation: 6202

The <form action="" points to the location where the form will be submitted. If blank, it submits the form back to itself.

<form action="yourLittleController.php" method="POST">

Edited with more info:

in php, post is not POST. Example here: https://eval.in/89002

make sure you have

method="POST">

and not

method="POST">

Upvotes: 1

Balvant Jat
Balvant Jat

Reputation: 71

you should mention your second file name in your view file's form's action attribute like action = "controller.php"

Upvotes: 0

Kita
Kita

Reputation: 2634

How about moving the require line to below the if?

<?php

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $name  = trim($_POST['name']);
    $email = trim($_POST['email']);

    if (empty($name) || empty($email)) {
        $status = "Please provide a name and a valid email address";
    }

    echo $name;
}

require 'index.tmpl.php';

?>

Upvotes: 1

Tim
Tim

Reputation: 5389

You want to echo $status, not $name.

Upvotes: 1

Related Questions