<?xml version="1.0" encoding="windows-1250" ?>
<rss version="2.0">
<channel>
<docs>https://www.mycity.rs/Obavestenja/MyCity-RSS-feeds.html</docs>
<title>MyCity :: Opšte programiranje</title>
<link>https://www.mycity.rs/Opste-programiranje/</link>
<description>RSS feed 'Opšte programiranje' foruma</description>
<language>sr</language>
<ttl>15</ttl>
<lastBuildDate>Thu, 18 Jun 2026 05:15:13 +0100</lastBuildDate>
<item>
	<title>Vesti: Danas je Dan programera</title>
	<link>https://www.mycity.rs/Opste-programiranje/Vesti-Danas-je-Dan-programera.html</link>
	<guid>https://www.mycity.rs/?p=1583981</guid>
	<author>nobody@mycity.rs (_ivKe)</author>
	<description>&lt;span style=&quot;text-align: center; display: block;&quot;&gt; &lt;span style=&quot;color: green&quot;&gt;&lt;span style=&quot;font-size: 24px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Programmers Day&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;color: purple&quot;&gt;utorak 13.09.2011&lt;/span&gt; 
&lt;br /&gt;
&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;
Danas, 13. septembram programeri slave Dan programera (Programmers Day), nezvanični međunarodni praznik koji je priznat samo u Rusiji.
&lt;br /&gt;
Ovaj praznik obeležava se 256. dan u godini (0x100 u heksadecimalnom kodu) koji u prostim godinama pada 13. septembra, a u prestupnim 12. septembra.
&lt;br /&gt;

&lt;br /&gt;
Broj 256 (2 na osmi) je izabran zbog toga što je to ukupan broj vrednosti koje se mogu predstaviti osmobitnim bajtovima, odnosno broj koji je veoma dobro poznat programerima. Polazeći od nule, 256-ta vrednost predstavljena sekvencijalnom permutacijom osam bitova je ceo broj 255, ili 0xff u heksadecimalnom kodu, odnosno 0b11111111 u binarnom.
&lt;br /&gt;

&lt;br /&gt;
Sledeći istu logiku, bela boja je izabrana zbog toga što predstavlja heksadecimalni broj sa najvećom vrednošću u 24-bitnoj gami boja, koja obuhvata crvenu, zelenu i plavu (red, gren, blue, RGB). Odnosno, 0xFFFFFF u heksadecimalnom kodu, tako da programeri širom sveta nose belu odeću kada obeležavaju Dan programera.
&lt;br /&gt;

&lt;br /&gt;
Dan programera je ustanovljen na predlog Valentina Balta, zaposlenog u kompaniji Parallel Technologies, koja se bavi web dizajnom. Od 2002. godine Balt je pokušavao da prikupi dovoljan broj potpisa za peticiju koja bi bila upućena vladi Rusije, sa zahtevom da 13. (ili 12.) septembar bude zvanično priznat kao praznik programera.
&lt;br /&gt;

&lt;br /&gt;
Konačno, 24. jula 2009. godine rusko ministarstvo za masovne komunikacije je objavilo nacrt odluke o ustanovljavanju novog radnog praznika, Dana programera, a 11. septembra 2009. ruski predsednik Dimitrij Medvedev potpisao je ukaz o proglašenju novog praznika.
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;
&lt;br /&gt;
Izvor:&lt;/span&gt; &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;</description>
	<pubDate>Fri, 13 Sep 2013 16:25:58 +0100</pubDate>
</item>
<item>
	<title>Zanimljive programerske fore</title>
	<link>https://www.mycity.rs/Opste-programiranje/Zanimljive-programerske-fore.html</link>
	<guid>https://www.mycity.rs/?p=1573819</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>Nema programera koji nije naleteo na neki neobičan problem koji se može vrlo lako rešiti, kao ni programera koji nije našao neku prečicu pri pisanju programa.
&lt;br /&gt;

&lt;br /&gt;
Napišite bilo šta zanimljivo što ima veze sa pisanjem koda, korišćenjem razvojnih okruženja, čudnim problemima s kojim ste se sretali i slično.
&lt;br /&gt;

&lt;br /&gt;
Da razbijem led... da li ste znali da možete u svojim programima bez velike muke da koristite fontove koji nisu instalirani? Iskoristite funkcije AddFontResourceEx i RemoveFontResourceEx.
&lt;br /&gt;

&lt;br /&gt;
P.S. ako ne postavite flag FR_PRIVATE prilikom dodavanja fonta, font će moći da koriste sve aplikacije (Word, Photoshop, itd...) &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Sat, 17 Aug 2013 21:36:07 +0100</pubDate>
</item>
<item>
	<title>Programerske pitalice</title>
	<link>https://www.mycity.rs/Opste-programiranje/Programerske-pitalice.html</link>
	<guid>https://www.mycity.rs/?p=1573464</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>Pravila su jednostavna. Postavi se pitanje koje ima veze s programiranjem (pitanja tipa &amp;quot;koje godine je napravljeno to i to&amp;quot; ili &amp;quot;ko je izmislio ovo ili ono&amp;quot; zaobiđite... hoćemo pitanja koja imaju veze sa pisanjem koda), prvi član koji odgovori tačno na postavljeno pitanje postavlja sledeće.
&lt;br /&gt;

&lt;br /&gt;
Slobodno postavljajte pitanja za sve programerske, skript, markup i sve ostale jezike.
&lt;br /&gt;

&lt;br /&gt;
Evo za početak nešto jednostavno: kako se u javi može proći kroz sve članove niza bez upotrebe indeksa u for petlji?</description>
	<pubDate>Fri, 16 Aug 2013 21:20:34 +0100</pubDate>
</item>
<item>
	<title>[4] Moderne aplikacije :: Uvod u REST i URL rewrite</title>
	<link>https://www.mycity.rs/Opste-programiranje/4-Moderne-aplikacije-Uvod-u-REST-i-URL-rewrite-2.html</link>
	<guid>https://www.mycity.rs/?p=1559997</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/3-Moderne-aplikacije-MySQL-server-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;MySQL server&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Nastaviće se...&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Potrebno znanje za praćenje teksta&lt;/span&gt;:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Korišćenje sistemskih alata
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Osnove RegEx-a
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Osnove PHP-a&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[1] Uvod&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[2] REST servisi i klijenti&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[3] URL rewrite&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;[3.1] Windows
&lt;br /&gt;
[3.2] Linux
&lt;br /&gt;
[3.3] Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[4] Korišćenje URL rewrite-a&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[5] Jednostavan REST servis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[1] Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Kada smo govorili o modernim aplikacijama, rekli smo da većina podatke čuva negde na internetu. Zbog toga je potrebno na neki način te podatke preneti sa internet servera u aplikaciju. Za prenos podataka se u većini slučajeva koristi &lt;span style=&quot;font-weight: bold&quot;&gt;TCP&lt;/span&gt; protokol koji, između ostalog, omogućava prenos podataka kroz lokalnu mrežu i internet. TCP protokol ima veoma široku primenu i omogućava razmenu bilo kakvih podataka i zbog toga je bitno da server i klijent koriste isti &lt;span style=&quot;font-style: italic&quot;&gt;jezik&lt;/span&gt; pri komunikaciji. Kada kažem &lt;span style=&quot;font-style: italic&quot;&gt;jezik&lt;/span&gt; mislim na precizno definisan skup komandi/poruka koje server i klijent moraju da podrže. Jedan od takvih jezika je &lt;span style=&quot;font-weight: bold&quot;&gt;HTTP&lt;/span&gt;, koji se koristi za komunikaciju internet servera i pretraživača. HTTP protokol je savršen za komunikaciju jer skoro sve mreže dozvoljavaju prenos HTTP paketa, lak je za korišćenje i daje dovoljnu slobodu za prenos različitih vrsta podataka. Uzevši u obzir i veliki broj biblioteka koje podržavaju HTTP protokol, sasvim je jasno zašto je on jedan od najčešće korišćenih protokola za razmenu informacija preko interneta.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2] REST servisi i klijenti&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;REST&lt;/span&gt; je jedan od načina prenosa podataka koji koristi HTTP protokol. Lepota REST-a je da ne zahteva komplikovane komande i odgovore, i vrlo često je moguće koristiti REST servise čak i preko pretraživača. Najčešće korišćene HTTP komande su GET, PUT, POST i DELETE. Na osnovu URL-a, komande i parametara, REST servis određuje koju akciju je potrebno izvršiti nad određenim podatkom u bazi.
&lt;br /&gt;

&lt;br /&gt;
Ono što je karakteristično za REST servise je da su podaci podeljeni na resurse, odnosno da svaki tip podatka ima svoj URL preko kojeg se vrše akcije nad podacima. Uzmimo za primer jednostavan imenik koji čuva podatke o osobama i njihovim telefonskim brojevima. Ako se odlučimo da osobama pristupamo preko resursa &lt;span style=&quot;font-weight: bold&quot;&gt;osobe&lt;/span&gt;, dovoljno je da otvorimo &lt;span style=&quot;font-weight: bold&quot;&gt;http://www.primer.com/osobe/&lt;/span&gt; i u pretraživaču bi dobili listu osoba. Kada otvaramo stranice preko pretraživača, komanda koja se šalje na server je GET. To znači da bi REST servis koji se nalazi na &lt;span style=&quot;font-weight: bold&quot;&gt;http://www.primer.com/&lt;/span&gt; dobio komandu &lt;span style=&quot;font-weight: bold&quot;&gt;GET&lt;/span&gt; za resurs &lt;span style=&quot;font-weight: bold&quot;&gt;osobe&lt;/span&gt; bez parametara, što znači da treba klijentu, odnosno pretraživaču da vrati listu osoba.
&lt;br /&gt;

&lt;br /&gt;
Standardne akcije za HTTP komande su:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;GET&lt;/span&gt;: vraća listu traženih podataka
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;POST&lt;/span&gt;: kreira nov podatak
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;PUT&lt;/span&gt;: menja podatak
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;DELETE&lt;/span&gt;: briše podatak&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako nastavimo priču sa &lt;span style=&quot;font-style: italic&quot;&gt;osobama&lt;/span&gt;, komandom GET bi dobili podatke osobe koja ima identifikator (polje u bazi koje je unikatno za svaku osobu) &lt;span style=&quot;font-weight: bold&quot;&gt;1&lt;/span&gt; ako bi zatražili URL &lt;span style=&quot;font-weight: bold&quot;&gt;http://www.primer.com/osobe/1&lt;/span&gt;. Ako bismo rekli da svaka osoba može imati više telefonskih brojeva, onda bi do tih telefonskih brojeva dolazili korišćenjem URL-a osobe na koji bi dodali i ime resursa za telefone, recimo ovako: &lt;span style=&quot;font-weight: bold&quot;&gt;http://www.primer.com/osobe/22/telefoni/&lt;/span&gt;. Dakle, kompletan zahtev od klijenta ka serveru ide preko HTTP komandi i parametara.
&lt;br /&gt;

&lt;br /&gt;
Kao što smo već rekli, server na svojoj strani analizira URL na osnovu kojeg određuje nad kojim podacima će komanda biti izvršena, i izvršava zadatu komandu. Rezultat koji će biti vraćen klijentu može biti u bilo kom tekstualnom obliku, a najčešće se koriste &lt;span style=&quot;font-weight: bold&quot;&gt;običan tekst&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;HTML&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;XML&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;JSON&lt;/span&gt;. Ukoliko server podržava vraćanje rezultata u više oblika, format uglavnom određuje klijent preko &lt;span style=&quot;font-weight: bold&quot;&gt;Accept&lt;/span&gt; parametra u HTTP zaglavlju. Za prikaz podataka u pretraživaču se koristi običan tekst ili HTML, jer su ti formati ljudima lako čitljivi, dok su XML i JSON odlični za obradu podataka u aplikacijama. Kada server pošalje podatke klijentu, njegov zadatak je da te podatke obradi i pripremi za prikaz korisniku.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3] URL rewrite&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ranije smo spomenuli da se kod REST servisa do podataka pristupa preko resursa, tj. URL-a koji im je dodeljen. Ako opet uzmemo primer osobe iz imenika, klijent od servera može tražiti podatak &lt;span style=&quot;font-weight: bold&quot;&gt;http://www.primer.com/osobe/142&lt;/span&gt; što u suštini znači da će internet server potražiti na disku direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;osobe&lt;/span&gt;, i u njemu direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;142&lt;/span&gt;, i pokušati klijentu da vrati sadržaj direktorijuma. Nama taj način ne odgovara jer bi to značilo da bismo morali da pravimo direktorijume za svaki kreirani zapis u bazi i da u njih napravimo datoteku koja će generisati sadržaj za klijenta. Taj problem se rešava korišćenjem malog dodatka za internet server koji se zove &lt;span style=&quot;font-weight: bold&quot;&gt;URL rewrite&lt;/span&gt;. Ono što on zna da uradi je da na osnovu definisanih pravila, obradi URL koji je bio poslan serveru i pripremi nov. Na taj način možemo imati jednu stranicu (npr: &lt;span style=&quot;font-style: italic&quot;&gt;index.php&lt;/span&gt;) koja kao parametre prima podatke o željenoj akciji, a URL rewriter će URL popraviti u npr: &lt;span style=&quot;font-weight: bold&quot;&gt;http://www.primer.com/index.php?res=&amp;quot;osobe&amp;quot;&amp;amp;id=&amp;quot;142&amp;quot;&lt;/span&gt;. Time smo omogućili klijentu da do podataka dolazi jednostavnim URL-om, dok na serveru nemamo brdo nepotrebnih direktorijume nego samo jednu stranicu koja je zadužena za obradu podataka.
&lt;br /&gt;

&lt;br /&gt;
Instalacija ovog dodatka je prilično jednostavna i ne zahteva puno vremena.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3.1] Windows&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Microsoft Internet Information Services&lt;/span&gt;
&lt;br /&gt;
Potrebno je samo preuzeti i instalirati URL Rewrite dodatak:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;32-bit&lt;/span&gt;: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;64-bit&lt;/span&gt;: &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;WAMP&lt;/span&gt;
&lt;br /&gt;
WAMP dolazi sa već instaliranim dodatkom &lt;span style=&quot;font-weight: bold&quot;&gt;rewrite_module&lt;/span&gt; i potrebno ga je samo uključiti preko WAMP ikonice:
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_65276016_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Apache&lt;/span&gt;
&lt;br /&gt;
Apache takođe dolazi sa već instaliranim dodatkom, a uključuje se tako što ćete otvoriti datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Apache24\conf\httpd.conf&lt;/span&gt; i odkomentirati (obrisati &lt;span style=&quot;font-weight: bold&quot;&gt;#&lt;/span&gt;) red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#LoadModule rewrite_module modules/mod_rewrite.so&lt;/code&gt;
&lt;br /&gt;
Nakon toga je potrebno ponovo pokrenuti Apache servis kucanjem sledeće komande u Command Prompt-u pokrenutim pod administratorskim nalogom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Apache24\bin\httpd –k restart&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3.2] Linux&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Uključivanje dodatka se vrši pokretanjem komande:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo a2enmod rewrite&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3.3] Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Kod Mac OS X-a je dodatak već instaliran i aktiviran, tako da nema nikakvih dodatnih koraka.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4] Korišćenje URL rewrite-a&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Da bismo videli kako URL rewrite radi, napravićemo jednu jednostavnu PHP stranicu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;!DOCTYPE html&amp;gt;
&lt;br /&gt;
&amp;#60;html&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;title&amp;gt;Movies&amp;#60;/title&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;body&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;?php
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;isset&amp;#40;$_GET&amp;#91;'genre'&amp;#93;&amp;#41; &amp;amp;&amp;amp; isset&amp;#40;$_GET&amp;#91;'year'&amp;#93;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Showing ' . $_GET&amp;#91;'genre'&amp;#93; . ' movies from ' . $_GET&amp;#91;'year'&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Missing parameters';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/body&amp;gt;
&lt;br /&gt;
&amp;#60;/html&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Stranica proverava da li su prosleđeni parametri &lt;span style=&quot;font-weight: bold&quot;&gt;genre&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;year&lt;/span&gt; i ispisuje poruku &lt;span style=&quot;font-weight: bold&quot;&gt;Showing &lt;span style=&quot;font-style: italic&quot;&gt;genre&lt;/span&gt; movies from &lt;span style=&quot;font-style: italic&quot;&gt;year&lt;/span&gt;&lt;/span&gt;. U slučaju da neki od parametara nije naveden ispisuje poruku &lt;span style=&quot;font-weight: bold&quot;&gt;Missing parameters&lt;/span&gt;. Stranicu možete testirati tako što ćete u pretraživaču otvoriti URL: &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/movies.php?genre=action&amp;amp;year=2013&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Naš cilj je da, uz URL rewrite, omogućimo pristup stranici preko sledećeg URL-a: &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/movies/&lt;span style=&quot;font-style: italic&quot;&gt;genre&lt;/span&gt;/&lt;span style=&quot;font-style: italic&quot;&gt;year&lt;/span&gt;&lt;/span&gt;. To znači da ga moramo tako podesiti da prepozna parametre u URL-u i prosledi ih &lt;span style=&quot;font-weight: bold&quot;&gt;movies.php&lt;/span&gt; stranici na način koji joj odgovara (preko GET parametara).
&lt;br /&gt;

&lt;br /&gt;
URL rewrite koristi &lt;span style=&quot;font-weight: bold&quot;&gt;RegEx&lt;/span&gt; da odluči da li će neki URL prepisati ili ne. RegEx koji definiše oblik ulaznog URL-a se zove &lt;span style=&quot;font-weight: bold&quot;&gt;pattern&lt;/span&gt; odnosno &lt;span style=&quot;font-weight: bold&quot;&gt;šablon&lt;/span&gt;. U našem slučaju želimo da na početku šablona uvek bude tekst &lt;span style=&quot;font-weight: bold&quot;&gt;movies/&lt;/span&gt; zatim ime žanra i godina odvojeni znakom &lt;span style=&quot;font-weight: bold&quot;&gt;/&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Krenimo redom… prvi deo šablona će izgledati ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;^movies/$&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
To znači da URL mora da počne tekstom &lt;span style=&quot;font-weight: bold&quot;&gt;movies/&lt;/span&gt; (znak &lt;span style=&quot;font-weight: bold&quot;&gt;^&lt;/span&gt; znači počinje sa) i da se završi istim tekstom (znak &lt;span style=&quot;font-weight: bold&quot;&gt;$&lt;/span&gt; znači završava se sa). Time smo efektivno ograničili prepisivanje URL-a samo na &lt;span style=&quot;font-weight: bold&quot;&gt;movies/&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Dodajmo još i ime žanra u priču. Ime žanra može sadržati bilo koje znakove i zbog toga ćemo u šablonu iskoristiti specijalan znak &lt;span style=&quot;font-weight: bold&quot;&gt;.&lt;/span&gt; koji dozvoljava sve znake. Uz njega ćemo dodati još jedan specijalan znak &lt;span style=&quot;font-weight: bold&quot;&gt;+&lt;/span&gt; koji kaže da se prethodno pravilo ponavlja više puta. Šablon sa uključenim žanrom izgleda ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;^movies/.+$&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za kraj nam ostaje još godina. Godina se sastoji iz više brojeva. Za definisanje niza dozvoljenih znakova se koriste specijalni znaci &lt;span style=&quot;font-weight: bold&quot;&gt;[&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;]&lt;/span&gt;. Ako želimo da dozvolimo samo brojeve u šablon moramo dodati &lt;span style=&quot;font-weight: bold&quot;&gt;[0-9]&lt;/span&gt;. Šablon sa godinom izgleda ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;^movies/.+/&amp;#91;0-9&amp;#93;+$&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Uslov iz ovog šablona će biti ispunjen za sve URL-ove koji počinju tekstom &lt;span style=&quot;font-weight: bold&quot;&gt;movies/&lt;/span&gt;, zatim imaju niz bilo kojih znakova, posle toga &lt;span style=&quot;font-weight: bold&quot;&gt;/&lt;/span&gt;, i na kraju niz brojeva.
&lt;br /&gt;

&lt;br /&gt;
Drugi deo pravila za prepisivanje URL-a se zove &lt;span style=&quot;font-weight: bold&quot;&gt;rewrite url&lt;/span&gt;, i predstavlja URL koji će biti poslan serveru kada je uslov iz šablona zadovoljen. Za početak u ovom delu možemo napisati samo:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;movies.php&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
To znači da će se otvoriti stranica &lt;span style=&quot;font-weight: bold&quot;&gt;movies.php&lt;/span&gt; bez parametara, svaki put kad uslov iz šablona bude ispunjen.  Sada smo već korak bliže, ali moramo još preneti i parametre za stranicu.
&lt;br /&gt;

&lt;br /&gt;
Da bi deo šablona preneli, potrebno je da dodamo još par specijalnih znakova. Specijalni znaci koji se koriste za vraćanje rezultata iz šablona su &lt;span style=&quot;font-weight: bold&quot;&gt;(&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;)&lt;/span&gt;. Svaki put kad uslov iz šablona bude zadovoljen, tekst koji se nalazi između zagrada se može iskoristiti kod sastavljanja URL-a za server. Moguće je više delova označiti na ovaj način, a parametrima se pristupa preko njihovog rednog broja. Parametar s rednim brojem 0 je ceo šablon, parametar s rednim brojem 1 je deo šablona koji se nalazi u prvim zagradama, s rednim brojem 2 je deo iz drugih zagrada, itd.
&lt;br /&gt;

&lt;br /&gt;
To znači da moramo malo da promenimo šablon:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;^movies/&amp;#40;.+&amp;#41;/&amp;#40;&amp;#91;0-9&amp;#93;+&amp;#41;$&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada prilikom prepisivanja URL-a možemo iskoristiti ova dva parametra:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;movies.php?genre=$1&amp;amp;year=$2&lt;/code&gt;
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Za pristip parametrima u IIS-u se umesto &lt;span style=&quot;font-weight: bold&quot;&gt;$&lt;span style=&quot;font-style: italic&quot;&gt;n&lt;/span&gt;&lt;/span&gt; koristi &lt;span style=&quot;font-weight: bold&quot;&gt;{R:&lt;span style=&quot;font-style: italic&quot;&gt;n&lt;/span&gt;}&lt;/span&gt;.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Microsoft Internet Information Services&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Otvorite IIS i na levoj strani izaberite vaš web sajt. Na desnoj strani nađite ikonu &lt;span style=&quot;font-weight: bold&quot;&gt;URL Rewrite&lt;/span&gt; i dva puta kliknite na nju:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Podešavanje URL rewrite-a u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_137166245_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
 
&lt;br /&gt;

&lt;br /&gt;
Otvoriće se prozor za uređivanje pravila. Za dodavanje novog pravila je potrebno na desnoj strani kliknuti na link &lt;span style=&quot;font-weight: bold&quot;&gt;Add Rule(s)…&lt;/span&gt;:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Dodavanje pravila za URL rewrite u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_137166245_2.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
 
&lt;br /&gt;

&lt;br /&gt;
Prozor koji se otvorio nam omogućava da izaberemo jedno od predefinisanih pravila. U ovom slučaju izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Blank rule&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Izbor predefinisanih URL rewrite pravila u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_137166245_3.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Konačno stižemo do dela u kojem ćemo definisati kako želimo da prepišemo URL. Prvi podatak koji je obavezan je ime pravila. Nazovimo ga &lt;span style=&quot;font-weight: bold&quot;&gt;Movies&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Sledeći obavezan podatak je &lt;span style=&quot;font-weight: bold&quot;&gt;Pattern&lt;/span&gt;. Upišimo šablon koji smo ranije objasnili:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;^movies/&amp;#40;.+&amp;#41;/&amp;#40;&amp;#91;0-9&amp;#93;+&amp;#41;$&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Zadnji obavezan parametar je &lt;span style=&quot;font-weight: bold&quot;&gt;Rewrite URL&lt;/span&gt;, preko kojeg definišemo koja stranica će biti otvorena kada je uslov iz šablona zadovoljen:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;movies.php?genre=&amp;#123;R&amp;#58;1&amp;#125;&amp;amp;year=&amp;#123;R&amp;#58;2&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Uređivanje pravila za URL rewrite u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_137166245_4.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
 
&lt;br /&gt;

&lt;br /&gt;
Na kraju je potrebno na desnoj strni pritisnuti &lt;span style=&quot;font-weight: bold&quot;&gt;Apply&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Apache&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Kada je apache u pitanju, za podešavanje URL rewrite-a se najčešće koristi &lt;span style=&quot;font-weight: bold&quot;&gt;.htaccess&lt;/span&gt; datoteka. Ako se ta datoteka nalazi u nekom od direktorijuma koji se koriste za prikaz internet sadržaja, njen sadržaj dodaje nova podešavanja ili menja osnovna koja su podešena u datotekama za konfigurisanje Apache-a. Mi ćemo se sada ograničiti samo na podešavanje URL rewrite-a.
&lt;br /&gt;

&lt;br /&gt;
Da bismo uključili prepisivanje URL-a, potrebno je napraviti &lt;span style=&quot;font-weight: bold&quot;&gt;.htaccess&lt;/span&gt; datoteku u direktorijum iz kojeg Apache prikazuje internet sadržaj, i u nju upisati:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;RewriteEngine On
&lt;br /&gt;
RewriteRule ^movies/&amp;#40;.+&amp;#41;/&amp;#40;&amp;#91;0-9&amp;#93;+&amp;#41;$ movies.php?genre=$1&amp;amp;year=$2&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Prvi red uključuje prepisivanje URL-a, dok je u drugom redu definisan šablon i URL koji će biti otvoren ako je uslov iz šablona zadovoljen.
&lt;br /&gt;

&lt;br /&gt;
Standardna podešavanja za Apache onemogućavaju uključivanje URL rewrite-a, i zbog toga je potrebno promeniti još jednu datoteku.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Windows&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
U datoteci &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Apache24\conf\httpd.conf&lt;/span&gt; pronađite deo u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;Directory &amp;quot;c&amp;#58;/Apache24/htdocs&amp;quot;&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # Possible values for the Options directive are &amp;quot;None&amp;quot;, &amp;quot;All&amp;quot;,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # or any combination of&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #&amp;nbsp; &amp;nbsp;Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # Note that &amp;quot;MultiViews&amp;quot; must be named *explicitly* --- &amp;quot;Options All&amp;quot;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # doesn't give it to you.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # The Options directive is both complicated and important.&amp;nbsp; Please see
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # http&amp;#58;//httpd.apache.org/docs/2.4/mod/core.html#options
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # for more information.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Options Indexes FollowSymLinks
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # AllowOverride controls what directives may be placed in .htaccess files.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # It can be &amp;quot;All&amp;quot;, &amp;quot;None&amp;quot;, or any combination of the keywords&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #&amp;nbsp; &amp;nbsp;Options FileInfo AuthConfig Limit
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; AllowOverride None
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # Controls who can get stuff from this server.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Require all granted
&lt;br /&gt;
&amp;#60;/Directory&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U tom delu promenite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;AllowOverride None&lt;/code&gt;
&lt;br /&gt;
u
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;AllowOverride All&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Linux&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Otvorite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;/etc/apache2/sites-available/default&lt;/span&gt; i potražite deo u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;Directory /var/www/&amp;gt;
&lt;br /&gt;
Options Indexes FollowSymLinks MultiViews
&lt;br /&gt;
AllowOverride None
&lt;br /&gt;
Order allow,deny
&lt;br /&gt;
allow from all
&lt;br /&gt;
&amp;#60;/Directory&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U tom delu promenite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;AllowOverride None&lt;/code&gt;
&lt;br /&gt;
u
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;AllowOverride All&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Mac OS X&lt;/span&gt;
&lt;br /&gt;
Otvorite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;/private/etc/apache2/httpd.conf&lt;/span&gt; i pronađite deo u kojem piše sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;Directory &amp;quot;/Library/WebServer/Documents&amp;quot;&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # Possible values for the Options directive are &amp;quot;None&amp;quot;, &amp;quot;All&amp;quot;,
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # or any combination of&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #&amp;nbsp; &amp;nbsp;Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # Note that &amp;quot;MultiViews&amp;quot; must be named *explicitly* --- &amp;quot;Options All&amp;quot;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # doesn't give it to you.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # The Options directive is both complicated and important.&amp;nbsp; Please see
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # http&amp;#58;//httpd.apache.org/docs/2.2/mod/core.html#options
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # for more information.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Options Indexes FollowSymLinks MultiViews
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # AllowOverride controls what directives may be placed in .htaccess files.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # It can be &amp;quot;All&amp;quot;, &amp;quot;None&amp;quot;, or any combination of the keywords&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #&amp;nbsp; &amp;nbsp;Options FileInfo AuthConfig Limit
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; AllowOverride None
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # Controls who can get stuff from this server.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Order allow,deny
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Allow from all
&lt;br /&gt;

&lt;br /&gt;
&amp;#60;/Directory&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U tom delu promenite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;AllowOverride None&lt;/code&gt;
&lt;br /&gt;
u
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;AllowOverride All&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Testiranje&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Nakon podešavanja, možemo probati nekoliko linkova da vidimo kako URL rewrite radi:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/movies/action/2013&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/movies/horror/1980&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/movies/misc/2000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[5] Jednostavan REST servis&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Sad već imamo dovoljno znanja da napravimo jedan mali REST servis. Za sada se nećemo opterećivati bazama, menjanjem podataka i slično, nego ćemo napraviti mali servis koji će znati da nam vrati trenutno vreme na serveru i da izvršava osnovne matematičke operacije nad dva broja.
&lt;br /&gt;

&lt;br /&gt;
Prvo ćemo napisati pravila za prepisivanje URL-a. Za razliku od prethodnog primera, u kojem smo stranici prosleđivali delove URL-a, servisu ćemo proslediti sve i pustiti ga da sam odluči šta želi da uradi.
&lt;br /&gt;

&lt;br /&gt;
Kao RegEx za upoređivanje ćemo koristiti sledeći tekst:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;^simplerest/&amp;#40;.+&amp;#41;$&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Što znači da sve što počinje tekstom &lt;span style=&quot;font-weight: bold&quot;&gt;simplerest/&lt;/span&gt; odgovara uslovu, a sve što ide posle toga će biti parametar &lt;span style=&quot;font-weight: bold&quot;&gt;command&lt;/span&gt; za servis.
&lt;br /&gt;

&lt;br /&gt;
Drugi deo pravila će proslediti parametar servisu &lt;span style=&quot;font-weight: bold&quot;&gt;simplerest.php&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;simplerest.php?command=$1&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pošto ćemo koristiti GET metodu za komunikaciju sa servisom, moramo na neki način preneti i GET parametre. Na Apache serveru se to postiže tako što se na kraju pravila doda &lt;span style=&quot;font-weight: bold&quot;&gt;[QSA]&lt;/span&gt;, dok se kod IIS-a čekira &lt;span style=&quot;font-weight: bold&quot;&gt;Append query string&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Sada ćemo napraviti datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;simplerest.php&lt;/span&gt; u koju ćemo za početak napraviti samo osnovu servisa:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;?php
&lt;br /&gt;
class processor
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; private $command = '';
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; function __construct&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;isset&amp;#40;$_GET&amp;#91;'command'&amp;#93;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;command = $_GET&amp;#91;'command'&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; function run&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $cmd = explode&amp;#40;'/', $this-&amp;gt;command&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;method_exists&amp;#40;$this, $cmd&amp;#91;0&amp;#93;&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;$cmd&amp;#91;0&amp;#93;&amp;#40;$cmd&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Invalid command';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;#40;new processor&amp;#40;&amp;#41;&amp;#41;-&amp;gt;run&amp;#40;&amp;#41;;
&lt;br /&gt;
?&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pravilo za prepisivanje, koje smo ranije napisali, i ova klasica nam omogućavaju da vrlo lako dodajemo novu funkcionalnost servisu.
&lt;br /&gt;

&lt;br /&gt;
Pogledajmo šta ova klasa tačno radi. U konstruktoru pročita &lt;span style=&quot;font-weight: bold&quot;&gt;command&lt;/span&gt; parametar koji dobije od Rewrite URL-a. U tom parametru se nalazi deo URL-a posle &lt;span style=&quot;font-weight: bold&quot;&gt;simplerest/&lt;/span&gt;. To znači da ako otvorimo stranicu &lt;span style=&quot;font-weight: bold&quot;&gt;localhost/simplerest/test/1/2/3&lt;/span&gt;, u &lt;span style=&quot;font-weight: bold&quot;&gt;command&lt;/span&gt; će biti upisano samo &lt;span style=&quot;font-weight: bold&quot;&gt;test/1/2/3&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Run&lt;/span&gt; funkcija na početku rastavi komandu na delove koristeći znak &lt;span style=&quot;font-weight: bold&quot;&gt;/&lt;/span&gt; kao separator i nakon toga sledi &lt;span style=&quot;font-style: italic&quot;&gt;magija&lt;/span&gt;. Funkcijom &lt;span style=&quot;font-weight: bold&quot;&gt;method_exists&lt;/span&gt; proveravamo da li klasa ima funkciju koja se zove kao prvi deo komande i poziva je ako postoji prosleđujući joj rastavljenu komandu. U suprotnom se ispisuje poruka o grešci.
&lt;br /&gt;

&lt;br /&gt;
Na početku poglavlja smo rekli da ćemo napraviti servis koji zna da vrati trenutno vreme. Napravićemo još jednu funkciju u klasi koja se zove &lt;span style=&quot;font-weight: bold&quot;&gt;getdate&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;private function getdate&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; echo &amp;#40;new DateTime&amp;#40;&amp;#41;&amp;#41;-&amp;gt;format&amp;#40;DateTime&amp;#58;&amp;#58;W3C&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Kao što vidite, funkcija jednostavno ispiše trenutno vreme i to je to. Dodavanjem ove funkcije smo omogućili korisnicima našeg servisa da dobiju vreme sa servera koristeći adresu: &lt;span style=&quot;font-weight: bold&quot;&gt;localhost/simplerest/getdate&lt;/span&gt;.
&lt;br /&gt;
Toliko je jednostavno dodati novu funkciju.
&lt;br /&gt;

&lt;br /&gt;
Možemo dodati i funkciju koja zahteva par parametara… recimo funkcija za sabiranje:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;private function add&amp;#40;$cmd&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; $res = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; foreach &amp;#40;$cmd as $value&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;is_numeric&amp;#40;$value&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $res += $value;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; echo &amp;quot;$res&amp;quot;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Funkcija protrči kroz sve delove komande i sabere sve brojeve. Ova funkcija se koristi preko adrese: &lt;span style=&quot;font-weight: bold&quot;&gt;localhost/simplerest/add/10/15/30&lt;/span&gt;.
&lt;br /&gt;
Rezultat je zbir svih brojeva koji se nalaze u komandi.
&lt;br /&gt;

&lt;br /&gt;
Ovakav način pisanja servisa (Rewrite URL prosledi servisu celu komandu, a servis se brine oko obrade i izvršavanja) se prilično često koristi jer ne zahteva previše rada za širenje/menjanje funkcionalnosti. Na početku poglavlja smo rekli da ćemo napraviti servis koji će znadi da obavlja osnovne matematičke operacije… vreme je da napišete i funkcije za oduzimanje, množenje i deljenje &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/3-Moderne-aplikacije-MySQL-server-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;MySQL server&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Nastaviće se...&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description>
	<pubDate>Thu, 11 Jul 2013 17:48:22 +0100</pubDate>
</item>
<item>
	<title>[3] Moderne aplikacije :: MySQL server</title>
	<link>https://www.mycity.rs/Opste-programiranje/3-Moderne-aplikacije-MySQL-server-2.html</link>
	<guid>https://www.mycity.rs/?p=1517549</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/2-Moderne-aplikacije-Internet-serveri-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Internet serveri&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/4-Moderne-aplikacije-Uvod-u-REST-i-URL-rewrite-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Uvod u REST i URL rewrite&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Potrebno znanje za praćenje teksta&lt;/span&gt;:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Korišćenje sistemskih alata
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Instalacija programa&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[1] Uvod&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[2] Instalacija i podešavanje&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[2.1] Windows&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[2.2] Linux&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[2.3] Mac OS X&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[3] Osnovne komande&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[4] PHP aplikacija za rad sa bazom&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[4.1] Pripremanje baze&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[4.2] MySQL Improved Extension&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[4.3] PHP Data Objects&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[1] Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Većina ljudi kada kaže &lt;span style=&quot;font-weight: bold&quot;&gt;baza&lt;/span&gt; u stvari misli na &lt;span style=&quot;font-weight: bold&quot;&gt;sistem za upravljanje relacionim bazama podataka&lt;/span&gt; (eng. relational database management system). &lt;span style=&quot;font-weight: bold&quot;&gt;MySQL&lt;/span&gt; je danas jedan od najrasprostranjenijih sistema. U velikom broju slučajeva ćete na sajtovima za gostovanje internet stranica imati na raspolaganju baš MySQL server, i zbog toga ćemo ga i mi koristiti za rad sa bazama.
&lt;br /&gt;

&lt;br /&gt;
Za razliku čuvanja podataka u običnim tekstualnim datotekama, koje se koristi u školskim zadacima, korišćenje sistema za upravljanje bazama podataka nam omogućava brži i lakši rad sa podacima. Možemo kontrolisati u kakvom formatu moraju biti podaci, ko sve ima pristup do njih, imamo na raspolaganju jednostavne komande za pretragu podataka i još mnogo drugih stvari na poljima fleksibilnosti, brzine i bezbednosti. Još jedna od bitnih razlika je da baze omogućavaju višekorisnički način rada, što znači da u jednom momentu, više korisnika može vršiti operacije nad podacima.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2] Instalacija i podešavanje&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Cilj ovog dela je da instaliramo MySQL server, da ga pripremimo za povezivanje klijenata i da omogućimo pristup bazama preko PHP-a. PHP ima odličnu podršku za rad sa MySQL serverom i najčešće ćete na sajtovima za gostovanje internet stranica naći već kompletno podešeno okruženje (Apache + PHP + MySQL).
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.1] Windows&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ako ste u prošlom članku pratili instalaciju Apcahe + PHP preko &lt;span style=&quot;font-weight: bold&quot;&gt;WAMP-a&lt;/span&gt;, onda već imate podešen i MySQL server i možete preći na poglavlje &lt;span style=&quot;font-weight: bold&quot;&gt;[3] Osnovne komande&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Preuzmite &lt;span style=&quot;font-weight: bold&quot;&gt;binarnu verziju MySQL servera&lt;/span&gt;. Raspakujte sadržaj arhive u direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;C:\&lt;/span&gt;, a zatim preimenujte direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;C:\mysql-5.6.10-win32&lt;/span&gt;, u &lt;span style=&quot;font-weight: bold&quot;&gt;C:\MySQL5&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Nakon raspakivanja, potrebno je napraviti konfiguraciju. Sve što treba da uradite je da kopirate datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\MySQL5\my-default.ini&lt;/span&gt; u datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\MySQL5\my.ini&lt;/span&gt;, i popravite dve linije. Pronađite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;# basedir = .....
&lt;br /&gt;
# datadir = .....&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
i popravite ga u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;basedir = C&amp;#58;\\MySQL5
&lt;br /&gt;
datadir = C&amp;#58;\\MySQL5\\data&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Time smo serveru rekli gde se nalazi instalacija i u kom direktorijumu se nalaze podaci.
&lt;br /&gt;

&lt;br /&gt;
Sledeći korak je instalacija i pokretanje servisa. Otvorite Command Prompt pod administratorskim nalogom, i ukucajte sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\MySQL5\bin\mysqld.exe -install
&lt;br /&gt;
net start MySQL&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
MySQL je sada instaliran i pokrenu, ali potrebno je odraditi još par sitnica koje će ga učiniti bezbednijim.
&lt;br /&gt;

&lt;br /&gt;
Trenutno korisnik &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; koji ima prava da menja sve podatke u bazi, nema definisanu šifru. Da bi postavili šifru, prvo se moramo povezati na MySQL server komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\MySQL5\bin\mysql -u root&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Dočekaće vas konzolna klijent aplikacija, preko koje možemo serveru slati komande. Recimo da &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisniku želimo da postavimo šifru &lt;span style=&quot;font-weight: bold&quot;&gt;toor&lt;/span&gt;, u tom slučaju je potrebno ukucati sledeću komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;set password = password&amp;#40;'toor'&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Da bismo proverili da li je promena šifre uspela, prvo se moramo zatvoriti klijenta:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;quit;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
I zatim se ponovo prijaviti, uz dodavanje parametra &lt;span style=&quot;font-weight: bold&quot;&gt;-p&lt;/span&gt; (taj parametar znači da želimo da ukucamo i šifru):
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\MySQL5\bin\mysql -u root -p&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovog puta ćemo pre povezivanja na server, morati da ukucamo šifru. U slučaju da zaboravite da dodate &lt;span style=&quot;font-weight: bold&quot;&gt;-p&lt;/span&gt;, dobićete grešku jer sada korisnik &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; ima šifru.
&lt;br /&gt;

&lt;br /&gt;
Da bismo onemogućili prijavu anonimnih korisnika (bez korisničkog imena), potrebno je da izvršimo sledeću komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;delete from mysql.user where user = '';&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Uz standardnu instalaciju MySQL servera dolazi i prazna testna baza. Ako želite da je izbrišete, izvršite sledeću komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;drop database test;
&lt;br /&gt;
delete from mysql.db where db = 'test' or db = 'test\\_%';&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za kraj, ukucajte sledeće komande da bi promene koje smo napravili odmah stupile na snagu, i da bi zatvorili konekciju sa serverom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;flush privileges;
&lt;br /&gt;
quit;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovim smo završili instalaciju i podešavanje MySQL servera.
&lt;br /&gt;

&lt;br /&gt;
Nakon instalacije MySQL-a, potrebno je napraviti par malih izmena u &lt;span style=&quot;font-weight: bold&quot;&gt;php.ini&lt;/span&gt; datoteci. Predpostavićemo da ste PHP instalirali u direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;C:\PHP5&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Pošto se u radu s podacima, često srećemo s datumima i vremenima, bitno je da PHP-u naznačimo u kojoj vremenskoj zoni se nalazimo. Vremenska zona koja odgovara Srbiji je &lt;span style=&quot;font-weight: bold&quot;&gt;Europe/Belgrade&lt;/span&gt;, a ako želite, možete pogledati i &lt;span style=&quot;font-weight: bold&quot;&gt;kompletnu listu podržanih vremenskih zona&lt;/span&gt;. Otvorite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\PHP5\php.ini&lt;/span&gt;, pronađite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;;date.timezone =&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
i popravite ga u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;date.timezone = Europe/Belgrade&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
PHP ima mogućnost da svoju osnovnu funkcionalnost raširi dodatnim modulima. Uz pomoć modula ćemo dodati i podršku za rad sa MySQL serverom. Pre nego što uključimo potrebne module, moramo PHP-u reći gde se oni nalaze. Standardna lokacija je pod direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;ext&lt;/span&gt;. Otvorite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\PHP5\php.ini&lt;/span&gt;, pronađite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;; extension_dir = &amp;quot;ext&amp;quot;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
i popravite ga u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;extension_dir = &amp;quot;C&amp;#58;\PHP5\ext&amp;quot;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za kraj ćemo uključiti dva modula koji služe za rad sa MySQL serverom. Mogućnosti koje nude ćemo kasnije obraditi. Otvorite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\PHP5\php.ini&lt;/span&gt;, pronađite redove u kojima piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;;extension=php_mysqli.dll
&lt;br /&gt;
;extension=php_pdo_mysql.dll&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
i odkomentirajte ih (obrišite znak &lt;span style=&quot;font-weight: bold&quot;&gt;;&lt;/span&gt; sa početka linije).
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.2] Linux&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Instalacija na Linux-ima se razlikuje od distribucije do distribucije. Mi ćemo se fokusirati na &lt;span style=&quot;font-weight: bold&quot;&gt;Debian&lt;/span&gt; i njegove derivate, &lt;span style=&quot;font-weight: bold&quot;&gt;Ubuntu&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;Linux Mint&lt;/span&gt;. Prvo instalirajte sledeći paket:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo apt-get install mysql-server&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U toku instalacije će vas skripta pitati da li želite da promenite šifru za korisnika root. Taj korisnik se uglavnom koristi za administraciju servera i ima prava da menja sve podatke koji se nalaze u bazama. Zbog toga je preporučljivo da u ovom koraku upišete šifru (šifru ćete moći i kasnije da dodate/promenite). U nastavku teksta ćemo podrazumevati da ste postavili šifru &lt;span style=&quot;font-weight: bold&quot;&gt;toor&lt;/span&gt;:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Upis šifre za &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnika u Ubuntu 12.10&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_151476360_Screenshot%20from%202013-03-14%2018%5E%2554%5E%2516.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ako se odlučite za promenu šifre, uslediće još jedan prozor u kojem ćete morati ponovo da upišete šifru:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Potvrda šifre za &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnika u Ubuntu 12.10&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_151476360_Screenshot%20from%202013-03-14%2018%5E%2554%5E%2558.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Nakon instalacije je preporučljivo pokrenuti komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;mysql_secure_installation&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ova komanda se koristi za povećanje sigurnosti podataka tako što postavlja/menja šifru za &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnika, uklanja mogućnost prijave anonimnih korisnika (prijava bez korisničkog imena), onemogućava prijavu &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnika sa udaljenih računara i briše testnu bazu.
&lt;br /&gt;

&lt;br /&gt;
Nakon pokretanja komande, upišite trenutnu šifru za &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnika, ili samo pritisnite enter ako je prilikom instalacije niste postavili:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Enter current password for root &amp;#40;enter for none&amp;#41;&amp;#58;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako želite da promenite šifru, odgovorite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;, a zatim unesite šifru i potvrdite je:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Change the root password? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Brisanje anonimnih korisnika je preporučljivo, i zato na ovom koraku izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Remove anonymous users? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Zbog privilegija koje korisnik &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; ima, preporučljivo je da na ovom koraku izaberete &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;, što će onemogućiti njegovu prijavu sa drugih računara u mreži ili sa interneta:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Disallow root login remotely? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Uz standardnu instalaciju MySQL servera dolazi i prazna testna baza. Ako želite da je izbrišete, izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Remove test database and access to it? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Na zadnjem koraku izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt; da bi promene koje smo napravili odmah stupile na snagu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Reload privilege tables now? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Nakon instalacije MySQL-a, potrebno je napraviti par malih izmena i na PHP strani. Prvo instalirajte sledeći paket:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo apt-get install php5-mysqlnd&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pošto se u radu s podacima, često srećemo s datumima i vremenima, bitno je da PHP-u naznačimo u kojoj vremenskoj zoni se nalazimo. Vremenska zona koja odgovara Srbiji je &lt;span style=&quot;font-weight: bold&quot;&gt;Europe/Belgrade&lt;/span&gt;, a ako želite, možete pogledati i &lt;span style=&quot;font-weight: bold&quot;&gt;kompletnu listu podržanih vremenskih zona&lt;/span&gt;. Sledeća komanda će napraviti datoteku u kojoj ćemo definisati vremensku zonu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo nano /etc/php5/apache2/conf.d/10-timezone.ini&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U datoteku upišite sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#91;Date&amp;#93;
&lt;br /&gt;
date.timezone = Europe/Belgrade&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Nakon toga je potrebno ponovo pokrenuti Apache server:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo /etc/init.d/apache2 restart&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.3] Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Preuzmite binarnu verziju servera za vaš računar:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Mac OS X 10.7/10.8
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;X86 32-bit DMG&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;X86 64-bit DMG&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Mac OS X 10.6
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;X86 32-bit DMG&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;X86 64-bit DMG&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Instalirajte paket &lt;span style=&quot;font-weight: bold&quot;&gt;mysql-5.6.10&lt;/span&gt; u kojem se nalazi MySQL server, a zatim &lt;span style=&quot;font-weight: bold&quot;&gt;MySQLStartupItem&lt;/span&gt; koji će nam omogućiti pokretanje MySQL-a prilikom podizanja sistema.
&lt;br /&gt;

&lt;br /&gt;
Nakon toga, pokrenite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;MySQL.prefPane&lt;/span&gt;. Ta datoteka sadrži potrebne informacije da se MySQL integriše u sistemska podešavanja. Prilikom instalacije ćete moći da izaberete da li će se integracija izvršiti samo za trenutnog ili za sve korisnike. Ako želite da samo vaš korisnik može da pokreće i zaustavlja MySQL servis preko sistemskih podešavanja, izaberite instalaciju samo za trenutnog korisnika, u suprotnom izaberite instalaciju za sve: 
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Integrisanje MySQL podešavanja u Mac OS X 10.8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_170411700_Screen%20Shot%202013-03-14%20at%208.48.00%20PM.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Pokretanje MySQL servera u Mac OS X 10.8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_170411700_Screen%20Shot%202013-03-14%20at%208.54.20%20PM.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Nakon instalacije je preporučljivo pokrenuti komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cd /usr/local/mysql
&lt;br /&gt;
sudo ./bin/mysql_secure_installation&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ova komanda se koristi za povećanje sigurnosti podataka tako što postavlja/menja šifru za &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnika, uklanja mogućnost prijave anonimnih korisnika (prijava bez korisničkog imena), onemogućava prijavu &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnika sa udaljenih računara i briše testnu bazu.
&lt;br /&gt;

&lt;br /&gt;
Nakon pokretanja komande, samo pritisnite enter, jer &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; korisnik trenutno nema šifru:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Enter current password for root &amp;#40;enter for none&amp;#41;&amp;#58;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pošto želimo da promenimo šifru, odgovorite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;, a zatim unesite novu šifru i potvrdite je (u daljem tekstu ćemo podrazumevati da ste dali šifru &lt;span style=&quot;font-weight: bold&quot;&gt;toor&lt;/span&gt;):
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Change the root password? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Brisanje anonimnih korisnika je preporučljivo, i zato na ovom koraku izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Remove anonymous users? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Zbog privilegija koje korisnik &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; ima, preporučljivo je da na ovom koraku izaberete &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;, što će onemogućiti njegovu prijavu sa drugih računara u mreži ili sa interneta:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Disallow root login remotely? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Uz standardnu instalaciju MySQL servera dolazi i prazna testna baza. Ako želite da je izbrišete, izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Remove test database and access to it? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Na zadnjem koraku izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Y&lt;/span&gt; da bi promene koje smo napravili odmah stupile na snagu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Reload privilege tables now? &amp;#91;Y/n&amp;#93;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pošto se u radu s podacima, često srećemo s datumima i vremenima, bitno je da PHP-u naznačimo u kojoj vremenskoj zoni se nalazimo. Vremenska zona koja odgovara Srbiji je &lt;span style=&quot;font-weight: bold&quot;&gt;Europe/Belgrade&lt;/span&gt;, a ako želite, možete pogledati i &lt;span style=&quot;font-weight: bold&quot;&gt;kompletnu listu podržanih vremenskih zona&lt;/span&gt;. Sledeća komanda će otvoriti datoteku s podešavanjima za PHP:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo nano /private/etc/php.ini&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pronađite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;;date.timezone =&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
i promenite ga u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;date.timezone = Europe/Belgrade&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Nakon toga, ponovo pokrenite Apache server:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo apachectl restart&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3] Osnovne komande&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Osnovna instalacija MySQL-a nam nudi konzolni program za konekciju na server i izvršavanje akcija nad podacima. Ako ste tačno pratili korake, klijenta možete pokrenuti sledećom komandom:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Windows: &lt;span style=&quot;font-weight: bold&quot;&gt;C:\MySQL5\bin\mysql&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Linux: &lt;span style=&quot;font-weight: bold&quot;&gt;mysql&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Mac OS X: &lt;span style=&quot;font-weight: bold&quot;&gt;/usr/local/mysql/bin/mysql&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Na Windows-u i Mac OS X-u možete dodati direktorijum, u kojem se nalazi &lt;span style=&quot;font-weight: bold&quot;&gt;mysql&lt;/span&gt; program, u &lt;span style=&quot;font-weight: bold&quot;&gt;PATH&lt;/span&gt; što će vam omogućiti da iz bilo kog direktorijuma program možete pokrenuti kucajući samo &lt;span style=&quot;font-weight: bold&quot;&gt;mysql&lt;/span&gt; (isto kao na Linux-u).&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Prilikom pokretanja programa &lt;span style=&quot;font-weight: bold&quot;&gt;mysql&lt;/span&gt;, potrebno je navesti korisničko ime pod kojim želimo da se prijavimo na server. Taj podatak se definiše parametrom &lt;span style=&quot;font-weight: bold&quot;&gt;-u&lt;/span&gt;. Ako želimo da se prijavimo kao korisnik &lt;span style=&quot;font-weight: bold&quot;&gt;test&lt;/span&gt;, program ćemo pokrenuti ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;mysql -u test&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Još jedan parametar koji se koristi skoro uvek je &lt;span style=&quot;font-weight: bold&quot;&gt;-p&lt;/span&gt;. Taj parametar označava da korisničko ime pod kojim ćemo se prijaviti ima i šifru. Šifra se upisuje tek kada se klijent pokrene i zatraži je:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;mysql -u test -p
&lt;br /&gt;
Enter password&amp;#58; &lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Da bismo se prijavili na server koji smo instalirali, moramo se prijaviti kao &lt;span style=&quot;font-weight: bold&quot;&gt;root&lt;/span&gt; i uneti šifru &lt;span style=&quot;font-weight: bold&quot;&gt;toor&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;mysql -u root -p
&lt;br /&gt;
Enter password&amp;#58; ****&lt;/code&gt;
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Ako ste prilikom instalacije izabrali drugu šifru, upišite nju umesto &lt;span style=&quot;font-weight: bold&quot;&gt;toor&lt;/span&gt;.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Nakon uspešne prijave, dočekaće vas pozdravna poruka, a odmah za njom će klijent naznačiti da je spreman tekstom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;mysql&amp;gt; &lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Da bismo uopšte mogli da radimo s podacima, prvo moramo da napravimo bazu u kojoj će se oni nalaziti. Na bazu za sada možete gledati kao na skup podataka organizovanih po tabelama. Pravljenje baze se vrši sledećom komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;create database imebaze;&lt;/code&gt;
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Obratite pažnju na zadnji karakter! Komande se završavaju znakom &lt;span style=&quot;font-weight: bold&quot;&gt;;&lt;/span&gt;.
&lt;br /&gt;
MySQL ne obraća pažnju na velika i mala slova u komandama. &lt;span style=&quot;font-weight: bold&quot;&gt;CREATE&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;create&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;cReAtE&lt;/span&gt; imaju isto značenje za MySQL.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Napravimo bazu s imenom &lt;span style=&quot;font-weight: bold&quot;&gt;test&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;create database test;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Da bi videli koje sve baze postoje na serveru, ukucajte komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;show databases;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Rezultat komande će izgledati približno ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+--------------------+
&lt;br /&gt;
| Database&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+--------------------+
&lt;br /&gt;
| information_schema |
&lt;br /&gt;
| mysql&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| performance_schema |
&lt;br /&gt;
| test&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+--------------------+
&lt;br /&gt;
4 rows in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Prve tri baze koristi server i ne smemo ih dirati ako ne znamo tačno šta radimo. Zadnja je naša baza koju smo kreirali u prošlom koraku.
&lt;br /&gt;

&lt;br /&gt;
MySQL nam omogućava da izaberemo &lt;span style=&quot;font-weight: bold&quot;&gt;aktivnu&lt;/span&gt; bazu. Komanda ima ovaj oblik:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;use imebaze;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovaj korak nije obavezan, ali se prilično često koristi jer smanjuje mogućnost pravljenja grešaka, povećava portabilnost, a i identifikatori objekata su kraći. Obratite pažnju na to da baza ostaje &lt;span style=&quot;font-weight: bold&quot;&gt;aktivna&lt;/span&gt; sve dok ne izaberemo neku drugu. Pogledajmo sledeći primer: recimo da imamo tabelu &lt;span style=&quot;font-weight: bold&quot;&gt;tabela&lt;/span&gt; u bazi &lt;span style=&quot;font-weight: bold&quot;&gt;baza&lt;/span&gt;. Njeno &lt;span style=&quot;font-weight: bold&quot;&gt;puno ime&lt;/span&gt; je &lt;span style=&quot;font-weight: bold&quot;&gt;baza.tabela&lt;/span&gt;. Tako je možemo referencirati bez obzira na to koja baza je aktivna. Ako aktiviramo bazu &lt;span style=&quot;font-weight: bold&quot;&gt;baza&lt;/span&gt;, onda do tabele možemo pristupiti imenom &lt;span style=&quot;font-weight: bold&quot;&gt;tabela&lt;/span&gt;. Na to možete gledati kao na direktorijume. Ako želite da otvorite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;tabela&lt;/span&gt; koja se nalazi u direktorijumu &lt;span style=&quot;font-weight: bold&quot;&gt;baza&lt;/span&gt;, možete je otvoriti koristeći njenu celu putanju &lt;span style=&quot;font-weight: bold&quot;&gt;baza.tabela&lt;/span&gt;, ili promeniti direktorijum komandom &lt;span style=&quot;font-weight: bold&quot;&gt;use baza;&lt;/span&gt;, i otvoriti datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;tabela&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Aktivirajmo našu bazu &lt;span style=&quot;font-weight: bold&quot;&gt;test&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;use test;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako želite da pogledate koja baza je aktivna, ukucajte komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select database&amp;#40;&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Rezultat će izgledati ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+------------+
&lt;br /&gt;
| database&amp;#40;&amp;#41; |
&lt;br /&gt;
+------------+
&lt;br /&gt;
| test&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+------------+
&lt;br /&gt;
1 row in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za rad sa podacima nam osim baze trebaju i tabele. Tabele se kreiraju sledećom komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;create table imetabele &amp;#40;
&lt;br /&gt;
definicija polja
&lt;br /&gt;
&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Definisanjem polja određujemo kako će tabela izgledati, odnosno koji podaci će u nju moći da se zapišu. Osim imena polja, moramo da definišemo i tip. MySQL podržava većinu standardnih tipova (tekst, cele i realne brojeve, datume, i još par drugih). Tipove podataka ćemo objašnjavati usput. Recimo da želimo da napravimo tabelu u kojoj ćemo moći da upišemo ime osobe i njen broj telefona. To znači da ćemo morati da napravimo dva polja u kojima može da se upiše tekst. U MySQL-u imamo 3 vrste podataka za čuvanje teksta: &lt;span style=&quot;font-weight: bold&quot;&gt;char&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;varchar&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;text&lt;/span&gt;. Prva dva tipa su prilično slična. Najveća razlika je u tome što &lt;span style=&quot;font-weight: bold&quot;&gt;char&lt;/span&gt; može da ima najviše 255 znakova i u bazi uvek zauzima onoliko mesta koliko je polje veliko, bez obzira na to koliko je dug tekst u polju. S druge strane, &lt;span style=&quot;font-weight: bold&quot;&gt;varchar&lt;/span&gt; može da ima i to 65535 znakova, a polje u bazi će biti veliko samo onoliko koliko je dug upisan tekst. Tip &lt;span style=&quot;font-weight: bold&quot;&gt;text&lt;/span&gt; se koristi za čuvanje velike količine teksta u jednom polju. Mi ćemo za naš primer iskoristiti polje &lt;span style=&quot;font-weight: bold&quot;&gt;varchar&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;create table persons &amp;#40;
&lt;br /&gt;
name varchar&amp;#40;200&amp;#41;,
&lt;br /&gt;
phone varchar&amp;#40;200&amp;#41;
&lt;br /&gt;
&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Parametar pri tipu &lt;span style=&quot;font-weight: bold&quot;&gt;varchar&lt;/span&gt; određuje maksimalnu veličinu polja. MySQL baza dozvoljava kreiranje tabela čija maksimalna veličina može da bude maksimalno 64KB, i zbog toga je potrebno ograničiti veličine polja na neku normalnu vrednost.
&lt;br /&gt;

&lt;br /&gt;
Pregled napravljenih tabela u aktivnoj bazi možemo pogledati komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;show tables;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
U našem slučaju će izlaz komande izgledati ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+----------------+
&lt;br /&gt;
| Tables_in_test |
&lt;br /&gt;
+----------------+
&lt;br /&gt;
| persons&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
+----------------+
&lt;br /&gt;
1 row in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Imamo sve što je potrebno da upišemo par podataka u bazu. Upis podataka se vrši sledećom komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;insert into imetabele values &amp;#40;podatak, podatak, …, podatak&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Prethodni primer zahteva da upišemo vrednosti za sva polja po redu kako su definisana u tabeli. U slučaju da podatke želimo da unesemo drugim redosledom ili ako želimo da određene podatke ostavimo prazne, onda se koristi sledeća sintaksa:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;insert into imetabele &amp;#40;imepolja, imepolje, …, imepolja&amp;#41; values &amp;#40;podatak, podatak, …, podatak&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Upišimo par redova u tabelu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;insert into persons values &amp;#40;'Petar Petrovic', '064123456'&amp;#41;;
&lt;br /&gt;
insert into persons &amp;#40;phone, name&amp;#41; values &amp;#40;'063987654', 'Jovan Jovanovic'&amp;#41;;
&lt;br /&gt;
insert into persons &amp;#40;name&amp;#41; values &amp;#40;'Nikola Nikolic'&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Komanda za prikaz podataka iz tabele ima sličnu sintaksu, i isto omogućava prikaz svi ili samo određenih kolona. Za prikaz svih kolona se koristi sledeća sintaksa:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select * from imetabele;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za prikaz samo određenih kolona ili za promenu redosleda se koristi sledeća sintaksa:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select imepolja, imepolje, …, imepolja from imetabele;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za prikaz svih podataka koje smo uneli, ukucajte:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select * from persons;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Rezultat komande će izgledati ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+-----------------+-----------+
&lt;br /&gt;
| name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | phone&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
| Petar Petrovic&amp;nbsp; | 064123456 |
&lt;br /&gt;
| Jovan Jovanovic | 063987654 |
&lt;br /&gt;
| Nikola Nikolic&amp;nbsp; | NULL&amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
3 rows in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Obratite pažnju da polje &lt;span style=&quot;font-weight: bold&quot;&gt;phone&lt;/span&gt; u zadnjem redu ima vrednost &lt;span style=&quot;font-weight: bold&quot;&gt;NULL&lt;/span&gt;. To je specijalna vrednost koja označava da vrednost tog polja nije postavljena.
&lt;br /&gt;

&lt;br /&gt;
Vrlo često se dešava da tabela ima veliki broj redova, a mi bi želeli da prikažemo samo određene. Komanda &lt;span style=&quot;font-weight: bold&quot;&gt;select&lt;/span&gt; omogućava i filtriranje podataka. Najjednostavniji oblik filtriranja ima sledeću sintaksu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select * from imetabele where imepolja komparacija vrednost;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Recimo da želimo da imamo milion redova u našoj tabeli i da nas zanima koji broj telefona ima &lt;span style=&quot;font-weight: bold&quot;&gt;Jovan Jovanovic&lt;/span&gt;. Napisaćemo sledeću komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select * from persons where name = 'Jovan Jovanovic';&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ta komanda će nam vratiti samo red koji smo tražili:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+-----------------+-----------+
&lt;br /&gt;
| name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | phone&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
| Jovan Jovanovic | 063987654 |
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
1 row in set &amp;#40;0.01 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Još jedna korisna stvar koju možemo odraditi komandom &lt;span style=&quot;font-weight: bold&quot;&gt;select&lt;/span&gt; je sortiranje. Sintaksa je sledeća:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select * from imetabele order by imepolja, imepolja, …, imepolja;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Sortiranje će biti izvršeno redom po poljima navedenim posle &lt;span style=&quot;font-weight: bold&quot;&gt;order by&lt;/span&gt;. Ako iza imena polja dodate još razmak i &lt;span style=&quot;font-weight: bold&quot;&gt;desc&lt;/span&gt;, sortiranje po tom polju će biti odrađeno po opadajućem redu.
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Filtriranje i sortiranje možete koristiti zajedno tim redom.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako želimo da vidimo redove sortirane po imenu, treba da napišemo sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select * from persons order by name;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Rezultat te komande izgleda ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+-----------------+-----------+
&lt;br /&gt;
| name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | phone&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
| Jovan Jovanovic | 063987654 |
&lt;br /&gt;
| Nikola Nikolic&amp;nbsp; | NULL&amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br /&gt;
| Petar Petrovic&amp;nbsp; | 064123456 |
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
3 rows in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Vrlo često se dešava da određene podatke moramo da popravimo. Komanda za to je &lt;span style=&quot;font-weight: bold&quot;&gt;update&lt;/span&gt;. Ona se skoro uvek koristi zajedno s filtriranjem i sintaksa izgleda ovako:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;update imetabele set imepolja = vrednost, imepolja = vrednost, …, imepolja = vrednost where imepolja komparacija vrednost;&lt;/code&gt;
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Upozorenje ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Ako ne koristite filtriranje, &lt;span style=&quot;font-weight: bold&quot;&gt;SVIM&lt;/span&gt; redovima u tabeli će biti promenjene vrednosti!&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Recimo da svim redovima koji nemaju definisanu vrednost u polju &lt;span style=&quot;font-weight: bold&quot;&gt;phone&lt;/span&gt; hoćemo da upišemo vrednost &lt;span style=&quot;font-weight: bold&quot;&gt;Bez broja&lt;/span&gt;… komanda za to je:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;update persons set phone = 'Bez broja' where phone is null;&lt;/code&gt;
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Obratite pažnju da kod filtriranja polja koja nemaju vrednost koristite &lt;span style=&quot;font-weight: bold&quot;&gt;IS NULL&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;IS NOT NULL&lt;/span&gt; jer će sva ostala poređenja vratiti negativan rezultat. Ako bi ovako filtrirali &lt;span style=&quot;font-weight: bold&quot;&gt;PHONE = NULL&lt;/span&gt; ne bi promenuli ni jedan zapis jer &lt;span style=&quot;font-weight: bold&quot;&gt;ništa NIJE JEDNAKO null&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;ništa NIJE RAZLIČITO od null&lt;/span&gt;… &lt;span style=&quot;font-weight: bold&quot;&gt;nešto JE null&lt;/span&gt; ili &lt;span style=&quot;font-weight: bold&quot;&gt;nešto NIJE null&lt;/span&gt;.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Rezultat te komande će vratiti broj promenjenih redova:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Query OK, 1 row affected &amp;#40;0.15 sec&amp;#41;
&lt;br /&gt;
Rows matched&amp;#58; 1&amp;nbsp; Changed&amp;#58; 1&amp;nbsp; Warnings&amp;#58; 0&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako sada izlistamo redove, videćemo da je jedan red promenjen:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+-----------------+-----------+
&lt;br /&gt;
| name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | phone&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
| Petar Petrovic&amp;nbsp; | 064123456 |
&lt;br /&gt;
| Jovan Jovanovic | 063987654 |
&lt;br /&gt;
| Nikola Nikolic&amp;nbsp; | Bez broja |
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
3 rows in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Kod brisanja se koristi komanda &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt;, i ona se takođe skoro uvek koristi sa filtriranjem:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;delete from imetabele where imepolja komparacija vrednost;&lt;/code&gt;
&lt;br /&gt;
 &lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Upozorenje ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Ako ne koristite filtriranje, &lt;span style=&quot;font-weight: bold&quot;&gt;SVI&lt;/span&gt; redovi će biti izbrisani!&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Hajde da izbrišemo zapis bez broja:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;delete from persons where phone = 'Bez broja';&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Rezultat je broj izbrisanih redova:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Query OK, 1 row affected &amp;#40;0.04 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako sada izlistamo redove, videćemo da je jedan red izbrisan:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+-----------------+-----------+
&lt;br /&gt;
| name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | phone&amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
| Petar Petrovic&amp;nbsp; | 064123456 |
&lt;br /&gt;
| Jovan Jovanovic | 063987654 |
&lt;br /&gt;
+-----------------+-----------+
&lt;br /&gt;
2 rows in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za kraj, pogledajmo i komande za brisanje tabele i baze. Ove komande retko koriste, ali pošto ćemo mnogo eksperimentisati, lepo je znati kako počistiti za sobom.
&lt;br /&gt;

&lt;br /&gt;
Brisanje tabele se vrši komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;drop table imetabele;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Brisanje baze se vrši komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;drop database imebaze;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako želite, sada možete izbrisati testnu bazu pošto je više nećemo koristiti &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4] PHP aplikacija za rad sa bazom&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U prethodnim koracima smo već pripremili PHP za rad sa MySQL bazom. U nastavku teksta ćemo samo površinski obraditi dva načina za rad sa MySQL bazom. Koristićemo &lt;span style=&quot;font-weight: bold&quot;&gt;MySQL Improved Extension&lt;/span&gt;, što je preporučen način za povezivanje na MySQL baze, i &lt;span style=&quot;font-weight: bold&quot;&gt;PHP Data Objects&lt;/span&gt; koji omogućavaju isti način rada bez obzira na server na koji se povezujemo (PDO imaju podršku za Microsoft SQL Server, Firebird/Interbase, MySQL, Oracle, DB2, PostgreSQL, SQLite i još par drugih servera). Imajte na umu da PDO omogućavaju samo standardizovan način za komunikaciju sa serverom, komande za rad sa podacima se moraju pisati u SQL dijalektu koji server poznaje. Na sreću, standardne komande (insert, select, update i delete) su uglavnom iste na svim serverima. Pošto ćemo se fokusirati samo na rad sa MySQL serverom, sa PDO ćemo raditi samo u ovom uvodnom delu, dok ćemo MySQL Improved Extension usput detaljnije obraditi.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4.1] Pripremanje baze&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U prethodnom primeru smo napravili bazu za čuvanje imena i brojeva telefona. Oni koji do sada nikad nisu radili sa bazama podataka bi mislili da smo imali sva potrebna polja za normalan rad, ali zamislite da imate ove podatke u bazi:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;+-----------------+-----------+ 
&lt;br /&gt;
| name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | phone&amp;nbsp; &amp;nbsp; &amp;nbsp;| 
&lt;br /&gt;
+-----------------+-----------+ 
&lt;br /&gt;
| Petar Petrovic&amp;nbsp; | 064123456 | 
&lt;br /&gt;
| Petar Petrovic&amp;nbsp; | 064123456 | 
&lt;br /&gt;
+-----------------+-----------+&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Imate dva druga koja se zovu Petar Petrovic, ali ste greškom upisali u oba reda isti broj. Rećićete da nema problema, samo ćemo napisati &lt;span style=&quot;font-weight: bold&quot;&gt;update&lt;/span&gt; komandu koja će zameniti broj telefona u jednom redu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;update phone = '063987654' where name = 'Petar Petrovic' and phone = '064123456';&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ta komanda će, nažalost, promeniti oba reda, zato što su oba reda jednaka i filtriranjem po poljima ne možemo nikako da izdvojimo samo jedan red. Rešenje za taj problem je jednostavno: dodamo još jedno polje koje će biti jedinstveno za svaki red. To polje se vrlo često zove &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt; (identifier) i ima tip podatka &lt;span style=&quot;font-weight: bold&quot;&gt;int&lt;/span&gt; (ceo broj). Ovakvo polje se najčešće označava i kao &lt;span style=&quot;font-weight: bold&quot;&gt;primarni ključ&lt;/span&gt; (primary key) što, između ostalog, označava da polje mora da se razlikuje za svaki red, da nikad ne može da bude prazno i da može da se koristi za povezivanje podataka iz drugih tabela.
&lt;br /&gt;

&lt;br /&gt;
Za ovu vežbu ćemo napraviti jednostavnu bazu, koja će imati primarni ključ (polje &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt;), datum unosa (polje &lt;span style=&quot;font-weight: bold&quot;&gt;date&lt;/span&gt;) i tekstualnu vrednost (polje &lt;span style=&quot;font-weight: bold&quot;&gt;value&lt;/span&gt;):
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;create database test;
&lt;br /&gt;

&lt;br /&gt;
use test;
&lt;br /&gt;

&lt;br /&gt;
create table data &amp;#40;
&lt;br /&gt;
id int not null auto_increment,
&lt;br /&gt;
primary key&amp;#40;id&amp;#41;,
&lt;br /&gt;
date datetime,
&lt;br /&gt;
value varchar&amp;#40;200&amp;#41;
&lt;br /&gt;
&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Primetićete da za polje &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt; imamo malo još par dodatnih podataka osim tipa. Pošto polje uvek mora imati definisanu vrednost, dodali smo &lt;span style=&quot;font-weight: bold&quot;&gt;not null&lt;/span&gt; što će onemogućiti upis reda koji nema definisanu vrednost. Da ne bismo svaki put morali ručno da upisujemo vrednost polja, dodali smo i &lt;span style=&quot;font-weight: bold&quot;&gt;auto_increment&lt;/span&gt; što znači da će MySQL sam odrediti vrednost koja će biti upisana u polju, i svaki sledeći put će upisati sledeću veću vrednost. Na taj način dobijamo jedinstven broj za svaki red bez potrebe da ga sami generišemo. Posle definicije polja, imamo i komandu &lt;span style=&quot;font-weight: bold&quot;&gt;primary key(id)&lt;/span&gt; koja označava da je polje &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt; primarni ključ.
&lt;br /&gt;

&lt;br /&gt;
Hajde da upišemo jednu vrednost:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;insert into data &amp;#40;date, value&amp;#41; values &amp;#40;now&amp;#40;&amp;#41;, 'test'&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Kao što vidite, vrednost polja &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt; nismo definisali, pošto će MySQL da se pobrine za to. Umesto da datum upišemo sami, iskoristili smo funkciju &lt;span style=&quot;font-weight: bold&quot;&gt;now()&lt;/span&gt; koja vraća trenutno vreme i datum. Ako pogledamo šta imamo zapisano u bazi, dobićemo nešto ovakvo:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;select * from data;
&lt;br /&gt;
+----+---------------------+-------+
&lt;br /&gt;
| id | date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | value |
&lt;br /&gt;
+----+---------------------+-------+
&lt;br /&gt;
|&amp;nbsp; 1 | 2013-03-17 17&amp;#58;55&amp;#58;18 | test&amp;nbsp; |
&lt;br /&gt;
+----+---------------------+-------+
&lt;br /&gt;
1 row in set &amp;#40;0.00 sec&amp;#41;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pošto je &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt; polje jedinstveno za svaki red, filtriranjem redova po njemu možemo pronaći tačno onaj red koji nas zanima.
&lt;br /&gt;

&lt;br /&gt;
Ovu bazu nemojte brisati, pošto ćemo je iskoristiti i u narednom koraku.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4.2] MySQL Improved Extension&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Napravićemo malu aplikaciju koja će obaviti sve standardne akcije na bazi… sve od povezivanja, preko uređivanja i prikaza podataka, do prekida konekcije. Pošto je aplikacija prilično jednostavna, počnimo pregledom celog koda, a zatim ćemo preći deo po deo:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;!DOCTYPE html&amp;gt;
&lt;br /&gt;
&amp;#60;html&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;title&amp;gt;MySQL Test&amp;#60;/title&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;body&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;?php
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $driver = new mysqli_driver&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $driver-&amp;gt;report_mode = MYSQLI_REPORT_STRICT;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Otvaranje baze&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db = new mysqli&amp;#40;'localhost', 'root', 'toor', 'test'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Pražnjenje tabele&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;'truncate table data'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Upis podataka&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $values = array&amp;#40;'vrednost1', 'vrednost2', 'vrednost3'&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach&amp;#40;$values as $value&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;&amp;quot;insert into data &amp;#40;date, value&amp;#41; values &amp;#40;now&amp;#40;&amp;#41;, '$value'&amp;#41;&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Prikaz podataka&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach&amp;#40;$db-&amp;gt;query&amp;#40;'select * from data'&amp;#41; as $row&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo $row&amp;#91;'id'&amp;#93; . ' ' . $row&amp;#91;'date'&amp;#93; . ' ' . $row&amp;#91;'value'&amp;#93; . '&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo '&amp;#60;/br&amp;gt;';
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Brisanje reda sa ID = 2&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;'delete from data where id = 2'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Promena reda sa ID = 3&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;'update data set value = \'nova vrednost\' where id = 3'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Prikaz podataka&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach&amp;#40;$db-&amp;gt;query&amp;#40;'select * from data'&amp;#41; as $row&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo $row&amp;#91;'id'&amp;#93; . ' ' . $row&amp;#91;'date'&amp;#93; . ' ' . $row&amp;#91;'value'&amp;#93; . '&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo '&amp;#60;/br&amp;gt;';
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Zatvaranje baze&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;close&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch &amp;#40;mysqli_sql_exception $e&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Greška&amp;#58; ' . $e-&amp;gt;getMessage&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/body&amp;gt;
&lt;br /&gt;
&amp;#60;/html&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
MySQLI ima mogućnost da uključi ili isključi bacanje izuzetaka (exception) u slučaju greške. Prednost izuzetaka je da ne moramo da proveravamo svaku funkciju posebno da li je uspela. Dovoljno je da deo koda koji može izazvati grešku stavimo u &lt;span style=&quot;font-weight: bold&quot;&gt;try&lt;/span&gt; blok, a deo koda koji obrađuje grešku u &lt;span style=&quot;font-weight: bold&quot;&gt;catch&lt;/span&gt; blok. Time se količina koda znatno smanjuje, a time dobijamo kod koji se lakše čita i održava. Da bismo uključili bacanje izuzetaka, potrebno je postaviti drajver-ov &lt;span style=&quot;font-weight: bold&quot;&gt;report_mode&lt;/span&gt; na &lt;span style=&quot;font-weight: bold&quot;&gt;MYSQLI_REPORT_STRICT&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;$driver = new mysqli_driver&amp;#40;&amp;#41;;
&lt;br /&gt;
$driver-&amp;gt;report_mode = MYSQLI_REPORT_STRICT;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Otvaranje baze se vrši kreiranjem objekta &lt;span style=&quot;font-weight: bold&quot;&gt;mysqli&lt;/span&gt; i prosleđivanjem podataka o konekciji (ime servera, korisničko ime i šifra, i ime baze):
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;$db = new mysqli&amp;#40;'localhost', 'root', 'toor', 'test'&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Prva komanda koju u našem primeru pozivamo će izbrisati sve podatke iz tabele &lt;span style=&quot;font-weight: bold&quot;&gt;data&lt;/span&gt;. Verovatno ste opazili da ne koristimo akciju &lt;span style=&quot;font-weight: bold&quot;&gt;delete&lt;/span&gt; nego &lt;span style=&quot;font-weight: bold&quot;&gt;truncate&lt;/span&gt;. Postoje dve bitne razlike između ove dve akcije. Prva je da &lt;span style=&quot;font-weight: bold&quot;&gt;truncate&lt;/span&gt; uvek briše sve podatke iz tabele (filtriranje nije moguće), a druga je da &lt;span style=&quot;font-weight: bold&quot;&gt;truncate&lt;/span&gt; resetuje &lt;span style=&quot;font-weight: bold&quot;&gt;AUTO_INCREMENT&lt;/span&gt; polja. To znači da će &lt;span style=&quot;font-weight: bold&quot;&gt;id&lt;/span&gt; polje posle &lt;span style=&quot;font-weight: bold&quot;&gt;truncate&lt;/span&gt; akcije ponovo početi od &lt;span style=&quot;font-weight: bold&quot;&gt;1&lt;/span&gt;. Kod akcija koje ne vraćaju podatke dovoljno je samo pozvati &lt;span style=&quot;font-weight: bold&quot;&gt;query&lt;/span&gt; komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;$db-&amp;gt;query&amp;#40;'truncate table data'&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Kod akcija koje vraćaju podatke (select) kao rezultat dobijamo objekat preko kojeg možemo pristupiti svim redovima. Korišćenje &lt;span style=&quot;font-weight: bold&quot;&gt;foreach&lt;/span&gt; komande je jedan od načina za čitanje svih redova:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;foreach&amp;#40;$db-&amp;gt;query&amp;#40;'select * from data'&amp;#41; as $row&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; echo $row&amp;#91;'id'&amp;#93; . ' ' . $row&amp;#91;'date'&amp;#93; . ' ' . $row&amp;#91;'value'&amp;#93; . '&amp;#60;/br&amp;gt;';&lt;/code&gt;
&lt;br /&gt;
Kao što vidite, do polja pristupamo preko njihovih imena.
&lt;br /&gt;

&lt;br /&gt;
Za kraj ostaje zatvaranje baze, a ta akcija se vrši komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;$db-&amp;gt;close&amp;#40;&amp;#41;;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Svima koji se još nisu sreli s izuzecima u PHP-u predlažem da pogledaju &lt;span style=&quot;font-weight: bold&quot;&gt;dokumentaciju.&lt;/span&gt;&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4.3] PHP Data Objects&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Korišćenje PDO je skoro potpuno isto kao i korišćenje MySQLI. Pogledajmo kod koji radi sve isto kao i prethodni, ali uz upotrebu PDO:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;!DOCTYPE html&amp;gt;
&lt;br /&gt;
&amp;#60;html&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;title&amp;gt;MySQL Test&amp;#60;/title&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;body&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;?php
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Otvaranje baze&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db = new PDO&amp;#40;'mysql&amp;#58;host=localhost;dbname=test', 'root', 'toor'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Pražnjenje tabele&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;'truncate table data'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Upis podataka&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $values = array&amp;#40;'vrednost1', 'vrednost2', 'vrednost3'&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach&amp;#40;$values as $value&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;&amp;quot;insert into data &amp;#40;date, value&amp;#41; values &amp;#40;now&amp;#40;&amp;#41;, '$value'&amp;#41;&amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Prikaz podataka&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach&amp;#40;$db-&amp;gt;query&amp;#40;'select * from data'&amp;#41; as $row&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo $row&amp;#91;'id'&amp;#93; . ' ' . $row&amp;#91;'date'&amp;#93; . ' ' . $row&amp;#91;'value'&amp;#93; . '&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo '&amp;#60;/br&amp;gt;';
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Brisanje reda sa ID = 2&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;'delete from data where id = 2'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Promena reda sa ID = 3&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db-&amp;gt;query&amp;#40;'update data set value = \'nova vrednost\' where id = 3'&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Prikaz podataka&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach&amp;#40;$db-&amp;gt;query&amp;#40;'select * from data'&amp;#41; as $row&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo $row&amp;#91;'id'&amp;#93; . ' ' . $row&amp;#91;'date'&amp;#93; . ' ' . $row&amp;#91;'value'&amp;#93; . '&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo '&amp;#60;/br&amp;gt;';
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Zatvaranje baze&amp;#60;/br&amp;gt;&amp;#60;/br&amp;gt;';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $db = null;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch &amp;#40;PDOException $e&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Greška&amp;#58; ' . $e-&amp;gt;getMessage&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ?&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/body&amp;gt;
&lt;br /&gt;
&amp;#60;/html&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
PDO objekti su napisani tako da uvek bacaju izuzetke i nema potrebe da ih uključujemo posebnom komandom. Konekcija se kreira na sličan, ali malo drugačiji način:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;$db = new PDO&amp;#40;'mysql&amp;#58;host=localhost;dbname=test', 'root', 'toor'&amp;#41;;&lt;/code&gt;
&lt;br /&gt;
Prvi parametar označava da želimo da se povežemo na MySQL bazu i daje podatke o imenu servera i baze, dok su drugi i treći podatak korisnički podaci za povezivanje (ime i šifra).
&lt;br /&gt;

&lt;br /&gt;
Pozivanje osnovnih SQL komandi je isto kao i sa MySQLI. Kao što možete videti, taj deo koda je identičan prethodnom primeru.
&lt;br /&gt;

&lt;br /&gt;
Za kraj, komanda za zatvaranje baze ne postoji, potrebno je samo osloboditi referencu na PDO objekat:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;$db = null;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ovim smo zaključili postavljanje internet servera, instaliranje baze i upoznavanje sa osnovnim akcijama nad podacima iz PHP-a.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/2-Moderne-aplikacije-Internet-serveri-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Internet serveri&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/4-Moderne-aplikacije-Uvod-u-REST-i-URL-rewrite-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Uvod u REST i URL rewrite&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description>
	<pubDate>Tue, 26 Mar 2013 17:17:43 +0100</pubDate>
</item>
<item>
	<title>[2] Moderne aplikacije :: Internet serveri</title>
	<link>https://www.mycity.rs/Opste-programiranje/2-Moderne-aplikacije-Internet-serveri-2.html</link>
	<guid>https://www.mycity.rs/?p=1500924</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/1-Moderne-aplikacije-Skolski-dani-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Školski dani&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/3-Moderne-aplikacije-MySQL-server-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;MySQL server&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Hvala za pomoć&lt;/span&gt;:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-style: italic&quot;&gt;WAMP&lt;/span&gt;: &lt;a href=&quot;http://www.mycity.rs/Korisnik/NIx+Car/&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;NIx Car&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Potrebno znanje za praćenje teksta&lt;/span&gt;:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Korišćenje sistemskih alata
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Instalacija programa&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Sadržaj&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[1] Uvod&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[2] Internet serveri (ili Web serveri)&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[2.1] Microsoft Internet Information Services&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 14px; line-height: normal&quot;&gt;[2.2] Apache&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;[2.2.1] Windows
&lt;br /&gt;
[2.2.2] Linux
&lt;br /&gt;
[2.2.3] Mac OS X&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[3] PHP&lt;/span&gt;
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;[3.1] Windows
&lt;br /&gt;
[3.2] Linux
&lt;br /&gt;
[3.3] Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;[4] Jednostavna PHP aplikacija&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[1] Uvod&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Jedna od odlika modernih aplikacija je odvajanje dela za čuvanje podataka od dela za prikaz i uređivanje. Taj način nam omogućava da napišemo kompletnu logiku za čuvanje podataka bez razmišljanja o tome kako će podaci biti prikazani. Taj deo aplikacije se zove serverski deo i uglavnom se izvršava na nekoj udaljenoj mašini. Drugi deo aplikacije se brine samo o prikazu, i zbog toga možemo prilično lako da napravimo aplikaciju koja će raditi na Windows-u, a kasnije još jednu koja će raditi na Android-u, bez potrebe da menjamo kod koji se brine o podacima. Taj drugi deo aplikacije se zove klijentski deo, i uglavnom sadrži kod za prikaz podataka i minimalnu kontrolu unosa (npr. ne dozvoljava unos slova u polja koja smeju da imaju samo brojeve).
&lt;br /&gt;

&lt;br /&gt;
U ovom delu ćemo se okrenuti razvoju serverskog dela aplikacije. Najpopularniji način komunikacije serverskog i klijentskog dela je preko &lt;span style=&quot;font-weight: bold&quot;&gt;HTTP protokola&lt;/span&gt;. Verovatno je većina vas već čula za taj protokol, ali za one koji nisu, to je protokol koji se koristi za prikaz internet stranica. Putem tog protokola možemo povezati serverski i klijentski deo preko lokalne mreže ili interneta.
&lt;br /&gt;

&lt;br /&gt;
Na kraju ćemo dobiti potpuno funkcionalan server, na kojem ćemo postaviti PHP aplikaciju za računanje jednostavnih matematičkih izraza.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2] Internet serveri (ili Web serveri)&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Da ne bismo morali da pišemo kompletnu logiku za slanje i primanje HTTP paketa, instaliraćemo program koji će služiti kao most između dva dela naše aplikacije. Taj program se zove Web, odnosno Internet server. Internet server sam po sebi ne zna da radi ništa osim da odgovara na par unapred definisanih HTTP komandi koje dobija od klijentskih aplikacija. Klijentska aplikacija je zadužena za uspostavljanje komunikacije i izdavanje komandi, dok Internet server samo šalje odgovore koje klijent obrađuje i na osnovu njih prikazuje određeni sadržaj korisniku.
&lt;br /&gt;

&lt;br /&gt;
Kao što je slučaj i sa svim drugim, postoji više aplikacija koje vrše ulogu Internet servera. Mi ćemo se fokusirati dve koje se nalaze među najpopularnijim: &lt;span style=&quot;font-weight: bold&quot;&gt;Microsoft Internet Information Services&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;Apache&lt;/span&gt;.
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Potrebno je instalirati samo jedan Internet server.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.1] Microsoft Internet Information Services&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Microsoft Internet Information Services je aplikacija koja se distribuira zajedno s Windows operativnim sistemom. Instalacija je standardno laka, potrebno je samo uključiti taj deo sistema, i to je to. Da biste uključili potrebne Windows komponente, otvorite &lt;span style=&quot;font-weight: bold&quot;&gt;Control Panel&lt;/span&gt;, &lt;span style=&quot;font-weight: bold&quot;&gt;Programs&lt;/span&gt; ili &lt;span style=&quot;font-weight: bold&quot;&gt;Add/Remove Programs&lt;/span&gt;, i zatim izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Turn Windows features on or off&lt;/span&gt;. U prozoru koji se otvori, čekirajte &lt;span style=&quot;font-weight: bold&quot;&gt;Internet Information Services&lt;/span&gt; i pritisnite &lt;span style=&quot;font-weight: bold&quot;&gt;OK&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Instalacija IIS-a u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_48572054_1.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
To je sve što je potrebno za instalaciju IIS-a. Možete proveriti da li je sve prošlo kako treba tako što ćete otvoriti sledeću adresu: &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/&lt;/span&gt;. Ovaj postupak će instalirati samo osnovnu funkcionalnost IIS-a, ali je za sad to sasvim dovoljno.
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Upozorenje ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Isključite Skype pre nego što instalirate IIS. Standardna podešavanja za Skype i IIS su da koriste port 80 za komunikaciju.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.2] Apache&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
U koliko ne želite da koristite Microsoft-ovo rešenje, ili ne koristite Windows operativni sistem, instalirajte Apache. Apache je jedan od najrasprostranjenijih servera, i podržava skoro sve uređaje i operativne sisteme. Instalacija se na svakom operativnom sistemu razlikuje, pa ćemo zato objasniti postupak za Mac OS X, Linux i Windows posebno.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.2.1] Windows&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako ste korisnik Windows operativnog sistema, verovatno ste navikli da instalirate programe preko tzv. čarobnjaka (wizard-a). U nastavku teksta ćemo obraditi instalaciju uz pomoć čarobnjaka, a zatim i bez njega. Oba načina su jednako dobra, a razlika je u tome što instalacija uz pomoć čarobnjaka zahteva mnogo manje vremena i skoro je nemoguće napraviti grešku u celom procesu, dok bez njega morate odvojiti malo više vremena i biti pažljivi prilikom praćenja uputstva, što će vam pomoći da bolje shvatite kako je ceo sistem povezan.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Instalacija uz pomoć čarobnjaka (WAMP)&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;WAMP&lt;/span&gt; je skraćenica za &lt;span style=&quot;font-weight: bold&quot;&gt;W&lt;/span&gt;indows &lt;span style=&quot;font-weight: bold&quot;&gt;A&lt;/span&gt;pache &lt;span style=&quot;font-weight: bold&quot;&gt;M&lt;/span&gt;ySql &lt;span style=&quot;font-weight: bold&quot;&gt;P&lt;/span&gt;HP. Instalacijom WAMP-a dobijate kompletan internet server koji je pripremljen za razvoj internet aplikacija.
&lt;br /&gt;

&lt;br /&gt;
Preuzmite &lt;span style=&quot;font-weight: bold&quot;&gt;čarobnjaka za instalaciju WAMP-a&lt;/span&gt; i instalirajte WAMP u direktorijum &lt;span style=&quot;font-weight: bold&quot;&gt;C:\wamp&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
Levim klikom na WAMP ikonicu otvorite meni i izaberite &lt;span style=&quot;font-weight: bold&quot;&gt;Put Online&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Pokretanje WAMP servera&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=144633_453678751_Untitled.jpg&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Kada ikonica pozeleni, proverite da li je sve prošlo bez greške otvaranjem adrese: &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Instalacija bez čarobnjaka&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Za instalaciju na Windows-u je potrebno preuzeti &lt;span style=&quot;font-weight: bold&quot;&gt;binarnu verziju Apache servera&lt;/span&gt;. Arhivu je potrebno raspakovati direktno na &lt;span style=&quot;font-weight: bold&quot;&gt;C:&lt;/span&gt; disk. Kratko uputstvo ćete dobiti u datoteci &lt;span style=&quot;font-weight: bold&quot;&gt;ReadMe.txt&lt;/span&gt;, a program će biti raspakovan u direktorijumu &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Apache24&lt;/span&gt;. Instalacija servera se vrši kucanjem sledeće komande u Command Prompt-u pokrenutim pod administratorskim nalogom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Apache24\bin\httpd –k install
&lt;br /&gt;
C&amp;#58;\Apache24\bin\httpd –k restart&lt;/code&gt;
&lt;br /&gt;
Nakon toga, proverite da li je sve prošlo bez greške otvaranjem adrese: &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/&lt;/span&gt;.
&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Upozorenje ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; U slučaju da se javi firewall, dozvolite rad Apache servera u mreži.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.2.2] Linux&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Instalacija na Linux-ima se razlikuje od distribucije do distribucije. Mi ćemo se fokusirati na &lt;span style=&quot;font-weight: bold&quot;&gt;Debian&lt;/span&gt; i njegove derivate, &lt;span style=&quot;font-weight: bold&quot;&gt;Ubuntu&lt;/span&gt; i &lt;span style=&quot;font-weight: bold&quot;&gt;Linux Mint&lt;/span&gt;. Instalacija se svodi na pokretanje jedne komande:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo apt-get install apache2&lt;/code&gt;
&lt;br /&gt;
Nakon toga, proverite da li je sve prošlo bez greške otvaranjem adrese: &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[2.2.3] Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Mac OS X od verzije &lt;span style=&quot;font-weight: bold&quot;&gt;10.5&lt;/span&gt; dolazi sa već instaliranim Apache serverom. Potrebno ga je samo uključiti komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo apachectl start&lt;/code&gt;
&lt;br /&gt;
Nakon toga, proverite da li je sve prošlo bez greške otvaranjem adrese: &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3] PHP&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Ranije smo već rekli da su mogućnosti Internet servera prilično ograničene. Na našu sreću su napravljeni tako da možemo da im dodajemo funkcionalnost preko dodatnih biblioteka. Jedna od najpoznatijih biblioteka za dodatnu funkcionalnost Internet servera je &lt;span style=&quot;font-weight: bold&quot;&gt;PHP&lt;/span&gt;. To je serverski skript jezik koji omogućava slanje dinamičkih datoteka. Umesto standardnih statičkih HTML datoteka koje Internet server koristi, PHP koristi svoje skripte na osnovu kojih u letu generiše sadržaj koji će biti poslat klijentima. Uz njegovu pomoć možemo praviti sadržaj koji se menja u skladu sa podacima dobijenih od klijenta, pročitanih iz baze ili dobijenih na neki drugi način.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3.1] Windows&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Za instalaciju PHP-a na Windows operativnom sistemu je potrebno preuzeti &lt;span style=&quot;font-weight: bold&quot;&gt;binarnu verziju PHP-a&lt;/span&gt;. Sadržaj arhive raspakujete u &lt;span style=&quot;font-weight: bold&quot;&gt;C:\PHP5&lt;/span&gt;. Sledeći korak je pravljenje konfiguracije za PHP. Sve što treba da uradite je da kopirate datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\PHP5\php.ini-production&lt;/span&gt; u datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\PHP5\php.ini&lt;/span&gt;, i popravite jednu liniju. Pronađite red u kojem piše:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;;cgi.force_redirect = 1&lt;/code&gt;
&lt;br /&gt;
i popravite ga u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;cgi.force_redirect = 0&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Microsoft Internet Information Services&lt;/span&gt;
&lt;br /&gt;
Prilikom instaliranja IIS-a, izabrali smo samo najosnovnije komponente. Za pravilan rad PHP-a je potrebno instalirati još jednu dodatnu komponentu pod imenom &lt;span style=&quot;font-weight: bold&quot;&gt;CGI&lt;/span&gt;. Ta komponenta omogućava pokretanje eksternih aplikacija u cilju obrade ulaznih parametara i pripremanja odgovora koji će se poslati klijentu.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Instalacija CGI komponente u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_97149723_2.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Zadnji korak je povezivanje PHP modula s &lt;span style=&quot;font-weight: bold&quot;&gt;*.php&lt;/span&gt; datotekama. Da bismo to uradili, potrebno je da otvorimo &lt;span style=&quot;font-weight: bold&quot;&gt;IIS Manager&lt;/span&gt; pritiskom na &lt;span style=&quot;font-weight: bold&quot;&gt;Win+R&lt;/span&gt; i pokretanjem programa &lt;span style=&quot;font-weight: bold&quot;&gt;inetmgr&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;IIS Manager u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_226682703_3.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Duplo kliknite na &lt;span style=&quot;font-weight: bold&quot;&gt;Handler Mappings&lt;/span&gt;, a zatim, u desnom gornjem uglu, kliknite na &lt;span style=&quot;font-weight: bold&quot;&gt;Add Script Map…&lt;/span&gt; i ispunite podatke kao na sledećoj slici:
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Povezivanje PHP modula s *.php datotekama u Windows 8&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_194299472_4.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Nakon klika na dugme &lt;span style=&quot;font-weight: bold&quot;&gt;OK&lt;/span&gt;, potvrdite da želite da dodate modul u listu dozvoljenih. Ovim ste završili podešavanje PHP-a.
&lt;br /&gt;

&lt;br /&gt;
Za testiranje napravite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\inetpub\wwwroot\test.php&lt;/span&gt; i u nju upišite sledeći tekst:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;?php phpinfo&amp;#40;&amp;#41;; ?&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako je sve prošlo kako treba, otvaranjem adrese &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/test.php&lt;/span&gt; ćete dobiti sve podatke o instaliranoj PHP biblioteci.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;WAMP&lt;/span&gt;
&lt;br /&gt;
U slučaju da ste instalirali WAMP, PHP je već instaliran i podešen. 
&lt;br /&gt;

&lt;br /&gt;
Za testiranje napravite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\wamp\www\test.php&lt;/span&gt; i u nju upišite sledeći tekst:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;?php phpinfo&amp;#40;&amp;#41;; ?&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako je sve prošlo kako treba, otvaranjem adrese &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/test.php&lt;/span&gt; ćete dobiti sve podatke o instaliranoj PHP biblioteci.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Apache&lt;/span&gt;
&lt;br /&gt;
PHP se pokreće kao dodatni modul u Apache serveru, i zato ćemo morati da sredimo par datoteka u njemu. Prvo moramo napraviti datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Apache24\conf\extra\httpd-php.conf&lt;/span&gt; i u nju upisati:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;LoadModule php5_module &amp;quot;C&amp;#58;/PHP5/php5apache2_4.dll&amp;quot;
&lt;br /&gt;
PHPIniDir &amp;quot;C&amp;#58;/PHP5&amp;quot;
&lt;br /&gt;
&amp;#60;IfModule&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; AddType application/x-httpd-php .php
&lt;br /&gt;
&amp;#60;/IfModule&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ta datoteka sadrži sve potrebne podatke koji su potrebni da bi Apache znao da učita i koristi PHP. Sada tu datoteku moramo dodati u glavnu datoteku za konfiguraciju. Dodajte sledeći red na kraju datoteke &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Apache24\conf\httpd.conf&lt;/span&gt;:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;Include conf/extra/httpd-php.conf&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Podešavanja su gotova, i možemo da resetujemo Apache:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;C&amp;#58;\Apache24\bin\httpd –k restart&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Za testiranje napravite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Apache24\htdocs\test.php&lt;/span&gt; i u nju upišite sledeći tekst:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;?php phpinfo&amp;#40;&amp;#41;; ?&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako je sve prošlo kako treba, otvaranjem adrese &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/test.php&lt;/span&gt; ćete dobiti sve podatke o instaliranoj PHP biblioteci.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3.2] Linux&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Instalacija PHP-a na Linux-u je prilično jednostavna. Potrebno je instalirati PHP5 paket i ponovo pokrenuti Apache:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo apt-get install php5
&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Osnovna podešavanja su takva da je sada PHP pokrenut. Ostaje nam još samo da testiramo da je sve prošlo bez greške. Napravite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;/var/www/test.php&lt;/span&gt; i u nju upišite sledeći tekst:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;?php phpinfo&amp;#40;&amp;#41;; ?&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako je sve prošlo kako treba, otvaranjem adrese &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/test.php&lt;/span&gt; ćete dobiti sve podatke o instaliranoj PHP biblioteci.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 16px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[3.3] Mac OS X&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Apache server koji dolazi uz Mac OS X sadrži sve datoteke potrebne za korišćenje PHP-a. Kao i kod ostalih operativnih sistema, potrebno je uključiti učitavanje PHP modula datoteci za konfiguraciju. Otvorite je komandom:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo nano /etc/apache2/httpd.conf&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pronađite sledeći red i odkomentirajte ga (uklonite # sa početka linije):
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;#LoadModule php5_module libexec/apache2/libphp5.so&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Pre nego što pokrenemo PHP biblioteku, moramo napraviti i njenu datoteku za konfiguraciju. Za početak, možemo iskoristiti standardnu konfiguraciju tako što ćemo ukucati sledeću komandu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo cp /etc/php.ini.default /etc/php.ini&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada je sve spremno za rad. Potrebno je samo ponovo pokrenuti Apache:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;sudo apachectl restart&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Vreme je da testiramo da li je sve prošlo kako treba. Napravite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;/Library/WebServer/Documents/test.php&lt;/span&gt; i u nju upišite sledeći tekst:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;?php phpinfo&amp;#40;&amp;#41;; ?&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako je sve prošlo kako treba, otvaranjem adrese &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/test.php&lt;/span&gt; ćete dobiti sve podatke o instaliranoj PHP biblioteci.
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 20px; line-height: normal&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;[4] Jednostavna PHP aplikacija&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
Pre nego što počnemo sa pisanjem PHP aplikacije, podsetimo se u kojim direktorijumima se čuvaju datoteke do kojih gore pomenuti Internet serveri imaju pristup:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; IIS na Windows-u: &lt;span style=&quot;font-weight: bold&quot;&gt;C:\inetpub\wwwroot\&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; WAMP: &lt;span style=&quot;font-weight: bold&quot;&gt;C:\wamp\www\&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Apache na Windows-u: &lt;span style=&quot;font-weight: bold&quot;&gt;C:\Apache24\htdocs\&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Apache na Linux-u: &lt;span style=&quot;font-weight: bold&quot;&gt;/var/www/&lt;/span&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Apache na Mac OS X-u: &lt;span style=&quot;font-weight: bold&quot;&gt;/Library/WebServer/Documents/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Aplikacija koju ćemo napraviti da bi se malo upoznali s PHP-om je jednostavan digitron. Prikazaćemo polja za unos dva broja i matematičke operacije, i klikom na dugme prikazati rezultat. Počnimo definisanjem statičkog sadržaja. Napravite datoteku &lt;span style=&quot;font-weight: bold&quot;&gt;calculator.php&lt;/span&gt; u jednom od gore definisanom direktorijumu, u zavisnosti od operativnog sistema i Internet servera, i u nju upišite:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;html&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;title&amp;gt;Digitron&amp;#60;/title&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/head&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;body&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;form method=&amp;quot;POST&amp;quot; action=&amp;quot;?calculate=1&amp;quot;&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;input type=&amp;quot;text&amp;quot; name=&amp;quot;n1&amp;quot; size=&amp;quot;10&amp;quot; /&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;input type=&amp;quot;text&amp;quot; name=&amp;quot;op&amp;quot; size=&amp;quot;2&amp;quot; /&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;input type=&amp;quot;text&amp;quot; name=&amp;quot;n2&amp;quot; size=&amp;quot;10&amp;quot; /&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;input type=&amp;quot;submit&amp;quot; name=&amp;quot;submit&amp;quot; value=&amp;quot;Izračunaj&amp;quot; /&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#60;/form&amp;gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#60;/body&amp;gt;
&lt;br /&gt;
&amp;#60;/html&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Upozorenje ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_exclaim.gif&quot; alt=&quot;Exclamation&quot; border=&quot;0&quot; /&gt; Standardni alati u Linux-u i Mac OS X-u snimaju tekstualne datoteke u UTF-8 formatu. Ako koristite Notepad u Windows-u, morate eksplicitno naglasiti da želite UTF-8 format koristeći &lt;span style=&quot;font-weight: bold&quot;&gt;Save As…&lt;/span&gt; dijalog.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
HTML stranicu počinjemo tako što klijentu kažemo da je tekst u &lt;span style=&quot;font-weight: bold&quot;&gt;UTF-8&lt;/span&gt; formatu, što će nam omogućiti korišćenje naših slova. Posle toga definišemo naziv naše stranice. To je tekst koji će klijentska aplikacija, npr. program za pregled internet stranica, iskoristiti kao ime prozora ili jezička u kojem će prikazati sadržaj stranice.
&lt;br /&gt;

&lt;br /&gt;
U telu HTML dokumenta, definišemo formu koja sadrži tri polja za unos teksta, i jedno dugme koje će pokrenuti akciju definisanu na formi. Način na koji će se izvršiti akcija je definisan u polju &lt;span style=&quot;font-weight: bold&quot;&gt;method&lt;/span&gt; na formi. &lt;span style=&quot;font-weight: bold&quot;&gt;POST&lt;/span&gt; je jedna od načina koji Internet serveri razumeju, i njegova svrha je da se pošalju podaci koji mogu dovesti do promene stanja aplikacije. Zbog toga će vam većina programa za pregled internet stranica prikazati upozorenje ako pokušate da osvežite stranicu koju ste dobili kao odgovor na POST akciju. Parametar &lt;span style=&quot;font-weight: bold&quot;&gt;action&lt;/span&gt; definiše šta će se desiti nakon klika na dugme, i u većini slučajeva je to apsolutna ili relativna adresa do nove stranice koja treba da se otvori. U našem slučaju smo definisali da želimo da se otvori ista stranica koja je već bila otvorena, ali da joj se kao parametar prosledi &lt;span style=&quot;font-weight: bold&quot;&gt;calculate=1&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Detaljnije objašnjenje HTML jezika možete naći &lt;a href=&quot;http://www.mycity.rs/Web-dizajn/Svet-web-dizajna.html&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;ovde&lt;/span&gt;&lt;/a&gt;. Dodatna pitanja možete postaviti u &lt;a href=&quot;http://www.mycity.rs/Web-dizajn/&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Web dizajn / HTML&lt;/span&gt;&lt;/a&gt; forumu.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
Otvorite aplikaciju koju smo upravo napravili preko adrese &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/calculator.php&lt;/span&gt;. Videćete kontrole koje smo definisali, ali se za sada, osim ponovnog otvaranja stranice, ništa ne dešava kada pritisnemo dugme. Sada na scenu stupa PHP. Odmah ispod taga koji zatvara formu dodajte sledeće:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;&amp;#60;?php
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if &amp;#40;isset&amp;#40;$_GET&amp;#91;'calculate'&amp;#93;&amp;#41;&amp;#41; &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $n1 = $_POST&amp;#91;'n1'&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $op = $_POST&amp;#91;'op'&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $n2 = $_POST&amp;#91;'n2'&amp;#93;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;!$n1 || !$op || !$n2 || !ctype_digit&amp;#40;$n1&amp;#41; || !ctype_digit&amp;#40;$n2&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Upišite izraz u obliku&amp;#58; broj operacija broj';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else &amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;$op == '+'&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $res = $n1 + $n2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if &amp;#40;$op == '-'&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $res = $n1 - $n2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if &amp;#40;$op == '*'&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $res = $n1 * $n2;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if &amp;#40;$op == '/'&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $res = $n1 / $n2;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;$res&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;Rezultat izraza $n1 $op $n2 je $res&amp;quot;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo 'Nepoznata operacija!';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;#125;
&lt;br /&gt;
?&amp;gt;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Početak PHP koda se označava tekstom &lt;span style=&quot;font-weight: bold&quot;&gt;&amp;#60;?php&lt;/span&gt;, a kraj &lt;span style=&quot;font-weight: bold&quot;&gt;?&amp;gt;&lt;/span&gt;. Sve što je između se tretira kao PHP kod. Na prvi pogled se PHP ne razlikuje mnogo od C jezika, i zbog toga će nam biti lakše da razumemo sintaksu. PHP kod se izvršava na serveru što mu daje šansu da promeni sadržaj koji će biti poslat klijentu. Prilikom čitanja datoteke, PHP redom izvršava sve naredbe na koje nailazi, pa treba paziti kad i gde se piše kod.
&lt;br /&gt;

&lt;br /&gt;
Krenimo od početka. Pošto imamo samo jednu stranicu i nju koristimo za unos podataka i prikaz rezultata, moramo nekako znati kad rezultat treba da bude prikazan, a kad skriven. Za to ćemo iskoristiti parametar &lt;span style=&quot;font-weight: bold&quot;&gt;calculate&lt;/span&gt; koji smo definisali u formi. Prilikom prvog pokretanja aplikacije, parametar neće biti postavljen, i tako ćemo znati da nemamo podatke na osnovu kojih treba da izračunamo rezultat, pa ga nećemo ni prikazati. Vrednost parametra dobijamo koristeći niz &lt;span style=&quot;font-weight: bold&quot;&gt;$_GET&lt;/span&gt;. U tom nizu su definisani svi parametri koji su prosleđeni trenutnoj stranici. Kod koji smo napisali, proverava da li je parametar &lt;span style=&quot;font-weight: bold&quot;&gt;calculate&lt;/span&gt; postavljen, i samo tada izvršava ostatak koda.
&lt;br /&gt;

&lt;br /&gt;
Vrednosti koje smo poslali preko &lt;span style=&quot;font-weight: bold&quot;&gt;POST&lt;/span&gt; metode, dobijamo na isti način kao parametre prosleđene stranici, samo što u ovom slučaju koristimo &lt;span style=&quot;font-weight: bold&quot;&gt;$_POST&lt;/span&gt; niz. Vrednosti u nizu imaju ista imena kao i kontrole koje smo definisali u formi. Možete primetiti da, za razliku od C jezika, ovde nema potrebe da na poseban način definišemo promenljive. Jedino što je bitno je da ime promenljive počinje znakom &lt;span style=&quot;font-weight: bold&quot;&gt;$&lt;/span&gt;. Tip promenljive se automatski menja u odnosu na vrednost koju joj dodelimo.
&lt;br /&gt;

&lt;br /&gt;
U sledećih par redova proveravamo da li su unete sve vrednosti, i da li su upisane pravilne vrednosti. U slučaju da neka vrednost nije ispisana, da je umesto broja upisano nešto drugo ili da je upisana nepoznata operacija, ispisujemo tekst koji opisuje način korišćenja aplikacije. Komanda &lt;span style=&quot;font-weight: bold&quot;&gt;echo&lt;/span&gt; ispisuje zadati tekst u HTML stranicu i time menja sadržaj koji će klijent dobiti.
&lt;br /&gt;

&lt;br /&gt;
U slučaju da su sve vrednosti pravilno upisane, vrednost izraza upisujemo u promenljivu &lt;span style=&quot;font-weight: bold&quot;&gt;$res&lt;/span&gt; i ispisujemo rezultat. Obratite pažnju da u redu za ispis rezultata koristimo &lt;span style=&quot;font-weight: bold&quot;&gt;navodnike&lt;/span&gt;, a ne &lt;span style=&quot;font-weight: bold&quot;&gt;apostrofe&lt;/span&gt;. PHP tekst napisan pod apostrofima koristi baš tako kako je zapisan, dok tekst napisan pod navodnicima proverava i ako nađe &lt;span style=&quot;font-weight: bold&quot;&gt;imena&lt;/span&gt; definisanih promenljivih, na njihovo mesto upisuje &lt;span style=&quot;font-weight: bold&quot;&gt;vrednosti&lt;/span&gt; tih promenljivih.
&lt;br /&gt;

&lt;br /&gt;
Naša mala aplikacijica je gotova, i možete je pokrenuti preko adrese &lt;span style=&quot;font-weight: bold&quot;&gt;http://localhost/calculator.php&lt;/span&gt;.
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: 9px; line-height: normal&quot;&gt;Digitron u Chrome-u&lt;/span&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=9342_151218338_5.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;cite&gt;&lt;span class=&quot;cite-who&quot;&gt;Informacija ::&lt;/span&gt;&lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_idea.gif&quot; alt=&quot;Idea&quot; border=&quot;0&quot; /&gt; Više informacija o PHP-u možete naći u &lt;a href=&quot;http://www.mycity.rs/PHP/&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;PHP&lt;/span&gt;&lt;/a&gt; forumu.&lt;/cite&gt;
&lt;br /&gt;

&lt;br /&gt;
[url=https://www.mycity.rs/must-login.png kod projekta&lt;/span&gt;[/url]
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Hvala za pomoć&lt;/span&gt;:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; &lt;span style=&quot;font-style: italic&quot;&gt;WAMP&lt;/span&gt;: &lt;a href=&quot;http://www.mycity.rs/Korisnik/NIx+Car/&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;NIx Car&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/1-Moderne-aplikacije-Skolski-dani-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Školski dani&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/3-Moderne-aplikacije-MySQL-server-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;MySQL server&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description>
	<pubDate>Tue, 26 Feb 2013 20:22:59 +0100</pubDate>
</item>
<item>
	<title>[1] Moderne aplikacije :: Školski dani</title>
	<link>https://www.mycity.rs/Opste-programiranje/1-Moderne-aplikacije-Skolski-dani-2.html</link>
	<guid>https://www.mycity.rs/?p=1487931</guid>
	<author>nobody@mycity.rs (Srki_82)</author>
	<description>&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/2-Moderne-aplikacije-Internet-serveri-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Internet serveri&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Potrebno znanje za praćenje teksta&lt;/span&gt;:
&lt;br /&gt;
&lt;span class=&quot;ulist&quot;&gt;&lt;span class=&quot;empty_span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;listitem&quot;&gt; Osnovno korišćenje Visual C++-a&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
Ako ste imali sreću, u školi ste imali dobrog nastavnika informatike, i naučio vas je da rešavate matematičke problema uz pomoć programiranja. Ako ste imali još više sreće, naučili ste i da pravite po koju grafičku aplikacija. Ako ste bili veoma srećni, naučili ste i da razmišljate kao programeri.
&lt;br /&gt;

&lt;br /&gt;
Bilo kako bilo, većina vas je stigla do pravljenja konzolnih aplikacija i razumevanja osnovnih principa u programiranju. Verovali ili ne, to znanje je dovoljno za pravljenje jednostavnih, modernih aplikacija. Cilj ovog teksta je da vas provede kroz aplikaciju za unos i pretragu imenika, sve od jednostavne, konzolne aplikacije, pa do moderne, grafičke koja zna da radi s podacima koji se nalaze na internetu. Za razumevanje i praćenje teksta, morate poznavati osnovne termine u programiranju, a preporučljivo je i da znate C++ jezik (svi jezici koje ćemo kasnije koristiti su vrlo slični C++-u).
&lt;br /&gt;

&lt;br /&gt;
Kao što već rekoh, počećemo s konzolnom aplikacijom. Recimo da vam je profesor dao zadatak da napravite imenik, i vi u glavi već vidite kako ćete napraviti unos podataka, brisanje, pretragu i, kao bonus, snimanje i učitavanje na disk. Takva aplikacija bi sigurno zaslužila odličnu ocenu.
&lt;br /&gt;

&lt;br /&gt;
Palimo računar, instaliramo &lt;span style=&quot;font-weight: bold&quot;&gt;Visual Studio 2012 Express&lt;/span&gt; ako ga već nemamo, pravimo nov konzolni projekat i praznu datoteku za naš kod. Pošto želimo da napravimo dobar program, sada zastajemo da razmislimo kako želimo da organizujemo program.
&lt;br /&gt;

&lt;br /&gt;
Definitivno želimo da napravimo strukturu i pomoćne funkcije za rad sa podacima, koje moraju da rade bez obzira na način prikazivanja podataka. Želimo da iz programa izvučemo delove koda koji se često ponavljaju i od njih napravimo funkcije. Želimo da program rastavimo na akcije, tako što ćemo svaku akciju definisati u odvojenoj funkciji, koja može da radi neodvisno od drugih. Za kraj, želimo sve te funkcije da grupišemo u jedan fin, glavni meni.
&lt;br /&gt;

&lt;br /&gt;
Počnimo s tipom koji će služiti za čuvanje podataka:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;struct Person
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char name&amp;#91;50&amp;#93;, address&amp;#91;50&amp;#93;, phone&amp;#91;50&amp;#93;, email&amp;#91;50&amp;#93;;
&lt;br /&gt;
&amp;#125;;&lt;/code&gt;
&lt;br /&gt;
Ovaj tip podatka će nam omogućiti čuvanje imena, adrese, telefona i email-a upisanih osoba. Svako polje može sadržati maksimalno 49 znakova (jedan znak je rezervisan za tzv. NULL znak, kojim se označava kraj stringa).
&lt;br /&gt;

&lt;br /&gt;
Uz pomoć ovog tipa, moramo napraviti internu bazu u kojoj ćemo zapisati podatke. Za tu svrhu ćemo iskoristiti običan niz i jedan broj koji će nam kazati koliko podataka ima u tom nizu:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;struct Person persons&amp;#91;100&amp;#93;;
&lt;br /&gt;
int personCount = 0;&lt;/code&gt;
&lt;br /&gt;
To je naša interna baza. Omogućava unos maksimalno 100 osoba.
&lt;br /&gt;

&lt;br /&gt;
Odlično… sada možemo preći na funkcije za rad sa ovim podacima. Da krenemo od najjednostavnije… funkcija za prikaz podataka o jednoj osobi:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void printPerson&amp;#40;int i&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Ime&amp;#58; %s\n&amp;quot;, persons&amp;#91;i&amp;#93;.name&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Adresa&amp;#58; %s\n&amp;quot;, persons&amp;#91;i&amp;#93;.address&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Telefon&amp;#58; %s\n&amp;quot;, persons&amp;#91;i&amp;#93;.phone&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Email&amp;#58; %s\n\n&amp;quot;, persons&amp;#91;i&amp;#93;.email&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Jednostavan ispis svakog polja na ekran.
&lt;br /&gt;

&lt;br /&gt;
Sledeća funkcija će biti postavljanje polja za određen zapis u bazi. Želimo da ova funkcija omogućava čitanje cele linije, ali i očuvanje stare vrednosti u slučaju da korisnik unese praznu liniju. Zbog toga ćemo napraviti i jednu pomoćnu funkciju za unos podataka:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void readLine&amp;#40;char *line&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fflush&amp;#40;stdin&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;gets&amp;#40;line&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void updatePerson&amp;#40;int i&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char str&amp;#91;50&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Ime &amp;#91;%s&amp;#93;&amp;#58; &amp;quot;, persons&amp;#91;i&amp;#93;.name&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readLine&amp;#40;str&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;strlen&amp;#40;str&amp;#41; &amp;gt; 0&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;i&amp;#93;.name, str&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Adresa &amp;#91;%s&amp;#93;&amp;#58; &amp;quot;, persons&amp;#91;i&amp;#93;.address&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readLine&amp;#40;str&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;strlen&amp;#40;str&amp;#41; &amp;gt; 0&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;i&amp;#93;.address, str&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Telefon &amp;#91;%s&amp;#93;&amp;#58; &amp;quot;, persons&amp;#91;i&amp;#93;.phone&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readLine&amp;#40;str&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;strlen&amp;#40;str&amp;#41; &amp;gt; 0&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;i&amp;#93;.phone, str&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Email &amp;#91;%s&amp;#93;&amp;#58; &amp;quot;, persons&amp;#91;i&amp;#93;.email&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readLine&amp;#40;str&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;strlen&amp;#40;str&amp;#41; &amp;gt; 0&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;i&amp;#93;.email, str&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Pomoćna funkcija &lt;span style=&quot;font-weight: bold&quot;&gt;readLine&lt;/span&gt;, za razliku od funkcije &lt;span style=&quot;font-weight: bold&quot;&gt;scanf&lt;/span&gt;, vraća i prazna mesta i praznu liniju u slučaju da korisnik samo pritisne Enter. U funkciji za upis podataka, prikazujemo trenutnu vrednost polja i menjamo je samo u slučaju da je korisnik uneo novu vrednost.
&lt;br /&gt;

&lt;br /&gt;
Od funkcija za uređivanje podataka nam nedostaje samo još funkcija za brisanje:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void removePerson&amp;#40;int i&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int j;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;j = i; j &amp;#60; personCount - 1; ++j&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;persons&amp;#91;j&amp;#93; = persons&amp;#91;j + 1&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;--personCount;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;personCount&amp;#93;.name, &amp;quot;&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;personCount&amp;#93;.address, &amp;quot;&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;personCount&amp;#93;.phone, &amp;quot;&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;strcpy&amp;#40;persons&amp;#91;personCount&amp;#93;.email, &amp;quot;&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Sve podatke koji se nalaze ispred izbrisanog zapisa, pomeramo za jedno mesto nazad, i iz zadnjeg zapisa brišemo sve podatke. Na taj način ne ostavljamo rupe u našoj bazi i time izbegavamo fragmentaciju na račun brzine izvršavanja, koja nam, u ovom slučaju, nije mnogo bitna, jer nemamo previše podataka.
&lt;br /&gt;

&lt;br /&gt;
Sad možemo napraviti glavni meni koji će korisniku ponuditi listu akcija:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void main&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int done = 0, action;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;-=&amp;#91; Imenik &amp;#93;=-\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;while &amp;#40;!done&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;\n.&amp;#58; Akcije &amp;#58;.\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; &amp;#91;1&amp;#93; Pretraga imenika\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot; ---------------------------------------\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; &amp;#91;2&amp;#93; Unos nove osobe\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; &amp;#91;3&amp;#93; Promena podataka upisane osobe\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; &amp;#91;4&amp;#93; Brisanje osobe\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot; ---------------------------------------\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; &amp;#91;5&amp;#93; Snimanje na disk\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; &amp;#91;6&amp;#93; Ucitavanje sa diska\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot; ---------------------------------------\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;&amp;nbsp; &amp;#91;0&amp;#93; Izlaz\n\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Izaberite akciju &amp;#91;0-6&amp;#93;&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanf&amp;#40;&amp;quot;%d&amp;quot;, &amp;amp;action&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#40;action &amp;#60; 0 || action &amp;gt; 6&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Nepravilna akcija!\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Izaberite akciju &amp;#91;0-6&amp;#93;&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;scanf&amp;#40;&amp;quot;%d&amp;quot;, &amp;amp;action&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;switch &amp;#40;action&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 1&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;search&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 2&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;addPerson&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 3&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;editPerson&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 4&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;deletePerson&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 5&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;savePersons&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;case 6&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;loadPersons&amp;#40;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;default&amp;#58;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;done = 1;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;break;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
Ovo je naša glavna petlja. Taj deo koda će se vrteti sve dok korisnik ne odluči da zatvori program.
&lt;br /&gt;

&lt;br /&gt;
Svaku akciju smo odvojili u posebnu proceduru. Počnimo od najjednostavnije… dodavanje novog zapisa:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void addPerson&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;\n.&amp;#58; Unos nove osobe &amp;#58;.\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;updatePerson&amp;#40;personCount++&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;
To je to. Zahvaljujući pomoćnim funkcijama, dovoljno je da pokrenemo uređivanje prvog slobodnog zapisa, i zatim povećamo broj zapisa za 1.
&lt;br /&gt;

&lt;br /&gt;
Uređivanje zapisa je slično unosu novog. Razlika je u tome što moramo izabrati koji zapis želimo da menjamo:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void editPerson&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int i;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;\n.&amp;#58; Promena podataka upisane osobe &amp;#58;.\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Redni broj osobe&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scanf&amp;#40;&amp;quot;%d&amp;quot;, &amp;amp;i&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;i &amp;#60; 0 || i &amp;gt;= personCount&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Ne postoji osoba s tim rednim brojem!\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;updatePerson&amp;#40;i&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Prateći isti šablon, pravimo i funkciju za brisanje zapisa:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void deletePerson&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int i;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;\n.&amp;#58; Brisanje osobe &amp;#58;.\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Redni broj osobe&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;scanf&amp;#40;&amp;quot;%d&amp;quot;, &amp;amp;i&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;i &amp;#60; 0 || i &amp;gt;= personCount&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Ne postoji osoba s tim rednim brojem!\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;removePerson&amp;#40;i&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Sad na malo, ali samo malo težu funkciju. Traženje se svodi na proveravanje da li se uneti tekst nalazi u nekom od polja, i prikaza zapisa koji sadrži to polje:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void search&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char searchStr&amp;#91;50&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int i, count = 0;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;\n.&amp;#58; Pretraga imenika &amp;#58;.\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Pretraga&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readLine&amp;#40;searchStr&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;i = 0; i &amp;#60; personCount; ++i&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if &amp;#40;strstr&amp;#40;persons&amp;#91;i&amp;#93;.name, searchStr&amp;#41; || strstr&amp;#40;persons&amp;#91;i&amp;#93;.address, searchStr&amp;#41; || strstr&amp;#40;persons&amp;#91;i&amp;#93;.phone, searchStr&amp;#41; || strstr&amp;#40;persons&amp;#91;i&amp;#93;.email, searchStr&amp;#41;&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printPerson&amp;#40;i&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;++count;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Broj rezultata&amp;#58; %d\n&amp;quot;, count&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Sada na red dolaze bonus… funkcije za čuvanje i čitanje podataka. Čuvanje podataka se svodi na ispis svih podataka u datoteku:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void savePersons&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char fileName&amp;#91;FILENAME_MAX&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;FILE *f;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int i;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;\n.&amp;#58; Snimanje na disk &amp;#58;.\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Unesite ime datoteke&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readLine&amp;#40;fileName&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;f = fopen&amp;#40;fileName, &amp;quot;w&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;f&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fprintf&amp;#40;f, &amp;quot;%d\n&amp;quot;, personCount&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for &amp;#40;i = 0; i &amp;#60; personCount; ++i&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fputs&amp;#40;persons&amp;#91;i&amp;#93;.name, f&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fprintf&amp;#40;f, &amp;quot;\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fputs&amp;#40;persons&amp;#91;i&amp;#93;.address, f&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fprintf&amp;#40;f, &amp;quot;\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fputs&amp;#40;persons&amp;#91;i&amp;#93;.phone, f&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fprintf&amp;#40;f, &amp;quot;\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fputs&amp;#40;persons&amp;#91;i&amp;#93;.email, f&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fprintf&amp;#40;f, &amp;quot;\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fclose&amp;#40;f&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Doslo je do greske prilikom otvaranja datoteke \&amp;quot;%s\&amp;quot;.\n&amp;quot;, fileName&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
Funkcija za učitavanje podataka zahteva mogućnost čitanja cele linije, ali i mogućnost čitanja praznih redova iz datoteke. Zbog toga ćemo napisati i jednu pomoćnu funkciju koja radi baš to:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;void freadLine&amp;#40;FILE *f, char *line&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char str&amp;#91;50&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char *nl;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fgets&amp;#40;str, 50, f&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;nl = strchr&amp;#40;str, '\n'&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;nl&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;*nl = '\0';
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;strcpy&amp;#40;line, str&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;

&lt;br /&gt;
void loadPersons&amp;#40;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;char fileName&amp;#91;FILENAME_MAX&amp;#93;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;FILE *f;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;int i;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;\n.&amp;#58; Ucitavanje sa diska &amp;#58;.\n&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Unesite ime datoteke&amp;#58; &amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;readLine&amp;#40;fileName&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;f = fopen&amp;#40;fileName, &amp;quot;r&amp;quot;&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if &amp;#40;f&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;while &amp;#40;personCount&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;removePerson&amp;#40;personCount - 1&amp;#41;;
&lt;br /&gt;

&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fscanf&amp;#40;f, &amp;quot;%d\n&amp;quot;, &amp;amp;personCount&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;for &amp;#40;i = 0; i &amp;#60; personCount; ++i&amp;#41;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#123;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freadLine&amp;#40;f, persons&amp;#91;i&amp;#93;.name&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freadLine&amp;#40;f, persons&amp;#91;i&amp;#93;.address&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freadLine&amp;#40;f, persons&amp;#91;i&amp;#93;.phone&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;freadLine&amp;#40;f, persons&amp;#91;i&amp;#93;.email&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;fclose&amp;#40;f&amp;#41;;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#125;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;else
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;printf&amp;#40;&amp;quot;Doslo je do greske prilikom otvaranja datoteke \&amp;quot;%s\&amp;quot;.\n&amp;quot;, fileName&amp;#41;;
&lt;br /&gt;
&amp;#125;&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
To je naš program. Fino razdvojen na celine, lak za održavanje i uklanjanje eventualnih grešaka, i program koji bi dobio odličnu ocenu. Iako bi ovaj program u školi prošao sasvim dobro, u pravom svetu je prilično nepraktičan. Omogućava rad sa malim brojem podataka, pokušaj unosa većeg broja bi izazvalo greške zbog kojih bi se program srušio, prikaz podataka je nepregledan, itd… Da bismo napredovali od ovakvog do modernijeg programa, moraćemo naučiti da koristimo nove alate i jezike. Srećom, znanje koje smo do sada stekli će nam dati veliku prednost u savladavanju tih novih stvari koje nas očekuju.
&lt;br /&gt;

&lt;br /&gt;
[url=https://www.mycity.rs/must-login.png kod projekta&lt;/span&gt;[/url]
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;table style=&quot;border:0;width:100%&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;width:50%&quot;&gt;&lt;/td&gt;&lt;td style=&quot;border:0;width:50%;text-align:right&quot;&gt;&lt;a style=&quot;background-color: rgb(226, 230, 232);border: 1px solid #859099;margin: 5px 5px;padding: 20px;text-align: center;display: inline-block;cursor: pointer;color: #004A8B;text-decoration: none;&quot; href=&quot;http://www.mycity.rs/Opste-programiranje/2-Moderne-aplikacije-Internet-serveri-2.html&quot;&gt;&lt;table style=&quot;border:0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;border:0;font-weight: bold;&quot;&gt;Internet serveri&lt;/td&gt;&lt;td style=&quot;border:0&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description>
	<pubDate>Sun, 03 Feb 2013 20:34:56 +0100</pubDate>
</item>
<item>
	<title>Neki poznatiji algoritmi, objasnjenje i implementacije</title>
	<link>https://www.mycity.rs/Opste-programiranje/Neki-poznatiji-algoritmi-objasnjenje-i-implementacije.html</link>
	<guid>https://www.mycity.rs/?p=783751</guid>
	<author>nobody@mycity.rs (N1k0l4)</author>
	<description>Dakle, počinjemo sa pretraživanjem:
&lt;br /&gt;
Pod pretraživanjem se podrazumeva nalaženje indeksa člana nekog niza čija je vrednost jednaka traženoj vrednosti. Postoji više načina pretrage, ovde ću napisati jedan sporiji, radi u vremenu O(n) i jedan brži O(log k) gde je k (nepoznati) izabran broj.
&lt;br /&gt;
O složenosti algoritama, detlajnije ovde
&lt;br /&gt;

&lt;br /&gt;
Sporo pretraživanje:
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Linearno pretraživanje:&lt;/span&gt;
&lt;br /&gt;
Pod linearnim pretraživanjem podrazumevamo prolazak kroz čitav niz i upoređivanjem svakog elementa sa traženom vrednošću. Niz koji ima n elemenata u najgorem slučaju će napraviti n poređenja(Zato mu je složenost O(n)). Algoritam je veoma prost, ali i manje efikasan na velikim nizovima.
&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline&quot;&gt;Algoritam:&lt;/span&gt;
&lt;br /&gt;
 -napravi petlju koja se kreće od prvog do poslednjeg člana niza
&lt;br /&gt;
 - Za svaki element u nizu proveriti da li je jednak traženoj vrednsoti.
&lt;br /&gt;
 -Ukoliko jeste, sačuvaj njegov index, i prekini pretragu
&lt;br /&gt;
 -U suprotnom, nastavi dalje.
&lt;br /&gt;
 -kada napusti petlju, vrati negativan broj kao znak da nije nađen index.
&lt;br /&gt;
Implementacija u C-u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
int linearna_pretraga&amp;#40;int *a, int duzina_niza, int vrednost&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
for&amp;#40;int i = 0 ; i &amp;lt; duzina_niza ; i++&amp;#41;
&lt;br /&gt;
if&amp;#40;a&amp;#91;i&amp;#93; == vrednost&amp;#41;
&lt;br /&gt;
return i;
&lt;br /&gt;
return -1;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
-------------------------------------------------------------------
&lt;br /&gt;
Brze pretrazivanje: 
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt; Binarna pretraga:&lt;/span&gt;
&lt;br /&gt;
Binarna pretraga je brža i efikasnija od linearne pretrage. Zasniva se na ideji da se u svakom koraku odbaci polovina mogućnosti. Kako?
&lt;br /&gt;
Pitamo da li je tražena vrednost jednaka srednjem elementu niza. Ukoliko jeste vratimo njegov index, u suprotnom ako je element manji(veći) onda niz polovimo tako da taj srednji član postane gornja(donja) granica i nastavimo postupak. Da bi smo mogli efikasno  da primenimo algoritam, niz MORA da bude sortiran.
&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline&quot;&gt; Primer: &lt;/span&gt;
&lt;br /&gt;
Dat je niz brojava 1,2,3,4,5 ..... 60.
&lt;br /&gt;
Recimo da treba da proverimo da li se medju njima nalazi broj 47.
&lt;br /&gt;
Da bi smo to uradili linearnom pretragom mi moramo 47 puta da napravimo poredjenje. Da bi smo to uradili binarnom pretragom.... sad cemo da vidimo:
&lt;br /&gt;
Pre svakog ovog koraka pitamo da li je broj jednak toj srednjoj vrednosti, ako jeste našli smo ga, u suprotnom pratimo korake:
&lt;br /&gt;
 1.Da li je broj veci od 30? -Jeste. -Razmatramo brojeve od 30-60
&lt;br /&gt;
2. Da li je broj veci od 45? -Jeste -Razmatramo brojeve od 45 - 60
&lt;br /&gt;
3. Da li je broj evci od 52? -Nije -Razmatramo brojeve od 45-52
&lt;br /&gt;
4. Da li je broj veci od 48? Nije -Razmatramo brojeve od 45-48
&lt;br /&gt;
5. Da li je broj veći od 46? Jeste -Razmatramo brojeve 46-48
&lt;br /&gt;
6. Pitamo dali je broj jednak sa 47. Jeste - Vratimo njegovu vrednost.
&lt;br /&gt;

&lt;br /&gt;
Šta ukoliko ne bi smo znali koliko ima članova u nizu, pa ne možemo da tražimo srednju vrednost.
&lt;br /&gt;
Jednostavno, uporedjivaćemo broj sa stepenom dvojke sve dok stepen ne postane veći od traženog broja a onda ćemo da primenimo prethodni algoritam jer ćemo imati gornju i donju granicu (gornja je prvi broj koji je prešao vrednost traženog broja, a donja je taj broj/2 )
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Algoritam:&lt;/span&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;a href=&quot;http://www.mycity.rs/slika.php?slika=12199_71486499_BinarySearch.Flowchart.png&quot; target=&quot;_blank&quot; class=&quot;postlink&quot;&gt;&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;

&lt;br /&gt;
Implementacija u C-u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
int binarySearch&amp;#40;int *data, int value, int left, int right&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
while &amp;#40;left &amp;lt;= right&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
mid = &amp;#40;right-left&amp;#41;/2+left;
&lt;br /&gt;
if &amp;#40;data&amp;#91;mid&amp;#93; == value&amp;#41;
&lt;br /&gt;
return mid;
&lt;br /&gt;
if &amp;#40;value &amp;lt; data&amp;#91;mid&amp;#93;&amp;#41;
&lt;br /&gt;
right = mid-1;
&lt;br /&gt;
else
&lt;br /&gt;
left = mid+1;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
return -1;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Rekurzivna varijanta(nema potrebe za njenim koriscenjem, ali evo implementacije) &lt;/span&gt;
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
int binarySearch&amp;#40;int a&amp;#91;&amp;#93;, int value, int left, int right&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
if &amp;#40;right &amp;lt; left&amp;#41;
&lt;br /&gt;
return -1;
&lt;br /&gt;
mid = &amp;#40;right-left&amp;#41;/2 + left;
&lt;br /&gt;
if &amp;#40;a&amp;#91;mid&amp;#93; == value
&lt;br /&gt;
return mid;
&lt;br /&gt;
if &amp;#40;value &amp;lt; a&amp;#91;mid&amp;#93;&amp;#41;
&lt;br /&gt;
return binarySearch&amp;#40;a, value, left, mid-1&amp;#41;;
&lt;br /&gt;
else
&lt;br /&gt;
return binarySearch&amp;#40;a, value, mid+1, right&amp;#41;;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
-------------------------------------
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Sortiranje&lt;/span&gt;
&lt;br /&gt;
Jedan od problema u računarstvu jeste uređivanje niza podataka.
&lt;br /&gt;
Kao što se gore moglo videti kod pretrage da posotji više algoritama koji su različite efikasnosti i složenosti tako i kod algoritama za sortiranje postoje oni koji su manje efikasni i koji su više efikasni.
&lt;br /&gt;
Ukoliko postoje algoritmi koji su više efikasni, zašto onda koristiti algoritme koji su manje efikasni? Razlog je jednostavan: Nema svrhe koristiti komplikovane algoritme za sortiranje na manje nizove. koji imaju par stotina članova. Kod takvih nizova nećemo primetiti razliku u  izvršavanju, a uštedećemo dosta na vremenu potrebnom za implementaciju algortima.
&lt;br /&gt;
Dakle, ovde će biti opisani sledeći algoritmi:
&lt;br /&gt;
 - Selection sort, radi u vremenu O(n^2)
&lt;br /&gt;
 - Bubble sort, vreme O(n ^2)
&lt;br /&gt;
 - Merge sort, O(n*log n)
&lt;br /&gt;
 - Quick sort,  O(n*log n)
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt; Selection sort&lt;/span&gt;
&lt;br /&gt;
Selection sort je jedan od može se reći najprostijih, najintuitivnijih algoritama za sortiranje. Ideja je sledeća:
&lt;br /&gt;
 -Nadjemo najmanji element u nizu
&lt;br /&gt;
 -Zamenimo mu mesto sa prvim elementom
&lt;br /&gt;
 -Ponovimo ovaj postupak počevši od sledećeg elementa.
&lt;br /&gt;
Animacija prikaya kako radi:
&lt;br /&gt;
&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;

&lt;br /&gt;
Implementacija u C-u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
void selectionSort&amp;#40;int numbers&amp;#91;&amp;#93;, int array_size&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
int i, j;
&lt;br /&gt;
int min, temp;
&lt;br /&gt;
for &amp;#40;i = 0; i &amp;lt; array_size-1; i++&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
min = i;
&lt;br /&gt;
for &amp;#40;j = i+1; j &amp;lt; array_size; j++&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
if &amp;#40;numbers&amp;#91;j&amp;#93; &amp;lt; numbers&amp;#91;min&amp;#93;&amp;#41;
&lt;br /&gt;
min = j;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
temp = numbers&amp;#91;i&amp;#93;;
&lt;br /&gt;
numbers&amp;#91;i&amp;#93; = numbers&amp;#91;min&amp;#93;;
&lt;br /&gt;
numbers&amp;#91;min&amp;#93; = temp;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Bubble sort&amp;gt; &lt;/span&gt;
&lt;br /&gt;
Bubble sort je jedan od najstarijih, ali i najsporijih algoritama za sortiranje.
&lt;br /&gt;
Ideja: Poredi svaki element sa prvim do sebe i ukoliko je potrebno menja im mesta.
&lt;br /&gt;
Postupak se ponavlja sve dok ne prodje kroz celu listu bez zamena, odnosno sve dok ne postane sortiran.
&lt;br /&gt;
Ovaj algoritam generalno važi za najnefikasniji algoritam. U najboljem slučaju kada je niz već sortiran potrebno mu je vreme O(n) da bi se izvršio, u suprotnom O(n^2).
&lt;br /&gt;
Primer kako radi, preuzeto sa wikipedije
&lt;br /&gt;
Let us take the array of numbers &amp;quot;5 1 4 2 8&amp;quot;, and sort the array from lowest number to greatest number using bubble sort algorithm. In each step, elements written in bold are being compared.
&lt;br /&gt;

&lt;br /&gt;
First Pass:
&lt;br /&gt;
( 5 1 4 2 8 ) \to ( 1 5 4 2 8 ) Here, algorithm compares the first two elements, and swaps them.
&lt;br /&gt;
( 1 5 4 2 8 ) \to ( 1 4 5 2 8 )
&lt;br /&gt;
( 1 4 5 2 8 ) \to ( 1 4 2 5 8 )
&lt;br /&gt;
( 1 4 2 5 8 ) \to ( 1 4 2 5 8 ) Now, since these elements are already in order, algorithm does not swap them.
&lt;br /&gt;
Second Pass:
&lt;br /&gt;
( 1 4 2 5 8 ) \to ( 1 4 2 5 8 )
&lt;br /&gt;
( 1 4 2 5 8 ) \to ( 1 2 4 5 8 )
&lt;br /&gt;
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
&lt;br /&gt;
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
&lt;br /&gt;
Now, the array is already sorted, but our algorithm does not know if it is completed. Algorithm needs one whole pass without any swap to know it is sorted.
&lt;br /&gt;
Third Pass:
&lt;br /&gt;
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
&lt;br /&gt;
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
&lt;br /&gt;
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
&lt;br /&gt;
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
&lt;br /&gt;
Implementacija u C-u:
&lt;br /&gt;
&lt;code class=&quot;highlight&quot;&gt;
&lt;br /&gt;
void bubbleSort&amp;#40;int numbers&amp;#91;&amp;#93;, int array_size&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
int i, j, temp;
&lt;br /&gt;
for &amp;#40;i = &amp;#40;array_size - 1&amp;#41;; i &amp;gt;= 0; i--&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
for &amp;#40;j = 1; j &amp;lt;= i; j++&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
if &amp;#40;numbers&amp;#91;j-1&amp;#93; &amp;gt; numbers&amp;#91;j&amp;#93;&amp;#41;
&lt;br /&gt;
&amp;#123;
&lt;br /&gt;
temp = numbers&amp;#91;j-1&amp;#93;;
&lt;br /&gt;
numbers&amp;#91;j-1&amp;#93; = numbers&amp;#91;j&amp;#93;;
&lt;br /&gt;
numbers&amp;#91;j&amp;#93; = temp;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&amp;#125;
&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
------------------------------------
&lt;br /&gt;
Do kraja dana bice postavljeni i quick sort i merge sort</description>
	<pubDate>Sat, 05 Jul 2008 16:35:35 +0100</pubDate>
</item>
<item>
	<title>Najnoviji WIN SDK API Reference</title>
	<link>https://www.mycity.rs/Opste-programiranje/Najnoviji-WIN-SDK-API-Reference.html</link>
	<guid>https://www.mycity.rs/?p=292995</guid>
	<author>nobody@mycity.rs (Peca)</author>
	<description>obavezan 'help' za svakog ozbiljnog Windows programera
&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;</description>
	<pubDate>Tue, 03 Jan 2006 18:31:02 +0100</pubDate>
</item>
<item>
	<title>Easy regular expressions with Expresso</title>
	<link>https://www.mycity.rs/Opste-programiranje/Easy-regular-expressions-with-Expresso.html</link>
	<guid>https://www.mycity.rs/?p=257568</guid>
	<author>nobody@mycity.rs (snoop)</author>
	<description>Zanimljiv alat za generisanje Regular Expression-a.
&lt;br /&gt;
Generise kod za Visual Basic.NET i C# ako nemate vremena da ucite Regular Expression ili je konfuzan za ucenje
&lt;br /&gt;

&lt;br /&gt;
Free of charge &lt;img src=&quot;https://www.mycity.rs/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Koristan link:&lt;/span&gt; &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold&quot;&gt;Download:&lt;/span&gt; &lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt; (0.53MB)
&lt;br /&gt;

&lt;br /&gt;
&lt;img class=&quot;post_slika&quot; src=&quot;/must-login.png&quot; border=&quot;0&quot; /&gt;</description>
	<pubDate>Tue, 01 Nov 2005 11:03:35 +0100</pubDate>
</item>
<item>
	<title>Search Engine za OpenSource kod</title>
	<link>https://www.mycity.rs/Opste-programiranje/Search-Engine-za-OpenSource-kod.html</link>
	<guid>https://www.mycity.rs/?p=162590</guid>
	<author>nobody@mycity.rs (bobby)</author>
	<description>Malo sam kripticno sastavio naslov...
&lt;br /&gt;
U pitanju je pretrazivac koji pretrazuje source OpenSource aplikacija.
&lt;br /&gt;
Pretrazuje SourceForge, Novell Forge, Apache, Mozilla i jos puno drugih sajtova u potrazi za kodom koji vam je potreban.
&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;</description>
	<pubDate>Wed, 18 May 2005 07:57:41 +0100</pubDate>
</item>
<item>
	<title>Hash funkcije MD4, MD5, SHA-1, RIPEMD  [engleski]</title>
	<link>https://www.mycity.rs/Opste-programiranje/Hash-funkcije-MD4-MD5-SHA-1-RIPEMD-engleski.html</link>
	<guid>https://www.mycity.rs/?p=107104</guid>
	<author>nobody@mycity.rs (bobby)</author>
	<description>Obecao sam u drugoj temi da cu na forum postaviti moj seminarski rad na temu Hash funkcija. Pa da odrzim obecanje...
&lt;br /&gt;

&lt;br /&gt;
Rad sam morao da okacim kao fajl jer kopiranjem na forum se gube tabele i formatiranje teksta, kao i neki znakovi.
&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;[Link mogu videti samo ulogovani korisnici]&lt;/b&gt;
&lt;br /&gt;

&lt;br /&gt;
Nemojte mi zameriti na gramatickim greskama, u vreme pisanja teksta sam engleski znao samo iz filmova i druzeci se sa kompjuterom. U skoli sam ucio ruski.</description>
	<pubDate>Thu, 13 Jan 2005 21:16:21 +0100</pubDate>
</item>
</channel>
</rss>

