Kyle
Kyle

Reputation: 2379

HTML Form POST is null

so I'm trying to simply send one field of data from a form to a php file. Below is my form in a table. I also posted my php code. It keeps returning that $username is null. Ive tried post/get and it doesn't seem to matter.

HTML:

<form action='http://k9minecraft.tk/scripts/adduser.php' method='POST'>
    <table>
        <tr>
            <td>First Name:</td>
            <td><input type='text' id='first'></td>
        </tr>
        <tr>
            <td>Last Name:</td>
            <td><input type='text' id='last'></td>
        </tr>
        <tr>
            <td>Email:</td>
            <td><input type='text' id='email'></td>
        </tr>
        <tr>
            <td>Minecraft Name:</td>
            <td><input type='text' name='user'></td>
        </tr>
        <tr>
            <td><input type='submit' value='Send'></td>
            <td><input type='reset' value='Reset'></td>
        </tr>
    </table>
</form>

PHP:

<?php
print_r($_POST);
if (isset($_POST['user'])) {
    $username = $_POST['user'];
    echo $username;
    echo 'username is not null';
}
?>

Upvotes: 5

Views: 36588

Answers (5)

virmaior
virmaior

Reputation: 424

The issue is that all of your inputs have id but not name. The id are used by JavaScript. The name are used for sending form data.

Change it to be like this:

<form action='http://k9minecraft.tk/scripts/adduser.php' method='POST'>
  <table>
    <tr>
      <td>First Name:</td>
      <td><input type='text' name='first' id='first'></td>
    </tr>
    <tr>
      <td>Last Name:</td>
      <td><input type='text' name='last' id='last'></td>
    </tr>
    <tr>
      <td>Email:</td>
      <td><input type='text' name='email' id='email'></td>
    </tr>
    <tr>
      <td>Minecraft Name:</td>
      <td><input type='text' name='user'></td>
    </tr>
    <tr>
      <td><input type='submit' name='Send' value='Send'></td>
      <td><input type='reset' name='Rest' value='Reset'></td>
    </tr>
  </table>
</form>

Upvotes: 10

M I
M I

Reputation: 3682

This code is working. You need to add some condition, that checks, if $username is posted or not.

Something like that:

if(count($_POST)){
    $username ='';
    if(isset($_POST['user'])){
        $username = $_POST['user'];
    if ($username==null || !$username)
         echo 'username is null';
     echo strlen($username);
     echo $username;
   }

 }

Upvotes: 2

Akihiko Arihyoshi
Akihiko Arihyoshi

Reputation: 21

try using this

<?php
    if(isset($_POST['submit'])){
     $msg = "";
     /* Validate post */
     if(isset($_POST['user'])==""){
      $msg .= "username is null";
     }
    /*End Validate*/
     if($msg==""){
      $user = $_POST['user'];
     }else{
       echo $msg;
     }
    }

?>

Upvotes: 0

Prasanth
Prasanth

Reputation: 5268

This is how people usually do it:

if(isset($_POST['user']) && !empty($_POST['user'])) {
    $user = $_POST['user'];
}

Note: == null will not work with empty string. see here.

You also need to add a name attribute for other input fields of yours.

Upvotes: 0

Chris
Chris

Reputation: 73

Try this to find out if the field is posted by the formular:

isset($_POST['user'])

I think $username==null will be true even if $username really is equal to an empty string.

Upvotes: 2

Related Questions