PHP - OOP Inserting Multiple Rows in One Form using AJAX/jQuery

Getting Started

Please take note that CSS and jQuery used in this tutorial are hosted so you need internet connection for them to work.

Creating our Database

1. Open phpMyAdmin. 2. Click databases, create a database and name it as testing. 3. After creating a database, click the SQL and paste the below codes. See image below for detailed instruction.
  1. CREATE TABLE `member` (
  2.   `memberid` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `firstname` VARCHAR(50) NOT NULL,
  4.   `lastname` VARCHAR(50) NOT NULL,
  5. PRIMARY KEY(`memberid`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
addmultiple

Creating our Connection

Next, we create our connection to our database. This will serve as the bridge between our forms and database. We name this as conn.php.
  1. <?php
  2.  
  3. $conn = new mysqli("localhost", "root", "", "testing");
  4.  
  5. if ($conn->connect_error) {
  6.     die("Connection failed: " . $conn->connect_error);
  7. }
  8.  
  9. ?>

index.php

This is our index that contains our sample table and our add form.
  1. <!DOCTYPE html>
  2.         <title>PHP - OOP Adding Multiple Rows</title>
  3.         <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  4.         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  5.         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  6. </head>
  7. <div class="container">
  8.         <div class="row">
  9.                 <div class="col-md-8 col-md-offset-2">
  10.                         <h2>Members Table</h2>
  11.                         <div id="table"></div>
  12.                 </div>
  13.         </div>
  14.         <div class="row">
  15.                 <div class="col-md-8 col-md-offset-2">
  16.                         <h2>Add Form</h2>
  17.                         <form id="addForm">
  18.                                 <hr>
  19.                                 <div class="row">
  20.                                         <div class="col-md-2">
  21.                                                 <label style="position:relative; top:7px;">Firstname:</label>
  22.                                         </div>
  23.                                         <div class="col-md-10">
  24.                                                 <input type="text" name="firstname[]" class="form-control">
  25.                                         </div>
  26.                                 </div>
  27.                                 <div style="height:10px;"></div>
  28.                                 <div class="row">
  29.                                         <div class="col-md-2">
  30.                                                 <label style="position:relative; top:7px;">Lastname:</label>
  31.                                         </div>
  32.                                         <div class="col-md-10">
  33.                                                 <input type="text" name="lastname[]" class="form-control">
  34.                                         </div>
  35.                                 </div>
  36.                                 <hr>
  37.                                 <div id="newrow"></div>
  38.                                 <div class="row">
  39.                                         <div class="col-md-12">
  40.                                                 <button type="button" id="save" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> Save</button>
  41.                                                 <button type="button" id="newbutton" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Add New</button>
  42.                                         </div>
  43.                                 </div>
  44.                         </form>
  45.                 </div>
  46.         </div>
  47. </div>
  48. <script src="custom.js"></script>
  49. </body>
  50. </html>

custom.js

This contains our AJAX and jQuery codes.
  1. $(document).ready(function(){
  2.         showTable();
  3.  
  4.         $('#newbutton').click(function(){
  5.                 $('#newrow').slideDown();
  6.                 var newrow = '<hr>';
  7.                         newrow = '<div class="row">';
  8.                         newrow += '<div class="col-md-2"><label style="position:relative; top:7px;">Firstname:</label></div>';
  9.                         newrow += '<div class="col-md-10"><input type="text" name="firstname[]" class="form-control"></div>';
  10.                         newrow += '</div>';
  11.                         newrow += '<div style="height:10px;"></div>';
  12.                         newrow += '<div class="row">';
  13.                         newrow += '<div class="col-md-2"><label style="position:relative; top:7px;">Lastname:</label></div>';
  14.                         newrow += '<div class="col-md-10"><input type="text" name="lastname[]" class="form-control"></div>';
  15.                         newrow += '</div>';
  16.                         newrow += '<hr>';                
  17.                 $('#newrow').append(newrow);   
  18.         });
  19.  
  20.         $('#save').click(function(){
  21.                 var addForm = $('#addForm').serialize();
  22.                 $.ajax({
  23.                         type: 'POST',
  24.                         url: 'add.php',
  25.                         data: addForm,
  26.                         success:function(data){
  27.                                 if(data==''){
  28.                                         showTable();
  29.                                         $('#addForm')[0].reset();
  30.                                         $('#newrow').slideUp();
  31.                                         $('#newrow').empty();
  32.                                 }
  33.                                 else{
  34.                                         showTable();
  35.                                         $('#addForm')[0].reset();
  36.                                         $('#newrow').slideUp();
  37.                                         $('#newrow').empty();
  38.                                         alert('Rows with empty field are not added');
  39.                                 }
  40.                                
  41.                         }
  42.                 });
  43.         });
  44.  
  45. });
  46.  
  47. function showTable(){
  48.         $.ajax({
  49.                 type: 'POST',
  50.                 url: 'fetch.php',
  51.                 data:{
  52.                         fetch: 1,
  53.                 },
  54.                 success:function(data){
  55.                         $('#table').html(data);
  56.                 }
  57.         });
  58. }

fetch.php

This is our code in fetching our sample table.
  1. <?php
  2.         include('conn.php');
  3.         if(isset($_POST['fetch'])){
  4.                 ?>
  5.                         <table class="table table-bordered table-striped">
  6.                                 <thead>
  7.                                         <th>Firstname</th>
  8.                                         <th>Lastname</th>
  9.                                 </thead>
  10.                                 <tbody>
  11.                                         <?php
  12.                                                 include('conn.php');
  13.                                                 $query=$conn->query("select * from member");
  14.                                                 while($row=$query->fetch_array()){
  15.                                                         ?>
  16.                                                         <tr>
  17.                                                                 <td><?php echo $row['firstname']; ?></td>
  18.                                                                 <td><?php echo $row['lastname']; ?></td>
  19.                                                         </tr>
  20.                                                         <?php
  21.                                                 }
  22.                                         ?>
  23.                                 </tbody>
  24.                         </table>
  25.                 <?php
  26.         }
  27.  
  28. ?>

add.php

Lastly, this is our code in adding new row into our database.
  1. <?php
  2.         include('conn.php');
  3.         if(isset($_POST['firstname'])){
  4.                 $firstname = $_POST["firstname"];
  5.                 $lastname = $_POST["lastname"];
  6.  
  7.                 for($count = 0; $count<count($firstname); $count++){
  8.                         $firstname_clean = mysqli_real_escape_string($conn, $firstname[$count]);
  9.                         $lastname_clean = mysqli_real_escape_string($conn, $lastname[$count]);
  10.  
  11.                         if($firstname_clean != '' && $lastname_clean != ''){
  12.                                 $conn->query("insert into member (firstname, lastname) values ('".$firstname_clean."', '".$lastname_clean."')");
  13.                         }
  14.                         else{
  15.                                 echo "1";
  16.                         }
  17.                 }
  18.         }
  19.  
  20. ?>
That ends this tutorial. If you have any questions, suggestions or comments, feel free to write it below or message me. Happy Coding :)

Add new comment