Faizan
Faizan

Reputation: 1898

How to stop php from executing the script if form POST is empty?

I have two input fields and whenever I open my page, it displays errors since at the start user has not entered any input to any of the field (& the errors are displayed because the user input is used in sql queries to retrieve data). I just want to display those two forms at start of the page not the errors. Both inputs are required to execute the Compare button. If user has not entered either one of the inputs it should not send request to php for scripting. I mean the Compare button should send request only if both inputs are filled otherwise it should give a message to user to Type the required fields. How to do this?

$trimUser= trim ($_POST['name']);
if(empty($name) || empty($name2))
{
echo "Enter a name ";
}
else if (isset($_POST['name']))
{   
$name=$_POST['name'];
}
else if (isset($_POST['name2']))
{
$name2=$_POST['name2'];
}

& here is my form:

<form action="index.php" method="POST">
<input class="span3 search-query" placeholder="Type User A" type="text" name="name" id="field"/
<input class="span3 search-query" placeholder="Type User B"  name="name2" type="text"
id="field2"/>
<button class="btn btn-primary" data-loading-text="Loading..." >Compare</button>

Upvotes: 1

Views: 7408

Answers (7)

Pedro
Pedro

Reputation: 1

Think of redirecting people AFTER the error to the same page they were:

    echo '<script>location.href=\'example.php\'</script>';

Upvotes: 0

Faizan
Faizan

Reputation: 1898

I simply got rid all of all the errors by adding this error_reporting(E_ERROR | E_PARSE); at the start of my code. However if anyone want to check display validation error messages , one can do easily by what others have mentioned . i.e By using if($_Post). Anyway ,Thank you everyone for the help.

Upvotes: 1

Er. Anurag Jain
Er. Anurag Jain

Reputation: 1793

You have to use java script or jQuery for validate both fields are not empty. For Example..

<form action="index.php" method="POST" onsubmit="return validate()">
  <input class="span3 search-query" placeholder="Type User A" type="text" name="name"     id="field"/>

   <input class="span3 search-query" placeholder="Type User B"  name="name2" type="text"
id="field2"/>

   <button class="btn btn-primary" data-loading-text="Loading..." >Compare</button>
</form>

<script type="text/javascript">
   function validate(){
       var field1 = document.getElementById('field').value;
       var field2 = document.getElementById('field2').value;

        if(field1 != '' && field2 != '' ){
           return true;
         } else{
            alert('Type the required fields');
            return false;
         }
    }
</script>

Here if Both fields are not empty then it will be allow to submit form. And In PHP script Add

if(isset($_POST) && !empty($_POST)){
     //code comes here
}

I hope it will be helpful for you.

thanks

Upvotes: 2

Kalaiyarasan
Kalaiyarasan

Reputation: 13454

Use the if condition with isset($_POST) before loading the post.i.e.,

if (isset($_POST)) {
if(empty($name) || empty($name2))
{
echo "Enter a name ";
}
else if (isset($_POST['name']))
{   
$name=$_POST['name'];
}
else if (isset($_POST['name2']))
{
$name2=$_POST['name2'];


}

Upvotes: 1

James Pegg
James Pegg

Reputation: 191

Ehs4n is right, but I would be more specific and do something like :

if(!empty($_POST['compare'])) {
   #validation
}

Your button code would have to be changed to :

<button name="compare" value="1" class="btn btn-primary" data-loading-text="Loading..." >Compare</button>

There are two reasons I would do this:

  1. Using !empty() makes sure you don't get an error when $_POST['compare'] is empty
  2. Checking $_POST['compare'] instead of just $_POST makes sure errors are only shown if someone clicks the button.

This last point is key because if you have multiple forms on the page or you happen to set a $_POST variable elsewhere you would still be showing errors.

Upvotes: 1

Angel
Angel

Reputation: 333

You can add a check to verify if the request is a post request :

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     // Place your error checking code here
}

Upvotes: 1

Ehs4n
Ehs4n

Reputation: 802

Add if clause like

if($_POST) {
...your validation code
}

Upvotes: 0

Related Questions