Reputation: 58
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
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
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
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
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