0

I'm trying to create a form using html and php and I get these error messages. Everything are in one php file. I can find anything that is wrong with my code.

Notice: Undefined index: number in C:\xampp\htdocs\sms\textmessage.php on line 41
Notice: Undefined index: sender in C:\xampp\htdocs\sms\textmessage.php on line 42
Notice: Undefined index: message in C:\xampp\htdocs\sms\textmessage.php on line 43
Notice: Undefined index: send in C:\xampp\htdocs\sms\textmessage.php on line 51

Form code:-

<form method="POST">

    <div class="form-group">
        <label for="number">Receiver's Number</label>
        <input type="tel" name="number" class="form-control" placeholder="Mobile Number" value="<?php echo $number; ?>" />
    </div>

    <div class="form-group">
        <label for="sender">Sender</label>
        <input type="text" name="sender" class="form-control" placeholder="Sender's Name" value="<?php echo $from; ?>">
    </div>

    <div class="form-group">
        <label for="message">Message</label>
        <textarea class="form-control" name="message" placeholder="Enter your message here" value="<?php echo $message; ?>"></textarea>
    </div>

        <input type="submit" class="btn btn-success btn-lg" id="submitbtn" value="Send" name="send"/>
    <input type="hidden" name="submitted" value="true">

</form>

php code where I get the error:-

//Get form data
        $number = $_POST['number']; //Line 41
        $from = $_POST['sender']; //Line 42
        $message = $_POST['message']; //Line 43
        $message = urlencode($message); //Test that the message is encoded correctly. Php will use urlencode the message

        if ($_POST['send']) //Line 51
        {
            //Validating if the fields are empty
            if ($number)
            {
                $error.="<br />Please enter the receiver's number!";
            }
            if ($from)
            {
                $error.="<br />Please enter the Sender's name!";
            }
            if ($message)
            {
                $error.="<br />Please enter the text message you want to send!";
            }  

Is anything wrong?

Peter Badida
  • 11,310
  • 10
  • 44
  • 90
johnmmm
  • 115
  • 4
  • 11
  • Seeing `
    ` suggests you're using your entire code in the same page; HTML and PHP. The error/notices are obvious here. When `
    ` has no action, it defaults to "self", being "on the same page/file". You have two good answers below, accept one of them to mark this question as solved.
    – Funk Forty Niner Feb 12 '17 at 20:11

2 Answers2

2

When you are running this PHP application for first time there is nothing in $_POST[] that is why it gives an error like this.(Because we have to submit the form to have values in $_POST[] array) you have to define it like this with isset() function

if(isset($_POST['send'])){

    $number = $_POST['number']; //Line 41
    $from = $_POST['sender']; //Line 42
    $message = $_POST['message']; //Line 43
    $message = urlencode($message);

            //Validating if the fields are empty
            if ($number)
            {
                $error.="<br />Please enter the receiver's number!";
            }
            if ($from)
            {
                $error.="<br />Please enter the Sender's name!";
            }
            if ($message)
            {
                $error.="<br />Please enter the text message you want to send!";
            }  
}

Happy Coding :)

isuruAb
  • 2,202
  • 5
  • 26
  • 39
0

you can check first it is form submit in your php file first

if(isset($_POST['submitted'])){
// then your code here
}

or more check add more post variable check in if condition . when use $_POST condition without post value then this warning will show

so this is your final code

<form method="POST">

                    <div class="form-group">
                        <label for="number">Receiver's Number</label>
                        <input type="tel" name="number" class="form-control" placeholder="Mobile Number" value="<?php echo $number; ?>" />
                    </div>

                    <div class="form-group">
                        <label for="sender">Sender</label>
                        <input type="text" name="sender" class="form-control" placeholder="Sender's Name" value="<?php echo $from; ?>">
                    </div>

                    <div class="form-group">
                        <label for="message">Message</label>
                        <textarea class="form-control" name="message" placeholder="Enter your message here" value="<?php echo $message; ?>"></textarea>
                    </div>

                        <input type="submit" class="btn btn-success btn-lg" id="submitbtn" value="Send" name="send"/>
                    <input type="hidden" name="submitted" value="true">



                </form>

and php code

<?php 
   if(isset($_POST['submitted'])){
    $number = $_POST['number']; //Line 41
    $from = $_POST['sender']; //Line 42
    $message = $_POST['message']; //Line 43
    $message = urlencode($message); //Test that the message is encoded correctly. Php will use urlencode the message

    if ($_POST['send']) //Line 51
    {
        //Validating if the fields are empty
        if ($number)
        {
            $error.="<br />Please enter the receiver's number!";
        }
        if ($from)
        {
            $error.="<br />Please enter the Sender's name!";
        }
        if ($message)
        {
            $error.="<br />Please enter the text message you want to send!";
        } 
    } 

}

?>
Shafiqul Islam
  • 5,570
  • 2
  • 34
  • 43