Search code examples
phpfunctionif-statementreturn-valuenested-if

Nested if, not exiting - create a function to call functions


I have the following code to validate form data. I have created functions to validate various groups, and then have an if isset statement to check if these functions return true. I have tried many different ways to get this to work.

The problem I am having is this. I want the if isset to end if returning FALSE; but it doesn't, it keeps going and pops up the next alert (in my code I have many functions). How can I get it to exit after the first return FALSE? Do I need to make the isset into a function? So it can exit on return FALSE. thanks

I am having trouble writing a function to call functions in php.

function namecheck ($fname, $lname) 
{
    $regexp ="/^[A-Za-z]+$/";
    //filter through names 
    if (preg_match($regexp,$fname,$lname)) 
    {
        return TRUE; 
    }
    else 
    {
        echo'<script type="text/javascript">alert("Enter your names.")</script>';
        return FALSE; 
    }
}

function emailcheck ($email1, $email2) 
{
    $regexp="/^[a-zA-A-Z0-9_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$/";
    //validate email address    
    if (preg_match($regexp,$email1,$email2)) 
    {
        return TRUE; 
    }
    else 
    {
        echo '<script type="text/javascript">alert ("Enter a valid email address.")</script>';
        return FALSE; 
    }
}

$fname=$_POST['fname'];
$lname=$_POST['lname'];
$namecheck=namecheck($fname,$lname);
$email1=$_POST['email1'];
$email2=$_POST['email2'];
$emailcheck=emailcheck($email1,$email2);

if (isset($_POST['submit'])) 
{
    if ($namecheck !==TRUE)
    {
        return FALSE;
    }
    elseif ($emailcheck!==TRUE)
    {
        return FALSE;
    } //and so on..
    else
    {
        return TRUE;
    }
}

Solution

  • A general structure for your functions you could follow is something like this:

    function validateName($name) {
       // Do Validation. Return true or false.
    }
    
    function validateEmail($email) {
       // Do Validation. Return true or false.
    }
    
    function isFormValid() 
    {
       // Name Validation
       if( ! validateName( $_POST['name'] ) )
          return false;
    
       // Email Validation
       if( ! validateEmail( $_POST['email'] ) )
          return false;
    
       // Form is valid if it reached this far.
       return true;
    }
    
    // In your regular code on Form Submit
    if( isset($_POST['submit']) )
    {
       if( isFormValid() ) {
          // Save Form Data to DB
       } else {
          // Show Some Errors
       } 
    
    }
    

    That general structure should work fine for you. It could be made a LOT better but, for the sake of learning, this is sufficient.