PHP:Echo没有从表单上处理POST方法

PHP:Echo没有从表单上处理POST方法

问题描述:

I am a bit new to PHP and I'm having a bit of difficulties here and there. I am developing a form and wish to display an error box if any of the fields are empty when the 'Submit' Button is pressed. I've tried the following code but the echo is still not appearing. Any suggestions ?

Form Code:

<div style="padding-top:40px">
    <div style="text-center; padding-right:25%; padding-left:25%">
        <div class="form-area">  
            <form role="form" method="$_POST" action="searchEmployee.php">
            <br style="clear:both">
                <h3 style="margin-bottom:25px; text-align: center;">Visitor Form</h3>
                <div class="form-group">
                    <label>Name:</label>
                    <input type="text" class="form-control" id="name" name="name" placeholder="Name" required>
                </div>
                <div class="form-group">
                     <label>Surname:</label>
                    <input type="text" class="form-control" id="surname" name="surname" placeholder="Surname" required>
                </div>
                <div class="form-group">  
                    <label>ID Card:</label>
                    <input type="text" class="form-control" id="idCard" name="idCard" placeholder="ID Card No" required>
                </div>
                <div class="form-group">  
                    <label>Visitor Card Number:</label>
                    <input type="text" class="form-control" id="cardNumber" name="cardNumber" placeholder="Card No" required>
                </div>
                <div class="form-group">  
                    <intput type="button" id="submit" name="submit" class="btn btn-primary pull-right">Sign In Visitor</button>
                </div>
            </form>
        </div>
    </div>
</div>

PHP Code:

<?php
        if (isset($_POST['submit'])) {
            $required = array('name', 'surname', 'ID', 'visitorCard');

            // Loop over field names, make sure each one exists and is not empty
            $error = false;
            foreach($required as $field) {
                if (empty($_POST[$field])) {
                $error = true;
                }
            }

            if ($error) {
                echo "All fields are required.";
            }
        }
        ?>

Here are few mistakes:

  1. You are using method as $_POST in your form attribute, It should be only POST.
  2. Your form will not submit because your button is not a submit type. it should

    <input type="submit" id="submit" name="submit" class="btn btn-primary pull-right" value="Sign In Visitor" />
    

    Or

    <button type="submit" id="submit" name="submit" class="btn btn-primary pull-right">Sign In Visitor</button>
    

You are using method as $_POST in your form attribute,
It should be only POST.

So, replace your form line with,

<form role="form" method="POST" action="searchEmployee.php">

and also, change Submit button line to,

<input type="submit" name="submit" value="Sign In Visitor" class="btn btn-primary pull-right" />

Change this

<intput type="button" id="submit" name="submit" class="btn btn-primary pull-right">Sign In Visitor</button>

To

<input type="button" id="submit" name="submit" value="submit" class="btn btn-primary pull-right" />Sign In Visitor

and Also this

<form role="form" method="$_POST" action="searchEmployee.php">

To

<form role="form" method="POST" action="searchEmployee.php">

How will you get POST['submit'] value when you have not even set, that means your if code won't execute it and so it won't echo or alert it. For Best practice of debugging always try to do this whenever such instances occurs while coding.

print_r($_POST);

This will show you an array of POST variables

You need to make 2 change as below

  1. Change button type like this

<input type="submit" id="submit" name="submit" class="btn btn-primary pull-right" value="Sign In Visitor">

  1. Change Form method

<form role="form" method="POST" action="searchEmployee.php">

change $_POST to POST and put <input type="submit" instead of <input type = "button"

  • First think change button type="submit".

  • Second think change PHP array

    $required = array('name', 'surname', 'idCard', 'cardNumber');
    

    <div style="padding-top:40px"> 
<div style="text-center; padding-right:25%; padding-left:25%"> 
<div class="form-area"> 

<form role="form" method="post" action="searchEmployee.php"> <br style="clear:both"> <h3 style="margin-bottom:25px; text-align: center;">Visitor Form</h3> <div class="form-group"> <label>Name:</label> 
<input type="text" class="form-control" id="name" name="name" placeholder="Name" required> </div>
 <div class="form-group"> <label>Surname:</label> 
<input type="text" class="form-control" id="surname" name="surname" placeholder="Surname" required> </div> <div class="form-group"> <label>ID Card:</label> 
<input type="text" class="form-control" id="idCard" name="idCard" placeholder="ID Card No" required> 
</div> 
<div class="form-group">
 <label>Visitor Card Number:</label> <input type="text" class="form-control" id="cardNumber" name="cardNumber" placeholder="Card No" required>
 </div> <div class="form-group"> 
<input type="submit" id="submit" name="submit" class="btn btn-primary pull-right" value="Sign In Visitor">
</div> </form> </div> 
</div> </div>

Php Code:::searchEmployee.php

  <?php if (isset($_POST['submit'])) { $required = array('name', 'surname', 'idCard', 'cardNumber');
     // Loop over field names, make sure each one exists and is not empty 
$error = false; 
foreach($required as $field) { if (!isset($_POST[$field])) { 
    $error = true;
     } } 
    if ($error) {
     echo "All fields are required."; } }
     ?>