Креирање ПДФ документа у ПХП са tfpdf, fpdf и fpdi

Скраћена веза: https://pedja.supurovic.net/veza/8667

Потребно вам је да на сајту генеришете ПДФ документ који је предефинисани образац а посетилац сајта само треба да га попуни? Ево како сам ја то урадио. Вероватно ће и вама бити корисно.

Поступак се своди на отварање ПДФ документа, учитавање стране из њега која садржи већ припремљен образац и затим уписивање додатног садржаја у ту страну, на местима која су предвиђена за попуњавање.

За креирање ПДФ докумената може се употребити одлична библиотека FPDF. Библиотека садржи ПХП класу која програмеру омогућава креирање ПДФ докумената на високом нивоу, односно, да се не мора бавити структуром и форматом ПДФ документа, већ све обавља позивањем медота ове класе – смешта садржаје на страну документа тамо где жели и како жели. […]
[ ... види цео чланак ... ]

Рачунање контролног броја по модулу 97 у PHP

Скраћена веза: https://pedja.supurovic.net/veza/8494

Затребало ми је да израчунам контролни број по модулу 97, али нигде нисам нашао пример урађен у PHP. Пошто сам написао функцију која то ради, ево је овде, ако још некоме буде требало.

function Modul97 ($pBroj) {

  $mBroj = '';
  $mFixedBroj = '';

  foreach (str_split (strtoupper((string)$pBroj)) as $mChar) {
  
    if (is_numeric ($mChar)) {
      $mBroj .= $mChar;
      $mFixedBroj .= $mChar;
    } else {
      if (ctype_alpha($mChar)) {
        $mBroj .= $mChar;
        $mNumeric = ord ($mChar) - 65 + 10;
        $mFixedBroj .= (string)$mNumeric;
      } else {
        $mBroj .= '-';
      }
    }
    
  }
  
  $mFixedBroj00 = $mFixedBroj . '00';
  
  $mModule = bcmod ($mFixedBroj00, 97);
  
  $mControl = 98 - $mModule;
  
  $mResult = (string)$mControl .
 […]
[ ... види цео чланак ... ]

PHP замена за WGET

Скраћена веза: https://pedja.supurovic.net/veza/8074

Често затреба да се на веб сервер постави датотека која је повелика, а налази се на неком удаљеном серверу. Класично решење, да преузмете датотеку на свој рачунар па да је FTP-ом пребаците на други сервер је углавном у реду, само што, ако је датотека велика то уме да потраје.

Велика помоћ је да уђете на одредишни сервер у командном режиму и командом wget директно преузмете датотеку директно. Обично то иде много брзо јер сервери имају брзе линкове.

Међутим, шта ако немате приступ у конзолном режиму?

Пробајте овај једноставан PHP скрипт:

<?php

$remote_file = "http://remoteserver.com/dl/remotefile.zip";
$local_file = "localfile.zip";

file_put_contents($local_file, fopen($remote_file, 'r'));

?>

PHP функција file_put_contents() ће да преузме датотеку са удаљеног сервера и смести је у локални директоријум. […]
[ ... види цео чланак ... ]

DropBox Access Token Generator for PHP

Скраћена веза: https://pedja.supurovic.net/veza/7971

Using Dropbox API is quite simple and easy. Procedure to get Access Token is also simple. However, each time I set up new application I have to go through the same procedure.

To help me out, I wrote very simple PHP script that simplifies process even more. It follows three stages of generating process in unified way, simplified to few click of mouse.

Stage1: Go to Dropbox site and create Dropbox Platfrom app (link is provided). You will get Access key and Access Secret. Copy that info to form and submit.

DropBox Access Token Generator - Stage 1

DropBox Access Token Generator – Stage 1

Stage2: open provided link to get Authorization Code. […]
[ ... види цео чланак ... ]

Употребљивост (usability) програма

Скраћена веза: https://pedja.supurovic.net/veza/5592

Неретко, срећем програме који имају вредну функционалност али имају проблем са употребљивошћу јер у току развоја није довољно пажње усмерено на то да се корисничко окружење програма прилагоди корисницима. При том, не мислим на графички изглед програма него на његову употребљивост.

Употребљивост се, у најкраћем, огледа у лакоћи учења и коришћења програма.

Да би програм био употребљив, неопходно је прилагодити његово корисничко окружење очекивањима и потребама корисника. Циљ је да се постигне радно окружење које корисник лако разуме, прихвата и ефикасно користи тако да му употреба програма представља задовољство.

Не треба заборавити да већина корисника рачунарских програма нису познаваоци рачунара. […]
[ ... види цео чланак ... ]

C# .NET – Дефиниција Master – Detail везе две табеле

Скраћена веза: https://pedja.supurovic.net/veza/5353

Подешавање приказа master/detail везу две табеле у .NET није баш очигледно некоме ко је навикао на неку другу платформу. Зато, ево кратког примера како то подесити :

//
//
// kreiraj dataset
ds = new DataSet();

//
//
// kreiraj master tabelu
DataTable dtMaster = new DataTable();
dtMaster.Columns.Add ("id_master", typeof (string));
dtMaster.Columns.Add ("description", typeof (string));

//
//
// napuni je podacima
dtMaster.Rows.Add ("1", "prvi");
dtMaster.Rows.Add ("2", "drugi");
dtMaster.Rows.Add ("3", "treci");
dtMaster.Rows.Add ("4", "cetvrti");

//
//
// podesi primarni kljuc
DataColumn[] MasterPrimaryKeyColumns = new DataColumn[1];
MasterPrimaryKeyColumns[0] = dtMaster.Columns["id_master"];
dtMaster.PrimaryKey = MasterPrimaryKeyColumns;

//
//
// dodaj tabelu u DataSet
ds.Tables.Add (dtMaster);

//
//
// kreiraj detail tabelu
DataTable dtDetail = new DataTable();
dtDetail.Columns.Add("id_detail", typeof(string));
dtDetail.Columns.Add("description", typeof(string));
dtDetail.Columns.Add("id_master", typeof(string));

//
//
// napuni je podacima
dtDetail.Rows.Add("1", "1-1", "1");
dtDetail.Rows.Add("2", "1-2", "1");
dtDetail.Rows.Add("3", "2-3", "2");
dtDetail.Rows.Add("4", "3-4", "3");
dtDetail.Rows.Add("5", "3-5", "3");
dtDetail.Rows.Add("6", "3-6", "3");
dtDetail.Rows.Add("7", "3-7", "3");
dtDetail.Rows.Add("8", "4-8", "4");
dtDetail.Rows.Add("9", "4-9", "4");
dtDetail.Rows.Add("10", "4-10", "4");

//
//
// podesi primarni kljuc
DataColumn[] DetailPrimaryKeyColumns = new DataColumn[1];
DetailPrimaryKeyColumns[0] = dtMaster.Columns["id_detail"];
dtMaster.PrimaryKey = DetailPrimaryKeyColumns;

//
//
// dodaj tabelu u DataSet
ds.Tables.Add(dtDetail);

//
//
// podesi relaciju izmedju tabela i nju dodaj u DataSet
DataRelation drMasterDetail = new DataRelation("fk_master_detail",
dtMaster.Columns["id_master"],
dtDetail.Columns["id_master"]);
ds.Relations.Add(drMasterDetail);

//
//
// kreiraj BindingSource za Master tabelu
BindingSource bsMaster = new BindingSource();
bsMaster.DataSource = dtMaster;

//
//
// BindingSource za Detail tabelu se vezuje za
// BindingSource Master tabele, a kao DataMebmer
// se navodi naziv relacije Master/Detail
BindingSource bsDetail = new BindingSource();
bsDetail.DataSource = bsMaster;
bsDetail.DataMember = "fk_master_detail";

//
//
// povezi BindingSource za odgovarajuce gridove na formi
dgMaster.DataSource = bsMaster;
dgDetail.DataSource = bsDetail;

Да бисте испробали овај код, уметните га у конструктор форме или у Load() догађај а на форму поставите два грида dgMaster и dgDetail. […]
[ ... види цео чланак ... ]

BAT скрипт за брзи бекап

Скраћена веза: https://pedja.supurovic.net/veza/5259

Прављење резервних копија кода на коме радим ми је увек правило главобољу. Ма колико да је то неопходно, редовно ми се дешава да направим копију у неком битном моменту.

Након последње компликације коју сам имао зато што нисам имао одговарајућу копију, одлучио сам да се тим питањем мало озбиљније позабавим. Пробао сам неколико програма за ту намену, и углавном закључио да то мени не ради посао.

Главни проблем је што треба да се сетим да покренем поступак копирања, а затим и да то заиста и учиним, покретањем одговарајућег програма.

Пошто, додуше мало необично за данашње време, највише времена и даље радим у командном прозору (да, на Windows-у) , чак и када радим на веб пројектима, смислио сам прилично брзо и ефикасно решење. […]
[ ... види цео чланак ... ]

C# .NET – ComboBox Lookup from Detail Table

Скраћена веза: https://pedja.supurovic.net/veza/5252

Ово морам да забележим, јер ми је невероватно да сам потрошио сате и сате да бих ископао како да направим тако просту и баналну ствар.

Имате табеле MasterTable и DetailTable. Табела MasterTable има поље detail_id преко кога је повезано са табелом DetailTable. Табела DetailTable има само два поља: detail_id и description.

Хоћете на масци да имате ComboBox који ће приказати листу вредности из табеле DetailTable тако што ће приказати вредности поља description а када се изабере одређена вредност у MasterTable.detail_id уписати вредност поља DetailTable.detail_id.

Ако кренете интуитивно сигурно нећете нигде стићи. Документација на Мајкрософт сајту је бедна и неупотребљива, а ако покушате да на Интернету нађете неки пример како ово подесити наићи ћете само на половичне примере који не раде. […]
[ ... види цео чланак ... ]