Shahriar63
Shahriar63

Reputation: 58

Multiple table row insert in mysql table

Hello I am getting Undefined offset: 2 notice when I am trying to insert multiple html table row in mysql . Here is my html form code `

           <form action="insert_array.php" method="post">                
            <table class="table table-bordered">
                <thead>
                <tr>
                    <th>Name of the degree/certificates</th>
                    <th>Name of the Institution</th>
                    <th>Group</th>
                    <th>Board</th>
                    <th>Year</th>
                    <th>Grade/GPA</th>
                </tr>
                </thead>

                <tr>
                    <td>SSC</td>
                    <td><input name="institution[]" type="text" class="form-control"  ></td>
                    <td><input name="subjectGroup[]" type="text" class="form-control"   ></td>
                    <td><input name="board[]" type="text" class="form-control" ></td>
                    <td><input name="year[]" type="text" class="form-control" ></td>
                    <td><input name="grade[]" type="text" class="form-control"  ></td>

                </tr>

                <tr>
                    <td>HSC</td>
                    <td><input name="institution[]" type="text" class="form-control"  ></td>
                    <td><input name="subjectGroup[]" type="text" class="form-control"  ></td>
                    <td><input name="board[]"  type="text" class="form-control" ></td>
                    <td><input name="year[]" type="text" class="form-control" ></td>
                    <td><input name="grade[]" type="text" class="form-control"  ></td>
                </tr>


            </table>
            <input type="submit" name="submit" value="submit">
        </form>

` And here is my php code

if($conn === false){
    die("Error: Could not connect. ".mysqli_connect_error());
}
if(isset($_POST['submit'])){
    $i = 0;
    foreach ($_POST as $val){

        $institution = $_POST['institution'][$i];
        $board = $_POST['board'][$i];
        $year = $_POST['year'][$i];
        $subjectGroup = $_POST['subjectGroup'][$i];
        $grades = $_POST['grade'][$i];

        mysqli_query($conn,"INSERT INTO ems_student_qualification (institution,board,year,subjectGroup,grade) VALUES ('$institution', '$board','$year','$subjectGroup','$grades')");
        $i++;
    }
}

?> I can not store values in my database . But when I am trying this procedure with only 2 fields it works fine . Please point out what is my mistake ? And thanks in advance.

Upvotes: 0

Views: 137

Answers (4)

Dipanwita Kundu
Dipanwita Kundu

Reputation: 1667

Your looping is not proper as it lopping number of total post variables i.e 11 times but $_POST['institution'] exist only 2 times(array starts from zero) so for 3rd time it shows undefined error. Either use $_POST['institution'] or any input fields value for looping like: foreach($_POST['institution'] as $institution){} or you can use for loop also. Hope this is clear.

Upvotes: 0

Phillip Bartschinski
Phillip Bartschinski

Reputation: 643

Try this as PHP code:

if($conn === false){
    die("Error: Could not connect. ".mysqli_connect_error());
}
if(isset($_POST['submit'])){
    $sValues = 'INSERT INTO ems_student_qualification (´institution´, ´board´, ´year´, ´subjectGroup´, ´grade´) VALUES ';
    $i = 0;

    for ($count = count($_POST['institution']); $i < $count; $i++){
        if ( $i > 1 ) { $sValues .= ', '; }

        $institution = mysqli_real_escape_string($conn, $_POST['institution'][$i]);
        $board = mysqli_real_escape_string($conn, $_POST['board'][$i]);
        $year = mysqli_real_escape_string($conn, $_POST['year'][$i]);
        $subjectGroup = mysqli_real_escape_string($conn, $_POST['subjectGroup'][$i]);
        $grades = mysqli_real_escape_string($conn, $_POST['grade'][$i]);

        $sValues .= '(´' . $institution . '´, ´' . $board . '´, ´' . $year . '´, ´' . $subjectGroup . '´, ´' . $grades . '´)';
    }

    if ( $i > 0 ) {
        mysqli_query($conn, $sValues);
    }
}

It include also the string escape.

Upvotes: 1

Ryan Riel
Ryan Riel

Reputation: 34

if(isset($_POST['submit'])){
   for ($i=0; $i < count($_POST['institution']); $i++ )
  {
     $institution = $_POST['institution'][$i];
    $board = $_POST['board'][$i];
    $year = $_POST['year'][$i];
    $subjectGroup = $_POST['subjectGroup'][$i];
    $grades = $_POST['grade'][$i];

    mysqli_query($conn,"INSERT INTO ems_student_qualification (institution,board,year,subjectGroup,grade) VALUES ('$institution', '$board','$year','$subjectGroup','$grades')");
  }}

Upvotes: 0

roullie
roullie

Reputation: 2820

You are looping through $_POST not how many items

if(isset($_POST['submit'])){
    foreach ($_POST['institution'] as $i => $val){

        $institution = $_POST['institution'][$i];
        $board = $_POST['board'][$i];
        $year = $_POST['year'][$i];
        $subjectGroup = $_POST['subjectGroup'][$i];
        $grades = $_POST['grade'][$i];

        mysqli_query($conn,"INSERT INTO ems_student_qualification (institution,board,year,subjectGroup,grade) VALUES ('$institution', '$board','$year','$subjectGroup','$grades')");

    }
}

Upvotes: 1

Related Questions