Check if input field value exist in array, if so return to page with an error

I have a form where user insert their names, once they submit the form, the page should check if the name provided already exists, if so, should return with an error, other wise, proceed normally.

How do I check if my input value exists and stop the form if this exists?

Read More
<?php

$array = get_meta_values( 'user_submit_name' );
// Array to search:
// Temp array so we don't find the same key multipule times:
$temp = array();
// Iterate through the array:
foreach ($array as $key)
{
// Check the key hasn't already been found:
if (!in_array($key, $temp))
{
    // Get an array of all the positions of the key:
    $keys = array_keys($array, $key);
    // Check if there is more than one position:
    if (count($keys)>0)
    {
        // Add the key to the temp array so its not found again:
        $temp[] = $key;
        // Do something...
        echo '<li>Name already used';                        
    }
}
}
?>

html

<form class="form-horizontal" role="form" id="usp_form" method="post" data-validate="parsley" enctype="multipart/form-data" novalidate>

        <div class="form-group">
            <label  class="col-lg-2 control-label" for="user-submitted-name">Il tuo nome</label>
             <div class="col-lg-10">
                <input name="user-submitted-name" type="text" value="" data-required="true" required placeholder="Your name" class="form-control input-lg usp-input">
            </div>
        </div>

    <div class="form-group">
         <div class="col-lg-offset-2 col-lg-10">
            <input class="submit btn btn-lg btn-primary" name="user-submitted-post" id="user-submitted-post" type="submit" value="<?php _e('Submit', 'usp'); ?>">
        </div>
    </div>

Related posts

Leave a Reply

2 comments

  1. I got it from your comments that you have the following:

    $_POST["user-submitted-name"]; // name from the form
    $names = get_meta_values('user_submit_name'); // array with names not allowed
    

    Then it looks like the easy way:

    if (in_array($_POST["user-submitted-name"], $names)) {
        // posting not allowed
        echo '<li>Name already used';
    } else {
        // posting is allowed
        // save posting here...
        // and then go to success page:
        header("Location: success.html"); // redirect
        exit(); // and stop here
    }
    
  2. Just make use of a multi-level break statement and come out of the loop.

    Something like

    if (count($keys)>0)
        {
            // Add the key to the temp array so its not found again:
            $temp[] = $key;
            // Do something...
            echo '<li>Name already used';  
            break 3;                      
        }