Use JSON As Database Using PHP



Use JSON As Database Using PHP | Tutorial

FINAL OUTPUT:

Hello Friends, today we are going to create a simple email list management application using php. We will use JSON as Database using php.
To achieve this task, just follow these simple steps.

 

Step 1.

Create a structure :
root:
–ajaxcall(folder)
–js(folder)
–vendor(folder)
–index.php

Create root folder under the server folder name with JSON database.

Now create a file index.php and write the following code under it.

<!doctype html>
<html class="no-js" lang="en" itemscope itemtype="http://schema.org/Movie">
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, max-scale=1.0"/>
    <title>Json database</title>
    <link href="../css/pure-min.css" rel="stylesheet" type="text/css">
    <link href="../css/grids-responsive-min.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" href="../css/bootstrap.min.css">
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
    <link href="../css/styles.css" rel="stylesheet" type="text/css">
    <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22..%2Fjs%2Fjquery-2.1.3.min.js%22%20type%3D%22text%2Fjavascript%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
    <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22%2F%2Fmaxcdn.bootstrapcdn.com%2Fbootstrap%2F3.3.2%2Fjs%2Fbootstrap.min.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
    <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22http%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fparsley.js%2F2.0.4%2Fparsley.min.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css" />
    <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fjqueryui%2F1.11.3%2Fjquery-ui.min.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
     
 
</head>
<body>

<div class="header">
    <a href="../customize.php?template=announcement"><img src="../images/email.png" width="48"/>Json database Email List</a>
</div>


<div class="container-fluid">

<div class="row">

<div class="col-md-2">

<h3>Groups</h3>


<hr>


<div class="table-responsive loadgrp">

<table class="table table-hover">

<tr>

<th>Name</th>


<th>Action</th>

</tr>


<tr>

<td>Group 1</td>


<td><a href="#"><i class="fa fa-pencil-square-o"></i></a>&nbsp;&nbsp;&nbsp;
                                &nbsp;<a href="#"><i class="fa fa-times"></i></a></td>


</tr>

</table>

</div>

</div>


<div class="col-md-6">

<h3>Email</h3>


<hr>


<div class="table-responsive loademail">

<h4 class="text-info">Choose a group to see email list</h4>

</div>

</div>


<div class="col-md-4">

<h3>Actions</h3>


<hr>


<form id="frmgrpadd">

<h3>Add Group</h3>


<div class="grpres dismiss"></div>


<div class="form-group" id="par-group">
	<small><b>Group name:</b></small>
	<input class="form-control input-sm" id="input-grp" type="text" name="group" required data-parsley-error-message="" data-parsley-errors-container="#par-group" data-parsley-class-handler="#par-group">
	
	<input type="hidden" name="grpadd" value="1">
	<input class="btn- btn-block btn-sm" type="submit" id="btn-grpadd" value="submit" name="grpadd">
</div>

</form>


<form id="frmemailadd" method="POST">

<h3>Add Email</h3>

    


<div class="emailres dismiss"></div>


<div class="form-group" id="par-select">
	<small><b>Group name:</b></small>
	<select class="form-control input-sm" id="select-grp" name="group_id" required data-parsley-error-message="" data-parsley-errors-container="#par-select" data-parsley-class-handler="#par-select">
<option value="">select</option>
	</select>
</div>


<div class="form-group" id="par-pname">
	<small><b>Person Name:</b></small>
	<input class="form-control input-sm" id="input-name" type="text" name="name" required data-parsley-error-message="" data-parsley-errors-container="#par-pname" data-parsley-class-handler="#par-pname">
</div>


<div class="form-group" id="par-emailid">
	<small><b>Email ID:</b></small>
	<input class="form-control input-sm" id="input-email" type="email" name="email" required data-parsley-error-message="" data-parsley-errors-container="#par-emailid" data-parsley-class-handler="#par-emailid">
</div>

<input type="hidden" name="emailadd" value="1">
    <input class="btn- btn-block btn-sm" type="submit" id="btn-emailadd" value="submit" name="emailadd">
</form>

</div>

</div>

</div>

<!-- Modal -->

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>

<h4 class="modal-title" id="myModalLabel">Edit record</h4>

</div>


<div class="modal-body modal-grp-edit">
</div>


<div class="modal-footer"></div>

</div>

</div>

</div>

<!--jquery confirm box-->    
<a class="confirmLink" href="#"></a>


<div id="dialog" title="Confirmation Required">
  Are you sure to delete?
</div>

     
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22js%2Fmain.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
     
</body>

 

Step 2.

Now create following file under the folder ajax call.
email_edit.php
fetch.php
group_edit.php
and write the following code in fetch.php or copy the code and paste in it.

<?php //fetch.php //error_reporting(0); define('LAZER_DATA_PATH', realpath(dirname(__FILE__)).'/data/'); require_once '../vendor/autoload.php'; use Lazer\Classes\Database as Lazer; //if table does not exists create try{ \Lazer\Classes\Helpers\Validate::table('email')->exists();
} catch(\Lazer\Classes\LazerException $e){
Lazer::create('email', array(
    'name' => 'string',
    'email' => 'string',
    'group_id' => 'integer'
));
}
 
//if table does not exists create
 
try{
\Lazer\Classes\Helpers\Validate::table('group')->exists();
}catch(\Lazer\Classes\LazerException $e){
 Lazer::create('group', array(
    'name' => 'string',
));   
}
$email = Lazer::table('email');
$group = Lazer::table('group'); 
 
//Fetch all groups
if(isset($_POST['fetchgrp'])): ?>

<table class="table table-hover">

<tr>

<th>Name</th>


<th>Action</th>

</tr>

    <?php $group_result = Lazer::table('group')->findAll(); ?>
    <?php if(count($group_result)> 0){ ?>
    <?php foreach ($group_result as $grp): ?>

<tr>

<td  class="viewlist" tid="<?php echo $grp->id ?>"><?php echo $grp->name ?></td>


<td><a href="#" data-url="ajaxcall/group_edit.php?id=<?php echo $grp->id?>" class="btn-update" data-toggle="modal" data-target="#myModal"><i class="fa fa-pencil-square-o"></i></a>&nbsp;&nbsp;&nbsp;
        &nbsp;<a href="#" class="delgrp" data-id="<?php echo $grp->id  ?>"><i class="fa fa-times"></i></a>
</td>

</tr>

    <?php endforeach; ?>
    <?php }else{echo'No Record Found';}?>
</table>


<?php endif; //Fetch all email relates to particular group if(isset($_POST['fetchemail'])):?>
 
<?php $id = $_POST['fetchemail'] ; $email_result = Lazer::table('email')->where('group_id', '=', $id)->findAll();
//            $email_result = Lazer::table('email')->findAll();
//      var_dump($email_result);
?>
  


<table class="table table-hover">

<tr>

<th>Name</th>


<th>Email</th>


<th>Action</th>

</tr>

    <?php if(count($email_result)> 0){ ?>
    <?php foreach ($email_result as $em): ?>

<tr>

<td><?php echo $em->name ?></td>


<td><?php echo $em->email ?></td>


<td><a href="#" data-url="ajaxcall/email_edit.php?id=<?php echo $em->id?>" class="btn-update" data-toggle="modal" data-target="#myModal"><i class="fa fa-pencil-square-o"></i></a>&nbsp;&nbsp;&nbsp;
            &nbsp;<a href="#" class="delemail" data-id="<?php echo $em->id ?>"><i class="fa fa-times"></i></a>
</td>

</tr>

    <?php endforeach; ?>
    <?php }else{echo 'No Record Found';}?>
</table>


<?php endif; //Delete email if(isset($_POST['deleteemail'])): $id = $_POST['deleteemail'] ; Lazer::table('email')->find($id)->delete();
 
endif;
 
//Delete Group
if(isset($_POST['deletegroup'])):
    $id = $_POST['deletegroup'] ;
    Lazer::table('group')->find($id)->delete(); 
    //check whether email are exists or not to related group
    if(emailExists($id)){
        Lazer::table('email')->where('group_id', '=', $id)->find()->delete();
    }
endif;
 
//Update email record
if(isset($_POST['recordupdate'])): 
$id= $_POST['id'];
$grp_id = intval($_POST['group_id']);
$name = $_POST['name'];
$email_id = $_POST['email'];
    $row = Lazer::table('email')->find($id);
    $row->name = $name;
    $row->email = $email_id;
    $row->group_id = $grp_id;
    $row->save();
    echo'


<div class="alert alert-success">Record updated successfully</div>



';
endif;
 
//Update group record
if(isset($_POST['groupupdate'])): 
    $id= $_POST['id'];
    $name = $_POST['group'];
    $row = Lazer::table('group')->find($id);
    $row->name = $name;
    $row->save();
    echo'


<div class="alert alert-success">Record updated successfully</div>



';
endif;
 
//Add new group
if(isset($_POST['grpadd'])):
    $name =  (string)trim($_POST['group']);
    if($name){
    $group->name = $name;
    $group->save();
    echo '


<div class="alert alert-success text-center" style="padding: 5px">Record Added Successfully</div>

';
    }
    else{
        echo '
<div class="alert alert-warning text-center" style="padding: 5px">Invalid group</div>

';
    }
endif;
 
//Add new email Record
if(isset($_POST['emailadd'])):
$group = intval($_POST['group_id']);
$name = $_POST['name'];
$email_id = $_POST['email'];
if(!empty($group)){
        if(!empty($name)){
            if(!empty($email)){
                    $email->name = $name;
                    $email->email = $email_id;
                    $email->group_id = $group;
                    $email->save();
                    echo '
<div class="alert alert-success text-center" style="padding: 5px">One record added Successfully</div>

';
                }
            else{
                echo '
<div class="alert alert-warning text-center" style="padding: 5px">Invalid Email</div>

';
            }
        }
        else{
            echo '
<div class="alert alert-warning text-center" style="padding: 5px">Invalid user name</div>

';
        }
}
else{
    echo '
<div class="alert alert-warning text-center" style="padding: 5px">Invalid group</div>

';
}
endif;
 
//Populate select box
if(isset($_POST['populateSelect'])):    
$group_result = Lazer::table('group')->findAll();  ?>
<option value="">Select</option>
<?php foreach ($group_result as $re):?>
<option value="<?php echo $re->id?>"><?php echo $re->name?></option>
<?php endforeach; endif; //Fetch recipients email from relared group if(isset($_GET['fetchRecipients'])): $id = $_GET['fetchRecipients'] ; $email_result = Lazer::table('email')->where('group_id', '=', $id)->findAll();
    $emails = array();
    foreach ($email_result as $em){
        $emails[] = $em->email;
    }
    echo implode(',', $emails);
endif;
 
 
//Function for check whether email record exists or not for particular record
function emailExists($id){
  $row = Lazer::table('email')->where('group_id', '=', $id)->findAll()->count();
  return $row;
}
  
exit;
?>

Now copy and paste the following code in email_edit.php

<?php define('LAZER_DATA_PATH', realpath(dirname(__FILE__)).'/data/'); require_once '../vendor/autoload.php'; use Lazer\Classes\Database as Lazer; $id= intval($_GET['id']); $email = Lazer::table('email')->limit(1)->find($id);
$group_result = Lazer::table('group')->findAll();
?>

<form id="frmemailupdate">

<div class="response">
    </div>


<div class="form-group">
        <small><b>Group name:</b></small>
        <select class="form-control input-sm" id="select-grp1" name="group_id">
            <?php foreach ($group_result as $re):?>
<option value="<?php echo $re->id?>"><?php echo $re->name?></option>
            <?php endforeach; ?>
        </select>
    </div>


<div class="form-group" id="par-name">
	<small><b>Person Name:</b></small>
	<input class="form-control input-sm" id="input-name" type="text" name="name" value="<?php echo $email->name ?>" required data-parsley-error-message="" data-parsley-errors-container="#par-name" data-parsley-class-handler="#par-name">
</div>


<div class="form-group" id="par-email">
	<small><b>Email ID:</b></small>
	<input class="form-control input-sm" id="input-email" type="email" name="email" value="<?php echo $email->email ?>" required data-parsley-error-message="" data-parsley-errors-container="#par-email" data-parsley-class-handler="#par-email">
</div>

        <input type="hidden" name="id" value="<?php echo $id ?>">
        <input type="hidden" name="recordupdate" value="1">
        <input class="btn- btn-block btn-sm" type="submit" id="emailupdate" value="save" name="emailupdate">
</form>

 
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0A%20%20%20%20%24(document).ready(function%20()%7B%0A%20%20%20%20%20%20%20%20%24(%22%23select-grp1%22).val(%3C%3Fphp%20echo%20%24email-%3Egroup_id%20%3F%3E)%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%24('%23frmemailupdate').parsley(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20successClass%3A%20'has-success'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorClass%3A%20'has-error'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20uiEnabled%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errors%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20classHandler%3A%20function(el)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20el.parent()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20these%20to%20empty%20to%20make%20sure%20the%20default%20Parsley%20elements%20are%20not%20rendered%0A%20%20%20%20%20%20%20%20%20%20%20%20errorsWrapper%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorElem%3A%20''%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorsWrapper%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorElem%3A%20''%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%24(%22%23frmemailupdate%22).submit(function%20(e)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24.ajax(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20url%3A%20%22ajaxcall%2Ffetch.php%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%3A%20%24(this).serialize()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%22POST%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D).done(function(res)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24(%22.response%22).html(res)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.location.reload()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%7D)%3B%0A%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />

 

Now copy and paste the following code in group_edit.php

<?php define('LAZER_DATA_PATH', realpath(dirname(__FILE__)).'/data/'); require_once '../vendor/autoload.php'; use Lazer\Classes\Database as Lazer; $id = intval($_GET['id']); $group = Lazer::table('group')->find($id);
?>

<form id="frmgrpupdate" method="POST">

<div class="response">
    </div>


<div class="form-group" id="par-name">
        <small><b>Group name:</b></small>
        <input class="form-control input-sm" id="input-grp" type="text" name="group" value="<?php echo $group->name?>" required data-parsley-error-message="" data-parsley-errors-container="#par-name" data-parsley-class-handler="#par-name" >
        <input type="hidden" name="id" value="<?php echo $id?>">
        
        <input type="hidden" name="groupupdate" value="1">
        <input class="btn- btn-block btn-sm" type="submit" id="btn-grpupdate" value="save" name="grpupdate">
    </div>

</form>

 
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0A%20%20%20%20%24(document).ready(function%20()%7B%0A%20%20%20%20%20%20%20%20%24('%23frmgrpupdate').parsley(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20successClass%3A%20'has-success'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorClass%3A%20'has-error'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20uiEnabled%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errors%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20classHandler%3A%20function(el)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20el.parent()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20these%20to%20empty%20to%20make%20sure%20the%20default%20Parsley%20elements%20are%20not%20rendered%0A%20%20%20%20%20%20%20%20%20%20%20%20errorsWrapper%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorElem%3A%20''%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorsWrapper%3A%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20errorElem%3A%20''%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%24(%22%23frmgrpupdate%22).submit(function%20(e)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24.ajax(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20url%3A%20%22ajaxcall%2Ffetch.php%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%3A%20%24(this).serialize()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%22POST%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D).done(function(res)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24(%22.response%22).html(res)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getGroup()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20populateSelect()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%7D)%3B%0A%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />

 

Don’t forget to share your doubts in the comment box and also share this post on social media and with your friends becaus“You share, I share, let’s make the world aware”.

You may want to take a look at the following related posts:

Also for more awesome tutorials, please don’t forget to like our facebook page TryCatch Classes.

Bonus: We also give training on following topics:

                      1. Codeigniter Training  in Mumbai .

2. Web Designing Training in Mumbai.

3. Bootstrap Training Course in Mumbai.

4. UI / UX Training.

5. IOS Training Institute in Mumbai.