| Ratings |  | Unique User Downloads |  | Download Rankings | 
| Not enough user ratings |  | Total: 458 |  | All time:  6,105 This week: 206  | 
|  | 
| Description |  | Author | 
| This class can synchronize tables between two database using PDO.
 It can connect to a origin database and query the records of a given database table.
 
 Then the class connects to a destination database and inserts the table records retrieved from the origin database table
 
 Optionally the class can take a backup of the database tables to a file in a backup directory. It may also delete the destination table records before the synchronization is run.
 |  | 
|  |  | Innovation award 
  Nominee: 3x
 | 
 
 | 
Recommendations
Example
| 
<?phprequire_once 'core/DBSync.config.php';
 require_once 'core/DBSync.class.php';
 
 if (isset ( $_GET ['act'] ))
 $action = strtolower ( $_GET ['act'] );
 else
 $action = "home";
 
 if ($action == "signup") {
 
 try {
 $DBSync = new DBSync ( new DBSyncConfig () );
 $queryToBeSync = "INSERT INTO users VALUES(" . rand ( 0, 1500 ) . ",'" . $_GET ['username'] . "','" . $_GET ['email'] . "')";
 // $backupTable="users;anotherTable";
 $backupTable = "users";
 $resultQuery = $DBSync->syncQuery ( $queryToBeSync, $backupTable );
 } catch ( Exception $e ) {
 print_r ( $e->getMessage () );
 }
 
 $action = "register";
 } elseif ($action == "tablesync1") {
 
 try {
 $DBSync = new DBSync ( new DBSyncConfig () );
 $tables = array ();
 foreach ( $DBSync->MASTER->query ( "SHOW TABLES" ) as $row ) {
 $tables [] = $row [0];
 }
 } catch ( Exception $e ) {
 print_r ( $e->getMessage () );
 }
 } elseif ($action == "tablesync2") {
 
 
 try {
 $DBSync = new DBSync ( new DBSyncConfig () );
 $tables = array ();
 foreach ( $DBSync->MASTER->query ( "SHOW TABLES" ) as $row ) {
 $tables [] = $row [0];
 }
 
 $backupTable = false;
 $forceDelete = true;
 $tableToBeSync = $_GET['SelectedTable'];
 $resultSync = $DBSync->syncTable ( $tableToBeSync, $forceDelete, $backupTable );
 } catch ( Exception $e ) {
 print_r ( $e->getMessage () );
 }
 }
 
 ?>
 
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8" />
 <title>PhpDbSync :: Example</title>
 <!-- Latest compiled and minified CSS -->
 <link rel="stylesheet"
 href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
 
 <style type="text/css">
 body {
 padding-top: 50px;
 }
 
 .starter-template {
 padding: 40px 15px;
 text-align: center;
 }
 
 .footer {
 position: absolute;
 bottom: 0;
 width: 100%;
 /* Set the fixed height of the footer here */
 height: 60px;
 background-color: #f5f5f5;
 }
 
 .form-signin {
 max-width: 330px;
 padding: 15px;
 margin: 0 auto;
 }
 
 .form-signin .form-signin-heading, .form-signin .checkbox {
 margin-bottom: 10px;
 }
 
 .form-signin .checkbox {
 font-weight: normal;
 }
 
 .form-signin .form-control {
 position: relative;
 height: auto;
 -webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
 box-sizing: border-box;
 padding: 10px;
 font-size: 16px;
 }
 
 .form-signin .form-control:focus {
 z-index: 2;
 }
 
 .form-signin input[type="email"] {
 margin-bottom: -1px;
 border-bottom-right-radius: 0;
 border-bottom-left-radius: 0;
 }
 
 .form-signin input[type="password"] {
 margin-bottom: 10px;
 border-top-left-radius: 0;
 border-top-right-radius: 0;
 }
 
 footer {
 background-color: #333;
 color: grey;
 padding: 5px 5px 5px 5px;
 width: 100%;
 bottom: 0;
 position: fixed;
 }
 </style>
 
 <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
 <script
 src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <!-- Latest compiled and minified JavaScript -->
 <script
 src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
 
 </head>
 <body>
 
 <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
 <div class="container">
 <div class="navbar-header">
 <button type="button" class="navbar-toggle collapsed"
 data-toggle="collapse" data-target="#navbar" aria-expanded="false"
 aria-controls="navbar">
 <span class="sr-only">Nav</span> <span class="icon-bar"></span> <span
 class="icon-bar"></span> <span class="icon-bar"></span>
 </button>
 <a class="navbar-brand" href="?act=home">Php DbSync</a>
 </div>
 <div id="navbar" class="collapse navbar-collapse">
 <ul class="nav navbar-nav">
 <li <?php ($action=='register')? print_r ("class='active'"):''; ?>><a
 href="?act=register">Example::Registration User</a></li>
 <li
 <?php ($action=='tablesync1' || $action=='tablesync2')? print_r ("class='active'"):''; ?>><a
 href="?act=tablesync1">Example::Table Sync</a></li>
 </ul>
 </div>
 <!--/.nav-collapse -->
 </div>
 </nav>
 <?php if($action=='home'){?>
 <div class="container">
 <div class="starter-template">
 <h1>Php DbSync v1.0</h1>
 <p class="lead">Quick start use.</p>
 </div>
 </div>
 <!-- /.container -->
 <h2>What you need :</h2>
 <ol>
 <li>To run the examples you will need to create the db as follows.<br />
 <b>Note: it is not mandatory to use all of the db, but remember to
 update your configuration file appropriately</b><br /> <br /> <br />
 Mysql DB MASTER NAME : <b>master</b><br /> Mysql DB SLAVE NAME : <b>slave</b><br />
 Sqlite DB SLAVE NAME : <b>slavelite</b><br /> Oracle DB SLAVE NAME :
 <b>slave (remember to insert in you tnsnames.ora this connection &
 edit the configuration file)</b><br /> <br /> Create these tables in
 each of the db:<br /> Table "Users":<br /> <br />
 <h3>Mysql</h3> <b><i>CREATE TABLE IF NOT EXISTS `users` (<br /> `ID`
 int(11) ,<br /> `NAME` varchar(50) ,<br /> `EMAIL` varchar(250) ,<br />
 PRIMARY KEY (`ID`)<br /> )
 </i></b><br /> <br />
 <h3>Sqlite</h3> <b><i>CREATE TABLE IF NOT EXISTS `users`<br /> (<br />
 id INTEGER PRIMARY KEY,<br /> name TEXT,<br /> email TEXT<br /> )
 </i></b><br /> <br />
 <h3>Oracle</h3> <b><i>CREATE TABLE users<br /> ( id number(11) ,<br />
 name varchar2(50) ,<br /> email varchar2(250)<br /> );
 </i></b><br /> <br />
 </li>
 <br />
 <li>Edit the configuration file <b>"DBSync.config.php"</b>
 <ul>
 <li>Edit your Master database connection configuration</li>
 <li>Edit your slaves database connection configuration</li>
 <li>Edit your backup strategy <br /> <i>"0" => no backup</i><br /> <i>"1"
 => master only backup</i><br /> <i>"ALL" => backup all db</i></li>
 <li>Edit your backup folder</li>
 </ul>
 
 </li>
 
 </ol>
 <br/><br/><br/><br/><br/>
 <?php }elseif($action=="register"){ ?>
 
 <div class="container">
 
 <form class="form-signin" role="form">
 <h2 class="form-signin-heading">Sign up</h2>
 <input type="text" name="username" class="form-control"
 placeholder="User Name" required autofocus> <input type="email"
 name="email" class="form-control" placeholder="Email address"
 required autofocus> <input type="hidden" name="act" value="signup" />
 <button class="btn btn-lg btn-primary btn-block" type="submit">Sign
 up</button>
 </form>
 
 </div>
 <!-- /container -->
 
 
 <?php
 
 if (isset ( $resultQuery )) {
 echo "<pre>Query result: ";
 print_r ( $resultQuery );
 echo "</pre>";
 }
 } else {
 ?>
 
 <div class="container">
 <form class="form-signin" role="form" method="get">
 <h2 class="form-signin-heading">Select the table you want sync:</h2>
 <select class="checkbox" name="SelectedTable">
 <?php
 
 foreach ( $tables as $table ) {
 echo "<option>$table</option>";
 }
 ?>
 </select> <input type="hidden" name="act" value=tablesync2 />
 <button class="btn btn-lg btn-primary btn-block" type="submit">Sync
 this table</button>
 </form>
 </div>
 <!-- /container -->
 
 
 
 <?php if(isset($resultSync)){echo "<pre>Table Sync Result:"; print_r($resultSync);echo "</pre>";} }?>
 
 <footer>
 ©2014 PhpDbSync created by <a
 href="http://www.phpclasses.org/browse/author/1167622.html">Ettore
 Moretti</a>
 </footer>
 </body>
 </html>
 
 | 
Details
PhpDatabaseSync
This class allows you to execute queries synchronized on various database (also of different types)  and\or synchronize entire tables on different databases.  You'll also get a chance to create backups before every launch.
See the file HowInvoke.php for more information
|  | Applications that use this package |  | 
No pages of applications that use this class were specified.
 If you know an application of this package, send a message to the author to add a link here.
 If you know an application of this package, send a message to the author to add a link here.