Monday, April 30, 2018

html table to excel js

<!-- using plugin with image -->
<!DOCTYPE html>
<html>
<head>
<title>jQuery Boilerplate</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="jquery.table2excel.js"></script> <!-- https://github.com/rainabba/jquery-table2excel -->
</head>
<body>
<table class="table2excel" data-tableName="Test Table 1">
<thead>
<tr class="noExl"><td>This shouldn't get exported</td><td>This shouldn't get exported either</td></tr>
<tr><td>This Should get exported as a header</td><td>This should too</td></tr>
</thead>
<tbody>
<tr>
<td>data1a with a <a href="#">link one</a> and <a href="#">link two</a>.</td>
<td>data1b with a <img src="image_file.jpg" alt="image">.</td></tr>
<tr>
<td>data2a with a <input tyle="text" value="text value">.</td>
<td>data2b with a <input tyle="text" value="second text value">.</td>
</tr>
</tbody>
<tfoot>
<tr><td colspan="2">This footer spans 2 cells</td></tr>
</tfoot>
</table>

<table class="table2excel" data-tableName="Test Table 2">
<thead>
<tr class="noExl"><td>This shouldn't get exported</td><td>This shouldn't get exported either</td></tr>
<tr><td>This Should get exported as a header</td><td>This should too</td></tr>
</thead>
<tbody>
<tr><td>data1a</td><td>data1b</td></tr>
<tr><td>data2a</td><td>data2b</td></tr>
</tbody>
<tfoot>
<tr><td colspan="2">This footer spans 2 cells</td></tr>
</tfoot>
</table>

<script>
$(function() {
$(".table2excel").table2excel({
exclude: ".noExl",
name: "Excel Document Name",
filename: "myFileName" + new Date().toISOString().replace(/[\-\:\.]/g, ""),
fileext: ".xls",
exclude_img: true,
exclude_links: true,
exclude_inputs: true
});
});
</script>
</body>
</html>

// using js
<!DOCTYPE html>
<html>
<head>
    <title>html table to excel</title>

    <script type="text/javascript">
        var tableToExcel = (function () {
            var uri = 'data:application/vnd.ms-excel;base64,'
                ,
                template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>'
                , base64 = function (s) {
                    return window.btoa(unescape(encodeURIComponent(s)))
                }
                , format = function (s, c) {
                    return s.replace(/{(\w+)}/g, function (m, p) {
                        return c[p];
                    })
                }
            return function (table, name) {
                if (!table.nodeType) table = document.getElementById(table)
                var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
                window.location.href = uri + base64(format(template, ctx))
            }
        })()
    </script>
    <style>
        table {
            empty-cells: show;
            border: 1px solid #000;
        }

        table td,
        table th {
            min-width: 2em;
            min-height: 2em;
            border: 1px solid #000;
        }
    </style>
</head>
<body>

    <input type="button" onclick="tableToExcel('testTable', 'W3C Example Table')" value="Export to Excel">

<table  id="testTable">
    <tr>
        <td>
            Table heading
        </td>
    </tr>
    <tr>
        <td>
                <table>
        <thead>
        <tr>
            <th rowspan="2"></th>
            <th colspan="4">&nbsp;</th>
        </tr>
        <tr>
            <th>I</th>
            <th>II</th>
            <th>III</th>
            <th>IIII</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td></td>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
        </tr>
        <tr>
            <td>a</td>
            <td>1a</td>
            <td>2a</td>
            <td>3a</td>
            <td>a4</td>
        </tr>
        </tbody>
    </table>
        </td>
    </tr>
    <tr>
        <td>
                <table>
        <thead>
        <tr>
            <th rowspan="2"></th>
            <th colspan="4">&nbsp;</th>
        </tr>
        <tr>
            <th>I</th>
            <th>II</th>
            <th>III</th>
            <th>IIII</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td></td>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
        </tr>
        <tr>
            <td>a</td>
            <td>1a</td>
            <td>2a</td>
            <td>3a</td>
            <td>a4</td>
        </tr>
        </tbody>
    </table>
        </td>
    </tr>
</table>

    </body>
</html>



// form data to excel
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script type="text/javascript">

            $('input:radio').live('change', function(){
        var sstrSect = ($(this).attr('name').substr([3]));
    var comFldId = ("C" + sstrSect);
        if ($(this).val() == "NOK"){
            document.getElementById(comFldId).style.display = '';
        } else {
            document.getElementById(comFldId).style.display = 'none';
        }
    });

    $('input[type="radio"]:checked').each(function() {
        var sstrSect = ($(this).attr('name').substr([3]));
        var comFldId = ("C" + sstrSect);
            if ($(this).val() == "NOK"){
                document.getElementById(comFldId).style.display = '';
            } else {
                document.getElementById(comFldId).style.display = 'none';
            }
        });


function toExcel() {

    if ("ActiveXObject" in window) {
        alert("This is Internet Explorer!");
    } else {

        var cache = {};
        this.tmpl = function tmpl(str, data) {
            var fn = !/\W/.test(str) ? cache[str] = cache[str] || tmpl(document.getElementById(str).innerHTML) :
            new Function("obj",
                         "var p=[],print=function(){p.push.apply(p,arguments);};" +
                         "with(obj){p.push('" +
                         str.replace(/[\r\t\n]/g, " ")
                         .split("{{").join("\t")
                         .replace(/((^|}})[^\t]*)'/g, "$1\r")
                         .replace(/\t=(.*?)}}/g, "',$1,'")
                         .split("\t").join("');")
                         .split("}}").join("p.push('")
                         .split("\r").join("\\'") + "');}return p.join('');");
            return data ? fn(data) : fn;
        };
        var tableToExcel = (function () {
            var uri = 'data:application/vnd.ms-excel;base64,',
                template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{{=worksheet}}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>{{for(var i=0; i<tables.length;i++){ }}<table>{{=tables[i]}}</table>{{ } }}</body></html>',
                base64 = function (s) {
                    return window.btoa(unescape(encodeURIComponent(s)));
                },
                format = function (s, c) {
                    return s.replace(/{(\w+)}/g, function (m, p) {
                        return c[p];
                    });
                };
            return function (tableList, name) {
                if (!tableList.length > 0 && !tableList[0].nodeType) table = document.getElementById(table);
                var tables = [];
                for (var i = 0; i < tableList.length; i++) {
                    tables.push(tableList[i].innerHTML);
                }
                var ctx = {
                    worksheet: name || 'Worksheet',
                    tables: tables
                };
                window.location.href = uri + base64(tmpl(template, ctx));
            };
        })();
        //tableToExcel(document.getElementsByTagName("table"), "one");
        tableToExcel(document.getElementsByClassName("testTable"), "one");
    }
}
    </script>
</head>
<body>
<input id="ExporttoExcel" class="show" type="button" onclick="toExcel()" value="Export to Excel">
<table class="testTable">
    <thead>
    <tr>
        <th rowspan="2"></th>
        <th colspan="4">&nbsp;</th>
    </tr>
    <tr>
        <th>I</th>
        <th>II</th>
        <th>III</th>
        <th>IIII</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td colspan="5">
            <table>
                <thead>
                <tr>
                    <th rowspan="2"></th>
                    <th colspan="4">&nbsp;</th>
                </tr>
                <tr>
                    <th>I</th>
                    <th>II</th>
                    <th>III</th>
                    <th>IIII</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td></td>
                    <td>1</td>
                    <td>2</td>
                    <td>3</td>
                    <td>4</td>
                </tr>
                <tr>
                    <td>a</td>
                    <td>1a</td>
                    <td>2a</td>
                    <td>3a</td>
                    <td>a4</td>
                </tr>
                </tbody>

            </table>
        </td>
    </tr>
    <tr>
        <td colspan="5">
            <table>
                <thead>
                <tr>
                    <th rowspan="2"></th>
                    <th colspan="4">&nbsp;</th>
                </tr>
                <tr>
                    <th>I</th>
                    <th>II</th>
                    <th>III</th>
                    <th>IIII</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td></td>
                    <td>1</td>
                    <td>2</td>
                    <td>3</td>
                    <td>4</td>
                </tr>
                <tr>
                    <td>a</td>
                    <td>1a</td>
                    <td>2a</td>
                    <td>3a</td>
                    <td>a4</td>
                </tr>
                </tbody>

            </table>
        </td>
    </tr>
    </tbody>
</table>

</body>
</html>


// multiple sheets

<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/plain; charset=UTF-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Admin Panel</title>
<script type="text/javascript" >
  var tablesToExcel = (function() {
   var uri = 'data:application/vnd.ms-excel;base64,'
   , tmplWorkbookXML = '<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">'
     + '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author>Axel Richter</Author><Created>{created}</Created></DocumentProperties>'
     + '<Styles>'
     + '<Style ss:ID="Currency"><NumberFormat ss:Format="Currency"></NumberFormat></Style>'
     + '<Style ss:ID="Date"><NumberFormat ss:Format="Medium Date"></NumberFormat></Style>'
     + '</Styles>'
     + '{worksheets}</Workbook>'
   , tmplWorksheetXML = '<Worksheet ss:Name="{nameWS}"><Table>{rows}</Table></Worksheet>'
   , tmplCellXML = '<Cell{attributeStyleID}{attributeFormula}><Data ss:Type="{nameType}">{data}</Data></Cell>'
   , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
   , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
   return function(tables, wsnames, wbname, appname) {
     var ctx = "";
     var workbookXML = "";
     var worksheetsXML = "";
     var rowsXML = "";
     for (var i = 0; i < tables.length; i++) {
       if (!tables[i].nodeType) tables[i] = document.getElementById(tables[i]);
       for (var j = 0; j < tables[i].rows.length; j++) {
         rowsXML += '<Row>'
         for (var k = 0; k < tables[i].rows[j].cells.length; k++) {
           var dataType = tables[i].rows[j].cells[k].getAttribute("data-type");
           var dataStyle = tables[i].rows[j].cells[k].getAttribute("data-style");
           var dataValue = tables[i].rows[j].cells[k].getAttribute("data-value");
           dataValue = (dataValue)?dataValue:tables[i].rows[j].cells[k].innerHTML;
           var dataFormula = tables[i].rows[j].cells[k].getAttribute("data-formula");
           dataFormula = (dataFormula)?dataFormula:(appname=='Calc' && dataType=='DateTime')?dataValue:null;
           ctx = {  attributeStyleID: (dataStyle=='Currency' || dataStyle=='Date')?' ss:StyleID="'+dataStyle+'"':''
                  , nameType: (dataType=='Number' || dataType=='DateTime' || dataType=='Boolean' || dataType=='Error')?dataType:'String'
                  , data: (dataFormula)?'':dataValue
                  , attributeFormula: (dataFormula)?' ss:Formula="'+dataFormula+'"':''
                 };
           rowsXML += format(tmplCellXML, ctx);
         }
         rowsXML += '</Row>'
       }
       ctx = {rows: rowsXML, nameWS: wsnames[i] || 'Sheet' + i};
       worksheetsXML += format(tmplWorksheetXML, ctx);
       rowsXML = "";
     }
     ctx = {created: (new Date()).getTime(), worksheets: worksheetsXML};
     workbookXML = format(tmplWorkbookXML, ctx);
     var link = document.createElement("A");
     link.href = uri + base64(workbookXML);
     link.download = wbname || 'Workbook.xls';
     link.target = '_blank';
     document.body.appendChild(link);
     link.click();
     document.body.removeChild(link);
   }
 })();
</script>
</head>
<body>
<table id="tbl1" class="table2excel">
        <tr>
            <td>Product</td>
            <td>Price</td>
            <td>Available</td>
            <td>Count</td>
        </tr>
        <tr>
            <td>Bred</td>
            <td>1</td>
            <td>2</td>
             <td>3</td>
        </tr>
        <tr>
            <td>Butter</td>
            <td>4   </td>
            <td>5   </td>
            <td >6  </td>
        </tr>
  </table>
<hr>
  <table id="tbl2" class="table2excel">
        <tr>
            <td>Product</td>
            <td>Price</td>
            <td>Available</td>
            <td>Count</td>
        </tr>
        <tr>
            <td>Bred</td>
            <td>7</td>
            <td>8</td>
            <td>9</td>
        </tr>
        <tr>
            <td>Butter</td>
            <td>14</td>
            <td>15</td>
            <td >16</td>
        </tr>
    </table>
<button  onclick="tablesToExcel(['tbl1','tbl2'], ['ProductDay1','ProductDay2'], 'TestBook.xls', 'Excel')">Export to Excel</button>
</body>
</html>

Sunday, February 11, 2018

add row with sub child row

<!DOCTYPE html>
<html>
<head>
   <title>add row</title>
    <script type="text/javascript" src="multiple/jquery.min.js"></script>
</head>
<body>
<button onclick="main()">Pick</button>
<button onclick="del()">Delete</button>
<table>
   <thead>
        <tr>
            <th>select</th>
            <th>Item</th>
            <th>Sub Item</th>
        </tr>
    </thead>
    <tbody id="tbl">
        <tr>
            <td><input data-child="0" type="checkbox" name="ids[1]" id="ids_1"></td>
            <td><input type="text" name="item[1]" id="item_1"></td>
            <td>
                <input type="text" name="subitem[1]" id="subitem_1">
                <button onclick="sub(this.id)" id="pick_1">Pick Item</button>
            </td>
        </tr>
    </tbody>
</table>
</body>
</html>
<script type="text/javascript">
    function del() {
        if(parseInt($('#tbl input[type="checkbox"]:checked').length)>0){
            var selectedCheckbox=$('#tbl input[type="checkbox"]:checked');
            $.each(selectedCheckbox,function(index,val){
                if(parseInt($(val).attr('data-child'))>0){
                    var idArr=$(val).attr('id').split('_');
                    $('input[id^="ids_'+idArr[1]+'_"]').closest('tr').remove();
                } else {
                    $(val).closest('tr').remove();
                }
            });
        } else {
            alert('please select checkbox');
        }
        $('#tbl input[type="checkbox"]:checked').closest('tr').remove();
    }
    function main() {
        var trToCopy=$('#tbl tr:first').clone();
        var lastIdArr=$('#tbl tr:last td:first input').attr('id').split('_');
        var newId=parseInt(lastIdArr[1])+1;
        $('#tbl tr:last').after(trToCopy);
        var ids=$('#tbl tr:last [id]').after();
        $.each(ids,function(index,val){
            if($(val).attr('name')){
                var name = $(val).attr('name'),
                    name=name.replace(/\[[0-9]+\]/g, '['+newId+']');
                $(val).attr('name',name);
            }
            var oldId=$(val).attr('id').slice(0,-1);
            $(val).attr('id',oldId+newId);
        });
    }
    function sub(rowId) {
        var arr = [ "ids_", "subitem_"];
        var rowIdArr=rowId.split('_');
        var rowObj=$('#tbl input[type="checkbox"][id="ids_'+rowIdArr[1]+'"]').closest('tr');
        rowObj.after(rowObj.clone());
        var ids=rowObj.next().find('input,select,button');
        var newId=parseInt($('#tbl input[type="checkbox"][id="ids_'+rowIdArr[1]+'"]:first').attr('data-child'))+1;
        $.each(ids,function(index,val){
            var oldId=$(val).attr('id').slice(0,-1);
            if($.inArray(oldId, arr )>=0){
                if($(val).attr('name')){
                    var name = $(val).attr('name');
                    $(val).attr('name',name+'['+newId+']');
                }
                var oldId=$(val).attr('id');
                $(val).attr('id',oldId+'_'+newId);
                $(val).val('');
            } else {
                $(val).remove();
            }
        });
        $('#tbl input[type="checkbox"][id="ids_'+rowIdArr[1]+'"]').attr('data-child',newId);
    }
</script>

Sunday, January 28, 2018

database backup using php

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');    // 0 or 1 set 1 if unable to download database it will show all possible errors
ini_set('max_execution_time', 0);  // setting 0 for no time limit
session_start();
define('BACKUP_DIR', './myBackups' ) ;

// to import database dump
if(isset($_POST['upload'])){
   
$filename = BACKUP_DIR.DIRECTORY_SEPARATOR.trim($_POST['dbName']);
$dbHost = 'localhost';
$dbUser = 'root';
$dbPass = '';
$dbName = 'school1';

// Define  Database Credentials
define('HOST', $dbHost ) ;
define('USER', $dbUser ) ;
define('PASSWORD', $dbPass ) ;
define('DB_NAME', $dbName ) ;

$maxRuntime = 8; // less then your max script execution limit


$deadline = time()+$maxRuntime;
$progressFilename = $filename.'_filepointer'; // tmp file for progress
$errorFilename = $filename.'_error'; // tmp file for erro


$mysqli = new mysqli(HOST , USER , PASSWORD , DB_NAME) ;
if (mysqli_connect_errno())
{
   printf("Connect failed: %s", mysqli_connect_error());
   exit();
}
/*mysql_connect($dbHost, $dbUser, $dbPass) OR die('connecting to host: '.$dbHost.' failed: '.mysql_error());
mysql_select_db($dbName) OR die('select db: '.$dbName.' failed: '.mysql_error());*/

($fp = fopen($filename, 'r')) OR die('failed to open file:'.$filename);

// check for previous error
if( file_exists($errorFilename) ){
    die('<pre> previous error: '.file_get_contents($errorFilename));
}

// activate automatic reload in browser
echo '<html><head> <meta http-equiv="refresh" content="'.($maxRuntime+2).'"><pre>';

// go to previous file position
$filePosition = 0;
if( file_exists($progressFilename) ){
    $filePosition = file_get_contents($progressFilename);
    fseek($fp, $filePosition);
}

$queryCount = 0;
$query = '';
while( $deadline>time() AND ($line=fgets($fp, 1024000)) ){
    if(substr($line,0,2)=='--' OR trim($line)=='' ){
        continue;
    }

    $query .= $line;
    if( substr(trim($query),-1)==';' ){
        //if( !mysql_query($query) ){
        if( !$mysqli->query($query) ){
            $error = 'Error performing query \'<strong>' . $query . '\': ' . mysql_error();
            file_put_contents($errorFilename, $error."\n");
            exit;
        }
        $query = '';
        file_put_contents($progressFilename, ftell($fp)); // save the current file position for
        $queryCount++;
    }
}

if( feof($fp) ){
    echo 'dump successfully restored!';
}else{
    echo ftell($fp).'/'.filesize($filename).' '.(round(ftell($fp)/filesize($filename), 2)*100).'%'."\n";
    echo $queryCount.' queries processed! please reload or wait for automatic browser refresh!';
}

}

// to delete file
if(isset($_GET['task'])&& $_GET['task']=='clear'){
    $file_name=$_GET['file'];
    $file=BACKUP_DIR.DIRECTORY_SEPARATOR.$file_name;
    if(file_exists($file)){ if(unlink($file)) $rmsg="$file_name Deleted successfully";}
    else { $rmsg="<b>$file_name </b>Not found already removed";}
}

// to dump database
if(isset($_REQUEST['submit'])){
#####################
//CONFIGURATIONS 
#####################
// Define the name of the backup directory
$backupType=trim($_POST['db_type']);
if($backupType=='hmis'){
    $host='localhost';
    $user='root';
    $password='';
    $database='gautam';
} else {
    $host='localhost';
    $user='root';
    $password='';
    $database='school';
}
//if(!empty($host)&&!empty($user)&&!empty($password)&&!empty($database))
// Define  Database Credentials
define('HOST', $host ) ;
define('USER', $user ) ;
define('PASSWORD', $password ) ;
define('DB_NAME', $database ) ;
/*
Define the filename for the sql file
If you plan to upload the  file to Amazon's S3 service , use only lower-case letters
*/
$dataset='3';
$fileName = $database.'.sql' ;
//$fileName = 'mysqlbackup--' . date('d-m-Y') . '@'.date('h.i.s').'.sql' ;
// Set execution time limit
if(function_exists('max_execution_time')) {
if( ini_get('max_execution_time') > 0 ) set_time_limit(0) ;
}

// Check if directory is already created and has the proper permissions
if (!file_exists(BACKUP_DIR)) mkdir(BACKUP_DIR , 0700) ;
if (!is_writable(BACKUP_DIR)) chmod(BACKUP_DIR , 0700) ;

// Create an ".htaccess" file , it will restrict direct accss to the backup-directory .
$content = 'Allow from all' ;
$file = new SplFileObject(BACKUP_DIR . '/.htaccess', "w") ;
$file->fwrite($content) ;

$mysqli = new mysqli(HOST , USER , PASSWORD , DB_NAME) ;
if (mysqli_connect_errno())
{
   printf("Connect failed: %s", mysqli_connect_error());
   exit();
}
 // Introduction information
$return='';
 $return .= "--\n";
$return .= "-- A Mysql Backup System \n";
$return .= "--\n";
$return .= '-- Export created: ' . date("Y/m/d") . ' on ' . date("h:i") . "\n\n\n";
$return = "--\n";
$return .= "-- Database : " . DB_NAME . "\n";
$return .= "--\n";
$return .= "-- --------------------------------------------------\n";
$return .= "-- ---------------------------------------------------\n";
$return .= 'SET AUTOCOMMIT = 0 ;' ."\n" ;
$return .= 'SET FOREIGN_KEY_CHECKS=0 ;' ."\n" ;
$tables = array() ;
// Exploring what tables this database has
$result = $mysqli->query('SHOW TABLES' ) ;
// Cycle through "$result" and put content into an array
while ($row = $result->fetch_row())
{
    $tables[] = $row[0] ;
}
// Cycle through each  table
foreach($tables as $table)
{
    // Get content of each table
    $result = $mysqli->query('SELECT * FROM '. $table) ;
    // Get number of fields (columns) of each table
    $num_fields = $mysqli->field_count  ;
    // Add table information
    $return .= "--\n" ;
    $return .= '-- Tabel structure for table `' . $table . '`' . "\n" ;
    $return .= "--\n" ;
    $return.= 'DROP TABLE  IF EXISTS `'.$table.'`;' . "\n" ;
    // Get the table-shema
    $shema = $mysqli->query('SHOW CREATE TABLE '.$table) ;
    // Extract table shema
    $tableshema = $shema->fetch_row() ;
    // Append table-shema into code
    $return.= $tableshema[1].";" . "\n\n" ;
    // Cycle through each table-row
    $totalRows=$result->num_rows;
    if($totalRows>0){
        $return .= 'INSERT INTO `'.$table .'` VALUES' ;
        $count=0;
        while($rowdata = $result->fetch_row())
        {
            $return1='';
            // Prepare code that will insert data into table
            $return1 .= ' (';
            // Extract data of each row
            for($i=0; $i<$num_fields; $i++)
            { 
            $return1 .= '"'.$mysqli->real_escape_string($rowdata[$i]) . "\"," ;
            }
            // Let's remove the last comma
            $return1 = substr("$return1", 0, -1) ;
            $return1 .= ")";
            $val[]=$return1;
            $count++;
            if($count%$dataset=='0'){
                $return2=implode(',', $val);
                unset($val);
                $return.=$return2.";\n";
                if($count<$totalRows){
                    $return .= 'INSERT INTO `'.$table .'` VALUES' ;
                }               
            }
        }
        if(isset($val) && count($val)>0){
            $return2=implode(',', $val);
            unset($val);
            $return.=$return2.";\n";
        }       
    }
 $return .= "\n\n" ;
}
// Close the connection
$mysqli->close() ;
$return .= 'SET FOREIGN_KEY_CHECKS = 1 ; '  . "\n" ;
$return .= 'COMMIT ; '  . "\n" ;
$return .= 'SET AUTOCOMMIT = 1 ; ' . "\n"  ;
//$file = file_put_contents($fileName , $return) ;

$handle = fopen(BACKUP_DIR . '/' .$fileName, 'w+');
fwrite($handle, $return);
fclose($handle);

// for zip save
/*$zip = new ZipArchive() ;
$resOpen = $zip->open(BACKUP_DIR . '/' .$fileName.".zip" , ZIPARCHIVE::CREATE) ;
if( $resOpen ){
    $zip->addFromString( $fileName , "$return" ) ;
}
$zip->close() ;
$fileSize = get_file_size_unit(filesize(BACKUP_DIR . "/". $fileName . '.zip')) ; */
// Function to append proper Unit after file-size .
}

?>
<div class="backup_main">
    <div class="main">
                    <div class="overlay"><div class="overlay-load"><div class="overlay-msg">
                      Please wait database backup is being generated. It may take a few minute depending on database size, please do not refresh or close the browser window.       
                </div></div></div>
        <fieldset><legend><h2>Database Backup</h2></legend>
            <form name="backup" id="backup" method="post">
                <div><label>HMIS Database :</label><input type="radio" name="db_type" value="hmis" checked="checked" /></div>
                <div class="cls"></div>
                <div><label>HERP Database :</label><input type="radio" name="db_type" value="herp" /></div>
                <div class="cls"></div>
                <div style="text-align: center;margin-top: 50px"><input onclick="vky(this)" type="submit" id="getdb" name="submit" value="Get database" /></div>
                <div class="cls"></div>
            </form>
        </fieldset>
    </div>
    <script type="text/javascript">
    function vky(x){
        x.value='Wait processing..';
        document.getElementsByClassName("overlay")[0].style.display="block";
    }
    </script>
    <div class="backup_list">
        <div class=""><?php echo isset($rmsg)?$rmsg:''; ?></div>
        <?php echo display_download(BACKUP_DIR); ?>
    </div> 
</div>

<style type="text/css">
/* HTML5 display-role reset for older browsers */
html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td{margin: 0;padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline;}
body {line-height: 1;}
ol, ul {list-style: none;}
blockquote:before, blockquote:after,table { border-collapse: collapse;border-spacing: 0;}
fieldset legend{margin-left: 20px;}
fieldset legend h2{}
form{margin: 25px;}
.cls{clear:both;border-bottom: 0px;padding: 0px}
form div{border-bottom: dotted 1px #ccc;padding: 15px;}
h2{font-size: 14px;font-weight: bold}
.backup_main{font-size: 12px;font-family: verdana;width:1040px;margin:auto}
.backup_list{ background: #f9f9f9;width:500px;min-height: 410px;height: auto; padding: 10px;float:left }
.main{ position:relative; background: #f9f9f9;width:500px;height: auto; padding: 10px;font-size: 12px;font-family: verdana;float:left }
fieldset{border:solid 1px #ccc;}
div > label{font-weight: bold;width:150px;display: inline-block}
input[type="submit"]{width: 150px;cursor: pointer;height: 35px;font-size: 14px;border: 1px #ccc solid; -moz-transition: all 0.5s ease-out; -o-transition: all 0.5s ease-out; -webkit-transition: all 0.5s ease-out; -ms-transition: all 0.5s ease-out; }
input[type="submit"]:hover{ background: #000; color:#fff }
table{width:500px;margin-bottom: 100px;border: solid 1px #ccc;border-collapse: collapse}
table > thead > tr > th {ext-align: left;border-bottom: 1px #ccc solid;border-right: 1px #ccc solid;}
table > tbody > tr > td {ext-align: left;border-bottom: 1px #ccc solid;border-right: 1px #ccc solid;height: 20px;line-height: 20px;padding:5px}
table > tbody > tr > td img:hover {width:14px;height: 14px; -moz-transition: all 0.5s ease-out; -o-transition: all 0.5s ease-out; -webkit-transition: all 0.5s ease-out; -ms-transition: all 0.5s ease-out; }
a.tooltips {  position: relative;  display: inline;}
a.tooltips span {position: absolute;width:140px;color: #000000;background: #FFFFFF;border: 2px solid #CCCCCC;height: 32px;line-height: 32px;text-align: center;visibility: hidden;border-radius: 6px;box-shadow: 0px 0px 7px #808080;}
a.tooltips span:before {content: '';position: absolute;top: 100%;left: 50%;margin-left: -12px;width: 0; height: 0;border-top: 12px solid #CCCCCC;border-right: 12px solid transparent;border-left: 12px solid transparent;}
a.tooltips span:after {content: '';position: absolute;top: 100%;left: 50%;margin-left: -8px;width: 0; height: 0;border-top: 8px solid #FFFFFF;border-right: 8px solid transparent;border-left: 8px solid transparent;}
a:hover.tooltips span {visibility: visible;opacity: 1;bottom: 30px;left: 50%;margin-left: -76px;z-index: 999;}
.logout{text-align: right;width:100%;height: 25px;background: #1A1111;line-height: 25px;}
.logout a{color:#fff;margin-right: 50px;}
/*.overlay{position: absolute;width:100%;height: 100%;background: red;opacity: .50;top:0px;left: 0px;display: none;}*/
.overlay {display: none;position: absolute;width: 100%;height: 100%;top: 0px;left: 0px;background: #ccc;z-index: 1001;opacity: .95;}
.overlay-load {width: 350px;height: 100px;margin: auto;top: 0px;bottom: 0px;position: absolute;left: 0px;right: 0px;
           border: solid 1px #060522;text-align: center;
           background: #fff  50% 25%;
background-repeat: no-repeat;         
}
.overlay-msg{margin-bottom: 10px;bottom: 0px;position: absolute;font-style: italic;color: rgb(19, 19, 19);}           
</style>
<?php
function get_file_size_unit($file_size){
switch (true) {
    case ($file_size/1024 < 1) :
        return intval($file_size ) ." Bytes" ;
        break;
    case ($file_size/1024 >= 1 && $file_size/(1024*1024) < 1)  :
        return intval($file_size/1024) ." KB" ;
        break;
default:
return intval($file_size/(1024*1024)) ." MB" ;
}
}
function display_download($BACKUP_DIR){
$msg='';
$msg.='<h2>BACKUP  completed ,</h2>
 <table><thead><tr><th>File</th><th>Size</th><th>&nbsp;</th></tr>
</thead><tbody>';
$downloads=getDownloads($BACKUP_DIR);
if(count($downloads)>0)
foreach ($downloads as $k => $v) {
$msg.= '<tr><td>'.$v['name'].'</td><td>'.$v['size'].'</td><td>
<a class="tooltips" href="'.BACKUP_DIR . "/". $v['name'] .'" target="_blank"><span>Click to download</span><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAtElEQVR42mNgQAMGBgb+xsbGH42MjP7BMJC/X09PT4yBEAAq9Abi/+gYaIjPqGYokJGR4QRKbgIqOgykr+DQfBUkD8RbgJgLxQBDQ8NYoIIv2DQiGfAFqC4OqwuAcZwAVPANh8ZvQJyI18/AxOCLQ7MvNtus0YQYoQZ8h2r8DnSqH0gcW+h+wOYCfX39RKBtd0A0jlj5j1MzEVEK1vwRaHo6CfqYgN7IBGsGOm0uvujBE20NAHg8npa1TPgkAAAAAElFTkSuQmCC"/></a>
&nbsp;|&nbsp;<a onclick="return confirm(\'Are you sure want to remove this file ?\')" class="tooltips" href="mysql_backup.php?task=clear&file='.$v['name'].'"><span>Click to Remove</span><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAp0lEQVR42rWSWwoDIQxFXUUX0H+V6B6m/3YJ3eY8dtMNTH9mSh/3QoSBQnUsFS4xISfRqBGRSwjhCj1rFGO8w/beezEEEXjtFbjRaLUW+NEMUx8wZjDhPgnxWTvM9Bkvwkw0WLAn+Cut+qkIa6eOgHPuoGCXT/IVVq0ZpEXOUnVn+LfmzhjMeQMsuRD26b/T3vXO/Ku//LC+ER44GOGGlWo7Mt9ae3wDSJ1BX+TxzPsAAAAASUVORK5CYII="/></a>
<form method="post" action="" name="updateform" ><input type="hidden" name="dbName" value="'.$v['name'].'">
<input type="submit" name="upload" value="upload">
</form>
</td></tr>';


}
return $msg.='</tbody></table>';
}
function getDownloads($dir="./myBackups"){
    if (is_dir($dir)){
    $dh  = opendir($dir);
    $files=array();
    $i=0;
    $xclude=array('.','..','.htaccess');
    while (false !== ($filename = readdir($dh))) {
       if(!in_array($filename, $xclude))
       {
        $files[$i]['name'] = $filename;
        $files[$i]['size'] = get_file_size_unit(filesize($dir.'/'.$filename));
        $i++;
       }
    }
    return $files;
}}?>

Sunday, June 18, 2017

Webcam Image Capture

This is example for capturing image and save it to any location using webcam.js.


<!doctype html>

<html lang="en">
<head>
<title>camera image</title>
<style type="text/css">
body { font-family: Helvetica, sans-serif; }
h2, h3 { margin-top:0; }
form { margin-top: 15px; }
form > input { margin-right: 15px; }
#results { float:right; margin:20px; padding:20px; border:1px solid; background:#ccc; }
</style>
<script type="text/javascript" src="webcam.js"></script>
</head>
<body>
<div id="results">Captured Image</div>
<div id="my_camera"></div>
<input type=button value="Take Snapshot" onClick="take_snapshot()">
</body>
</html>
<script language="JavaScript">
Webcam.set({
width: 200,
height: 250,
image_format: 'jpeg',
jpeg_quality: 90
});
Webcam.attach( '#my_camera' );
function take_snapshot() {
// take snapshot and get image data
Webcam.snap( function(data_uri) {
// display results in page

document.getElementById('results').innerHTML =
'<h2>Processing:</h2>';

Webcam.upload( data_uri, 'saveimage.php', function(code, text) {
document.getElementById('results').innerHTML =
'<h2>Here is your image:</h2>' +
'<img src="'+text+'"/>';
} );
} );
}
</script>

saveimage.php
<?php
$filename =  time() . '.jpg';
$filepath = 'saved_images/';

move_uploaded_file($_FILES['webcam']['tmp_name'], $filepath.$filename);

echo $filepath.$filename;

?>


ref:http://theonlytutorials.com/capture-web-camera-image-php-jquery/

Sunday, April 2, 2017

vendor rate comparison example with color code

rate comparison example

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Color Code example for vendor rate comparison</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  </head>

  <body>

                                        <table width="500px">
                      <thead>
                        <tr>
                          <th>Sn.</th>
                          <th>Vendor</th>
                          <th>Item</th>
                          <th>Brand</th>
                          <th>Rate</th>
                          <th>itemCode</th>
                        </tr>
                      </thead>
                      <tbody>
                                                  <tr id="ven1itm1brand11">
                            <td>1</td>
                            <td>ven1</td>
                            <td>itm1</td>
                            <td>brand11</td>
                            <td data-colorId="ven1itm1brand11" data-ven="ven1" data-itm="itm1" data-brand="brand11" data-rate="50"  class="rate">50</td>
                            <td>itm1brand11</td>
                          </tr>
                                                    <tr id="ven1itm1brand12">
                            <td>2</td>
                            <td>ven1</td>
                            <td>itm1</td>
                            <td>brand12</td>
                            <td data-colorId="ven1itm1brand12" data-ven="ven1" data-itm="itm1" data-brand="brand12" data-rate="60"  class="rate">60</td>
                            <td>itm1brand12</td>
                          </tr>
                                                    <tr id="ven1itm1brand13">
                            <td>3</td>
                            <td>ven1</td>
                            <td>itm1</td>
                            <td>brand13</td>
                            <td data-colorId="ven1itm1brand13" data-ven="ven1" data-itm="itm1" data-brand="brand13" data-rate="70"  class="rate">70</td>
                            <td>itm1brand13</td>
                          </tr>
                                                    <tr id="ven1itm2brand21">
                            <td>4</td>
                            <td>ven1</td>
                            <td>itm2</td>
                            <td>brand21</td>
                            <td data-colorId="ven1itm2brand21" data-ven="ven1" data-itm="itm2" data-brand="brand21" data-rate="50"  class="rate">50</td>
                            <td>itm2brand21</td>
                          </tr>
                                                    <tr id="ven1itm2brand22">
                            <td>5</td>
                            <td>ven1</td>
                            <td>itm2</td>
                            <td>brand22</td>
                            <td data-colorId="ven1itm2brand22" data-ven="ven1" data-itm="itm2" data-brand="brand22" data-rate="60"  class="rate">60</td>
                            <td>itm2brand22</td>
                          </tr>
                                                    <tr id="ven1itm2brand23">
                            <td>6</td>
                            <td>ven1</td>
                            <td>itm2</td>
                            <td>brand23</td>
                            <td data-colorId="ven1itm2brand23" data-ven="ven1" data-itm="itm2" data-brand="brand23" data-rate="70"  class="rate">70</td>
                            <td>itm2brand23</td>
                          </tr>
                                                    <tr id="ven1itm3brand31">
                            <td>7</td>
                            <td>ven1</td>
                            <td>itm3</td>
                            <td>brand31</td>
                            <td data-colorId="ven1itm3brand31" data-ven="ven1" data-itm="itm3" data-brand="brand31" data-rate="50"  class="rate">50</td>
                            <td>itm3brand31</td>
                          </tr>
                                                    <tr id="ven1itm3brand32">
                            <td>8</td>
                            <td>ven1</td>
                            <td>itm3</td>
                            <td>brand32</td>
                            <td data-colorId="ven1itm3brand32" data-ven="ven1" data-itm="itm3" data-brand="brand32" data-rate="60"  class="rate">60</td>
                            <td>itm3brand32</td>
                          </tr>
                                                    <tr id="ven1itm3brand33">
                            <td>9</td>
                            <td>ven1</td>
                            <td>itm3</td>
                            <td>brand33</td>
                            <td data-colorId="ven1itm3brand33" data-ven="ven1" data-itm="itm3" data-brand="brand33" data-rate="70"  class="rate">70</td>
                            <td>itm3brand33</td>
                          </tr>
                                                    <tr id="ven2itm1brand11">
                            <td>10</td>
                            <td>ven2</td>
                            <td>itm1</td>
                            <td>brand11</td>
                            <td data-colorId="ven2itm1brand11" data-ven="ven2" data-itm="itm1" data-brand="brand11" data-rate="55"  class="rate">55</td>
                            <td>itm1brand11</td>
                          </tr>
                                                    <tr id="ven2itm1brand12">
                            <td>11</td>
                            <td>ven2</td>
                            <td>itm1</td>
                            <td>brand12</td>
                            <td data-colorId="ven2itm1brand12" data-ven="ven2" data-itm="itm1" data-brand="brand12" data-rate="70"  class="rate">70</td>
                            <td>itm1brand12</td>
                          </tr>
                                                    <tr id="ven2itm1brand13">
                            <td>12</td>
                            <td>ven2</td>
                            <td>itm1</td>
                            <td>brand13</td>
                            <td data-colorId="ven2itm1brand13" data-ven="ven2" data-itm="itm1" data-brand="brand13" data-rate="50"  class="rate">50</td>
                            <td>itm1brand13</td>
                          </tr>
                                                    <tr id="ven2itm2brand21">
                            <td>13</td>
                            <td>ven2</td>
                            <td>itm2</td>
                            <td>brand21</td>
                            <td data-colorId="ven2itm2brand21" data-ven="ven2" data-itm="itm2" data-brand="brand21" data-rate="55"  class="rate">55</td>
                            <td>itm2brand21</td>
                          </tr>
                                                    <tr id="ven2itm2brand22">
                            <td>14</td>
                            <td>ven2</td>
                            <td>itm2</td>
                            <td>brand22</td>
                            <td data-colorId="ven2itm2brand22" data-ven="ven2" data-itm="itm2" data-brand="brand22" data-rate="60"  class="rate">60</td>
                            <td>itm2brand22</td>
                          </tr>
                                                    <tr id="ven2itm2brand23">
                            <td>15</td>
                            <td>ven2</td>
                            <td>itm2</td>
                            <td>brand23</td>
                            <td data-colorId="ven2itm2brand23" data-ven="ven2" data-itm="itm2" data-brand="brand23" data-rate="45"  class="rate">45</td>
                            <td>itm2brand23</td>
                          </tr>
                                                    <tr id="ven2itm3brand31">
                            <td>16</td>
                            <td>ven2</td>
                            <td>itm3</td>
                            <td>brand31</td>
                            <td data-colorId="ven2itm3brand31" data-ven="ven2" data-itm="itm3" data-brand="brand31" data-rate="40"  class="rate">40</td>
                            <td>itm3brand31</td>
                          </tr>
                                                    <tr id="ven2itm3brand32">
                            <td>17</td>
                            <td>ven2</td>
                            <td>itm3</td>
                            <td>brand32</td>
                            <td data-colorId="ven2itm3brand32" data-ven="ven2" data-itm="itm3" data-brand="brand32" data-rate="50"  class="rate">50</td>
                            <td>itm3brand32</td>
                          </tr>
                                                    <tr id="ven2itm3brand33">
                            <td>18</td>
                            <td>ven2</td>
                            <td>itm3</td>
                            <td>brand33</td>
                            <td data-colorId="ven2itm3brand33" data-ven="ven2" data-itm="itm3" data-brand="brand33" data-rate="65"  class="rate">65</td>
                            <td>itm3brand33</td>
                          </tr>
                                                    <tr id="ven3itm1brand11">
                            <td>19</td>
                            <td>ven3</td>
                            <td>itm1</td>
                            <td>brand11</td>
                            <td data-colorId="ven3itm1brand11" data-ven="ven3" data-itm="itm1" data-brand="brand11" data-rate="55"  class="rate">55</td>
                            <td>itm1brand11</td>
                          </tr>
                                                    <tr id="ven3itm1brand12">
                            <td>20</td>
                            <td>ven3</td>
                            <td>itm1</td>
                            <td>brand12</td>
                            <td data-colorId="ven3itm1brand12" data-ven="ven3" data-itm="itm1" data-brand="brand12" data-rate="60"  class="rate">60</td>
                            <td>itm1brand12</td>
                          </tr>
                                                    <tr id="ven3itm1brand13">
                            <td>21</td>
                            <td>ven3</td>
                            <td>itm1</td>
                            <td>brand13</td>
                            <td data-colorId="ven3itm1brand13" data-ven="ven3" data-itm="itm1" data-brand="brand13" data-rate="60"  class="rate">60</td>
                            <td>itm1brand13</td>
                          </tr>
                                                    <tr id="ven3itm2brand21">
                            <td>22</td>
                            <td>ven3</td>
                            <td>itm2</td>
                            <td>brand21</td>
                            <td data-colorId="ven3itm2brand21" data-ven="ven3" data-itm="itm2" data-brand="brand21" data-rate="55"  class="rate">55</td>
                            <td>itm2brand21</td>
                          </tr>
                                                    <tr id="ven3itm2brand22">
                            <td>23</td>
                            <td>ven3</td>
                            <td>itm2</td>
                            <td>brand22</td>
                            <td data-colorId="ven3itm2brand22" data-ven="ven3" data-itm="itm2" data-brand="brand22" data-rate="60"  class="rate">60</td>
                            <td>itm2brand22</td>
                          </tr>
                                                    <tr id="ven3itm2brand23">
                            <td>24</td>
                            <td>ven3</td>
                            <td>itm2</td>
                            <td>brand23</td>
                            <td data-colorId="ven3itm2brand23" data-ven="ven3" data-itm="itm2" data-brand="brand23" data-rate="70"  class="rate">70</td>
                            <td>itm2brand23</td>
                          </tr>
                                                    <tr id="ven3itm3brand31">
                            <td>25</td>
                            <td>ven3</td>
                            <td>itm3</td>
                            <td>brand31</td>
                            <td data-colorId="ven3itm3brand31" data-ven="ven3" data-itm="itm3" data-brand="brand31" data-rate="45"  class="rate">45</td>
                            <td>itm3brand31</td>
                          </tr>
                                                    <tr id="ven3itm3brand32">
                            <td>26</td>
                            <td>ven3</td>
                            <td>itm3</td>
                            <td>brand32</td>
                            <td data-colorId="ven3itm3brand32" data-ven="ven3" data-itm="itm3" data-brand="brand32" data-rate="50"  class="rate">50</td>
                            <td>itm3brand32</td>
                          </tr>
                                                    <tr id="ven3itm3brand33">
                            <td>27</td>
                            <td>ven3</td>
                            <td>itm3</td>
                            <td>brand33</td>
                            <td data-colorId="ven3itm3brand33" data-ven="ven3" data-itm="itm3" data-brand="brand33" data-rate="65"  class="rate">65</td>
                            <td>itm3brand33</td>
                          </tr>
                                                </tbody>
                    </table>
  </body>
</html>
<script type="text/javascript">
  $('document').ready(function(){
    var coloIds = [];
    var items = [];
    $('.rate').each(function(){
      var t=$(this);
      var colorId=t.attr('data-colorId');
      var vendor=t.attr('data-ven');
      var itm=t.attr('data-itm');
      var brand=t.attr('data-brand');
      var rate=t.attr('data-rate');
      var itmCode=itm+brand;
      var item=[];
      item['colorId']=colorId;
      item['vendor']=vendor;
      item['itm']=itm;
      item['brand']=brand;
      item['rate']=rate;
      item['itmCode']=itmCode;
      if(coloIds.length>0){
        var check=1;
        for (var i = coloIds.length - 1; i >= 0; i--) {
          if(coloIds[i]['itmCode']==itmCode){
            if(itmCode=='itm1brand13'){
              console.log(item);
            }
            var check=0;
            if(rate<coloIds[i]['rate']){
              item['color']='green';
              coloIds[i]='';
              coloIds[i]=item;
              coloIds.push(item);
              item='';
            }
            if(coloIds[i]['rate']==rate && coloIds[i]['colorId']!=colorId){
              coloIds[i]['color']='yellow';
              item['color']='yellow';
              coloIds.push(item);
              item='';
            }
          }
        }
        if(check==1){
          item['color']='green';
          coloIds.push(item);
          item='';
        }      
      } else {
        item['color']='green';
        coloIds.push(item);
        item='';
      }
    });
    //console.log(items);
    for (var i = coloIds.length - 1; i >= 0; i--) {
      $('#'+coloIds[i]['colorId']).css("background-color", coloIds[i]['color']);
    }

  });
</script>