Softverska rešenja

Prate i unapredjuju poslovne aktivnosti firme u skladu sa tehnologijom delatnosti. Rade na internetu i/ili lokalnoj mreži, web serveru "PcP"© ili web serveru korisnika.

Pristup sa desktop računara, tablet računara, iPhone i mobilnog telefona. Mogućnosti:

  • Instalacija linux web servera (ssh) na računaru korisnika, sa statičkom IP adresom.
  • Instalacija domena. Rad u lokalnoj mreži i/ili kao domen na internetu.
  • Računar kod provajdera, Cloud, domen na internetu. Instalacija ssh i ftp.

Sadržaj je definisan kroz skup različitih programskih opcija, usaglašen sa postojećim propisima i standardima, kao i tehnološkim zahtevima korisnika.

Primeri programskih opcija

Primeri specifičnih softverskih rešenja dati sa prikazom programskog koda i demo verzija.

To su programski alati za rad sa DataTable (serverSide processing).

#MySQL u #JSON data

Formiranje datoteke JSON iz dbQuery($sql). Iz aktivne datoteke Kupaca koja se dnevno ažurira, izdvajaju se u JSON za prikaz samo odredjeni podaci.

<?php
$file = '../../../../dataTables_19/scroller/bootstrap/dta/datak.js';

$outp = "";

$outp ='{"data": [' . "\n";
file_put_contents($file, $outp);


$sql = "SELECT ku_id, ku_zajedno, ku_godiste, ku_phone, ku_mail, ku_popust, DATE_FORMAT(ku_otva, '%d.%m.%Y') as datum1, ku_pocetno, ku_zbirno, ku_izdati_ps, ku_izdato_st, ku_ostalo_ps, ku_ostalo_st, DATE_FORMAT(ku_posl, '%d.%m.%Y') as datum2, ku_gde_p, ku_prefe, ku_status, ku_poruka
        FROM tbl_kupci_p
        ORDER BY ku_id DESC";
$result = dbQuery($sql);

  $novoItem = array();
  while ($row = dbFetchAssoc($result)) {
    $novoItem[] = $row;
  }
  $numnovo  = count($novoItem);

  for ($n = 0; $n < $numnovo; $n++) {
    extract($novoItem[$n]);
    
$aa = array();

  $aa[0] = "\t" . '[ "';
  $aa[0] .= $ku_id;
  $aa[0] .= '","';
  $aa[1] = $ku_zajedno;
  $aa[1] .= '","';
  $aa[2] = displayAmount_b($ku_zbirno);
  $aa[2] .= '","';
  $aa[3] = displayAmount($ku_ostalo_st);
  $aa[3] .= '","';
  $aa[4] = $datum2;
  $aa[4] .= '","';
  $aa[5] = $ku_id;
if ($n === ($numnovo - 1)) {
  $aa[5] .= '" ]'. "\n";
} else {
  $aa[5] .= '" ],'. "\n";
}

file_put_contents($file, $aa, FILE_APPEND | LOCK_EX);

}
$outp1 ='] }';
file_put_contents($file, $outp1, FILE_APPEND | LOCK_EX);
?>

Primer in Real Mode »

Server-side, Ajax, JSON data

Po dobijanju JSON datoteke, prikaz velikih baza:

<script>
$(document).ready(function() {
   var table = $('#example').DataTable({
      "stateSave": true,
      responsive: true,
      "info":false,
      'ajax': 'dta/datak.js',
      'columnDefs': [
         {
            'targets': [2, 3, 4, 6, 7],
            'orderable': false,
            'searchable': false
         },
         { "orderable": false, "targets": 8, "render": function ( data, type, full, meta ) {
           return "<span class='glyphicon glyphicon-info-sign'></spam>".link('info.php?nod='+ data);
         }
         }
      ]
   });
});
</script>

Demo in Real Mode »

POST data, PDO, SSP::complex

DataTables example server-side processing script:

<?php
$table = 'tbl_racuni';
$primaryKey = 'od_id';
$columns = array(
	array( 'db' => 'od_id', 'dt' => 'od_id' ),
	array(
		'db'        => 'vrs_id',
		'dt'        => 'vrs_id',
		'formatter' => function( $d, $row ) {
                         if ($d == 55) {
                            return 'Trebovanje';
                         } else if ($d == 11)  {
                            return 'Proizvodnja';
                         }
		}
	),
	array(
		'db'        => 'od_date',
		'dt'        => 'od_date',
		'formatter' => function( $d, $row ) {
                   return date('d.m.Y', strtotime($d));
		}
	),
	array( 'db' => 'od_dokument',  'dt' => 'od_dokument' ),
	array( 'db' => 'od_status',  'dt' => 'od_status' )
);
$sql_details = array(
	'user' => '',
	'pass' => '',
	'db'   => '',
	'host' => ''
);
require( 'ssp.class.php' );
$whereAll = "((vrs_id = 11) OR (vrs_id = 55))";
echo json_encode(
	SSP::complex( $_POST, $sql_details, $table, $primaryKey, $columns, null, $whereAll )
);

Primer in Real Mode »

rowCallback: function ( row, data, index ) {

DataTables example rowCallback:

$(document).ready(function() {
	$('#example').DataTable( {
                "order": [[ 0, "desc"]],
                "stateSave": true,
                "info":false,
		"processing": true,
		"serverSide": true,
		"ajax": {
			"url": "scripts/post.php",
			"type": "POST"
		},
		"columns": [
		        { "data": "od_id", "visible": false },
                        { "orderable": false, "data": "od_dokument" },
                        { "orderable": false, "data": "vrs_id" },
			{ "orderable": false, "data": "od_date" },
			{ "orderable": false, "data": "od_status" },
                        { "orderable": false, "data": "od_id", "render": function ( data, type, full, meta ) {
                            return "<span class='glyphicon glyphicon-list'></spam>".link('detail.php?nod='+ data);
                        }
                        },
                        { "orderable": false, "data": "od_id", "render": function ( data, type, full, meta ) {
                            return "<span class='glyphicon glyphicon-trash'></spam>".link('brisanje.php?nid='+ data); }
                        },
                        { "orderable": false, "data": "od_id", "render": function ( data, type, full, meta ) {
                            return "<span class='glyphicon glyphicon-info-sign'></spam>".link('detail_r.php?nod='+ data); }
                        }
		],
                rowCallback: function ( row, data, index ) {
                 if ( data.vrs_id == 'Trebovanje' ) {
                   $('td:eq(4)', row).html( ' ' );
                   $('td:eq(5)', row).html( ' ' );
                 } else if (( data.vrs_id == 'Proizvodnja' ) && ( data.od_status_ra == 'Zatvoreni' )) {
                   $('td:eq(5)', row).html( ' ' );
                 }
                }
	} );
} );

Primer in Real Mode »

jQuery DataTables: COLSPAN in table body TBODY COLSPAN and ROWSPAN

Resources:: datatables.min.css, datatables.min.js, dataTables.rowsGroup.js

$(document).ready(function() {
   var table = $('#example').DataTable({
      "stateSave": true,
      "info":false,
      'ajax': 'http://213.198.240.205/Lipo/2018/Lipo/program/json_php/dtadta/pr6dp',
      'columnDefs': [
         {
            'targets': [1, 2, 3, 4, 5],
            'orderable': false,
            'searchable': false
         }
      ],
      'rowsGroup': [0],
      'createdRow': function(row, data, dataIndex){
         // Use empty value in the "Office" column
         // as an indication that grouping with COLSPAN is needed
         if(data[2] === ''){
            // Add COLSPAN attribute
            $('td:eq(1)', row).attr('colspan', 5);

            // Hide required number of columns
            // next to the cell with COLSPAN attribute
            $('td:eq(2)', row).css('display', 'none');
            $('td:eq(3)', row).css('display', 'none');
            $('td:eq(4)', row).css('display', 'none');
            $('td:eq(5)', row).css('display', 'none');
         }
      }      
   });   
});

Primer in Real Mode »

Igranka u sigurnom prostoru

But, let's move on. Come on little to remind - [step-by-step]:

try { ...}, catch(err) and finally { ...}

Input Validation Example:

<script>
function myF() {
    var message, x;
    message = document.getElementById("p01102");
    message.innerHTML = "";
    x = document.getElementById("unesi").value;
    try { 
        if(x == "")  throw "is empty";
        if(isNaN(x)) throw "is not a number";
        x = Number(x);
        if(x > 100)   throw "is too high";
        if(x < 50)    throw "is too low";
    }
    catch(err) {
        message.innerHTML = "Unos " + err;
    }
    finally {
        document.getElementById("unesi").value = "";
    }
}
</script>

Primer Try it ... »

Kontakt

Sve potrebne informacije preko      i    .