-2

I am getting these errors:

Notice: Undefined index: first_name in /Applications/XAMPP/xamppfiles/htdocs/Assesment/add_student.php on line 13

Notice: Undefined index: last_name in /Applications/XAMPP/xamppfiles/htdocs/Assesment/add_student.php on line 14

Notice: Undefined index: age in /Applications/XAMPP/xamppfiles/htdocs/Assesment/add_student.php on line 15

Notice: Undefined index: mobile in /Applications/XAMPP/xamppfiles/htdocs/Assesment/add_student.php on line 16

Notice: Undefined index: email in /Applications/XAMPP/xamppfiles/htdocs/Assesment/add_student.php on line 17

Notice: Undefined index: address in /Applications/XAMPP/xamppfiles/htdocs/Assesment/add_student.php on line 18

Notice: Undefined index: club_role in /Applications/XAMPP/xamppfiles/htdocs/Assesment/add_student.php on line 19 Error: Duplicate entry '' for key 'PRIMARY'

Here is my code:`

    <h1> Add a new student</h1>
    <p>Add a new student to the system using the form below</p>

    <?php

    /*information posted from booking form*/
    $first_name=$_POST['first_name'];
    $last_name=$_POST['last_name'];
    $age=$_POST['age'];
    $mobile=$_POST['mobile'];
    $email=$_POST['email'];
    $address=$_POST['address'];
    $club_role=$_POST['club_role'];


    /*connect to DBMS*/
    $con=mysql_connect("localhost", "root", "");
    if (!$con)
    {
        die ('Could not connect: ' .mysql_error());
    }

    /*connect to Database*/
    mysql_select_db("91368_jurgen_glee",$con);

    /*insert into records*/
    $sql="INSERT INTO glee (`first_name`, `last_name`, `age`, `mobile`, `email`, `address`, `club_role`)
    VALUES ('$first_name', '$last_name', '$age', '$mobile', '$email', '$address', '$club_role')";

    mysql_Query($sql, $con) or die ('Error: '.mysql_error());

    $result=mysql_query("SELECT *
        WHERE `first_name` = '$first_name'
        AND `last_name` = '$last_name'
        AND `age` = '$age'
        AND `mobile` = '$mobile'
        AND `email` = '$email'
        AND `address` = '$address' 
        AND `club_role` = $club_role'");
        while ($row = mysql_fetch_array($reslut))

    /*close DBMS Connection*/
    mysql_close($con);

    ?>      
` and here is the html code:`
                <div id="body"> 
                    <h1> Add a new student</h1>
                    <p>Add a new student to the system using the form below</p>

                    <form name="add_student" action="add_student.php">

                        <table class="add_student">
                            <tr>
                                <td class="form">
                                    <b>First Name</b></br>
                                    <input type="text" name="first_name" size="30" value="">
                                </td>

                                <td class="form">
                                    <b>Last Name</b></br>
                                    <input type="text" name="last_name" size="30" value="">
                                </td>
                            </tr>   
                            <tr>
                                <td class="form">
                                    <b>Mobile</b></br> 
                                    <input type="text" size="10" name="mobile" min="1" max="10" value="">
                                </td>

                                <td class="form">
                                    <b>Email</b></br>
                                    <input type="text" name="email" size="15" value="">
                                </td>

                                <td class="form">
                                    <b>Age</b></br>
                                    <input type="number" name="age" size="2" min="1" max="30" value="">
                                </td>
                            </tr>



                                    <td class="form">
                                        <br>
                                    </h1><b>Address</b></h1>
                                    <select name="address">
                                        <option value="01">Please select one</option>
                                        <option value="02">Red Beach</option>
                                        <option value="03">Orewa</option>
                                        <option value="04">Silverdale</option>
                                        <option value="05">Dairy Flat</option>
                                    </select>
                                </td>
                                <br>

                                    <td class="form">
                                        <br>
                                    </h1><b>Club Role</b></h1>
                                    <select name="club-role">
                                        <option value="01">Please select one</option>
                                        <option value="02">Lead</option>
                                        <option value="03">Backstage</option>
                                        <option value="04">Chorus</option>
                                        <option value="05">Orchestra</option>
                                    </select>
                                </td>

                            </tr>

                            <tr>
                                <td colspan="2" class="submit">
                                    <br>
                                    <input type="submit" value="SUBMIT">
                                </td>
                            </tr>


                        </table>

                    </form>

            </div> 


            </div>
    </body> 
</html> 

`

Jurgen Brand
  • 3
  • 1
  • 5

2 Answers2

0

You need to specify the method to POST on the form, i.e.:

<form method="POST" name="add_student" action="add_student.php">
Pedro Lobito
  • 94,083
  • 31
  • 258
  • 268
0

You get this notice because array $_POST does not have first_name key like another ones. They are going to appeared only when you make POST request like submit the form or make AJAX call.

1. One file for GET and POST request.

In your snippet I can see you have one *.php file for GET method and POST method. To avoid this situation you can make two different files: indexPost.php and index.php and change HTML code:

<form action="indexPost.php" method="POST">

or make conditions to your keys:

<?php
    if (isset($_POST['first_name']) && !empty($_POST['first_name'])) {
        // Your code
    }
?>

Each key needs own conditional statement.

2. Separate files for GET and POST request

If I'm wrong about one *.php file.

Using conditional statements (look on code above) remove all listed notices. Also you can improve it to validate form and mysql query.

3. Duplicate entry for key Primary

One of your column has primary key which can't be duplicated in one table. Let's say the column last_name has primary key. Then in whole table you can have only one row with value LoremIpsum in last_name column.

aldrin27
  • 3,407
  • 3
  • 29
  • 43
Grzegorz Gajda
  • 2,424
  • 2
  • 15
  • 23