programiranje za internet - fpmoz.ba · pdf . 2015/2016. programiranje za internet 7 •...

31
Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 1 PROGRAMIRANJE ZA INTERNET FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI SVEUČILIŠTE U MOSTARU Doc.dr.sc. GORAN KRALJEVIĆ

Upload: phamthuy

Post on 01-Feb-2018

251 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 1

PROGRAMIRANJE ZA INTERNET

FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI

SVEUČILIŠTE U MOSTARU

Doc.dr.sc. GORAN KRALJEVIĆ

Page 2: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 2

Web:

http://www.fpmoz.ba/gkraljevic

Pitanja, primjedbe, dogovor za konzultacije ...

o E-mail: [email protected]

[email protected]

Programiranje za Internet

Page 3: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 3

Kratki uvod u PHP

Page 4: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 4

PHP – Uvod

Page 5: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 5

• PHP (Hypertext Preprocessor) -> open-source skriptni

(serverski) jezik koji se interpretira na strani servera (ukoliko taj server podržava PHP)

• Pogodan za razvoj Weba

• Dostupan na raznim platformama

o Windows, Linux, Unix, OS X, ...

• Jednostavan za učenje

o sintaksa slijedi C, Javu, Perl

• CILJ: Jednostavan jezik za brzo stvaranje dinamičkih stranica Weba!

PHP – Uvod

Page 6: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 6

• PHP služi za dinamičko generiranje HTML koda i obradu zahtjeva.

• Korisnik vidi samo čisti HTML kod, ne i kod skripte.

• PHP kod može stajati sam ili u kombinaciji s HTML-om.

• U trenutku pokretanja .php skripte na serveru se pokreće novi proces.

• PHP prevoditelj (parser) prepoznaje PHP kod unutar dokumenta

putem tagova <?php ?>

Moguće su još i konstrukcije:

<% %>

<??>

<script language='php'></script>

PHP – Uvod

Page 7: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 7

• Princip rada PHP-a

Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica popunjena dinamičkim sadržajem koja se onda šalje nazad korisniku.

o Korisnik putem preglednika zahtijeva određeni resurs (PHP program, datoteku).

o Zahtjev dolazi na poslužitelj koji prepoznaje da se radi o PHP programu.

o Poslužitelj poziva PHP engine koji izvršava PHP program -> rezultat je HTML kod koji se šalje nazad korisniku.

PHP – Uvod

Page 8: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 8

PHP + baza podataka

Page 9: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 9

• PHP podržava rad sa velikim brojem baza podataka, najbolje (i najduže) radi sa bazama podataka iz open-source okruženja (MySQL i PostgreSQL), ali isto tako PHP radi i sa ostalim, komercijalnim bazama podataka (npr. Oracle, SQL Server).

• Mi ćemo u projektima koristiti MySQL bazu podataka.

PHP + MySQL

Page 10: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 10

PHP + MySQL

• MySQL -> PHPMyAdmin

Page 11: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 11

PHP + MySQL

• PDO / MySQLi / MySQL

Page 12: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 12

PHP + MySQL

• PDO / MySQLi

o PDO – podrška za 12 baza

o MySQLi – podrška za MySQL

Page 13: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 13

PHP + MySQL

• PDO / MySQLi / MySQL

Page 14: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 14

PHP + MySQL

Page 15: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 15

PHP + MySQL

• php.ini - datoteka

• phpinfo () - funkcija

Page 16: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 16

• Povezivanje PHP programa sa nekom bazom podataka moguće je putem ugrađenih funkcija, koje su karakteristične u svome imenu za svaku od pojedinih baza.

• Primjer dostupnih funkcija za rad sa MySQL bazom podataka:

PHP + MySQL

o mysql_affected_rows o mysql_close o mysql_connect o mysql_create_db o mysql_data_seek o mysql_db_query o mysql_drop_db o mysql_errno o mysql_error o mysql_list_fields o mysql_list_dbs o mysql_list_tables o mysql_select_db o mysql_tablename o mysql_query o mysql_result

o mysql_fetch_array o mysql_fetch_field o mysql_fetch_lengths o mysql_fetch_object o mysql_fetch_row o mysql_field_name o mysql_field_seek o mysql_field_table o mysql_field_type o mysql_field_flags o mysql_field_len o mysql_free_result o mysql_insert_id o mysql_pconnect o mysql_num_fields o mysql_num_rows

Page 17: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 17

• Pristup MySQL bazi –> koraci:

o Spajanje na bazu (mysql_connect_db)

o Odabir baze (mysql_select_db)

o Priprema upita (definiranje upita)

o Izvršavanje upita (mysql_query)

o Prihvat i obrada rezultata (mysql_fetch_*)

o (Opcionalno prekinuti vezu s bazom) (mysql_close)

PHP + MySQL

Page 18: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 18

• Primjer spajanja na bazu

<?php

//primjer.php

$conn = mysql_connect ("localhost", "root", "***");

if (!$conn) {

echo "Spajanje na bazu nije uspjelo: " . mysql_error(); exit;

}

?>

PHP + MySQL

Page 19: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 19

• Odabir baze

<?php

$conn = mysql_connect ("localhost", "root", "***");

if (!$conn) {

echo "Spajanje na bazu nije uspjelo: " . mysql_error(); exit;

}

if (!mysql_select_db ("test")) {

echo "Odabir baze nije uspio: " . mysql_error(); exit;

}

?>

PHP + MySQL

Page 20: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 20

• Priprema i izvršavanje upita

<?php

$sql = "SELECT * FROM DJELATNIK";

$result = mysql_query ($sql);

if (!$result) {

echo "SQL upit ($sql) nije uspješno izvršen: " . mysql_error(); exit;

}

?>

PHP + MySQL

Page 21: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 21

• Prihvat i obrada rezultata

<?php

if (mysql_num_rows ($result) == 0) {

echo "Nema redaka u rezultatu!"; exit;

}

while ($row = mysql_fetch_assoc ($result)) {

echo $row["IME"]."".$row["PREZIME"]."".$row["PLACA"]."<br>";

}

?>

PHP + MySQL

Page 22: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 22

<html> <head><title>TEST</title></head> <body> <?php $conn = mysql_connect ("localhost", "root", "***"); if (!$conn) { echo "Spajanje na bazu nije uspjelo: " . mysql_error(); exit; } if (!mysql_select_db ("test")) { echo "Odabir baze nije uspio: " . mysql_error(); exit; } $sql = "SELECT * FROM DJELATNIK"; $result = mysql_query ($sql); if (!$result) { echo "SQL upit ($sql) nije uspješno izvršen: " . mysql_error(); exit; } if (mysql_num_rows ($result) == 0) { echo "Nema redaka u rezultatu!"; exit; } while ($row = mysql_fetch_assoc ($result)) { echo $row["IME"]." ".$row["PREZIME"]." ".$row["PLACA"]."<br>"; } ?> </body> </html>

PHP + MySQL

Page 23: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 23

PHP + MySQL

• Primjeri funkcija koje vraćaju jedan slog iz tablice kao niz, i to ona polja (stupce) koji su izabrani naredbom SELECT (svaki sljedeći poziv te funkcije vraća sljedeći slog iz tablice – pokazivač se pomiče na početak sljedećeg reda u tablici):

o mysql_fetch_row()

o mysql_fetch_assoc()

o mysql_fetch_array()

• Ako se žele dohvatiti svi slogovi u tablici, koristi se petlja while i u

uvjetu se poziva funkcija.

• Razlika između navedenih funkcija je u mogućnosti pristupa članovima niza (neka se niz zove row):

o mysql_fetch_row() pristupa preko indeksa polja (npr. $row[0]),

o mysql_fetch_assoc() pristupa preko naziva polja (npr. $row['IME']),

o mysql_fetch_array() može pristupati i preko indeksa i preko naziva polja.

Page 24: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 24

<head> <title>TEST</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>

<?php $db = mysql_connect("localhost","root","gogo123") or die ("Ne mogu se spojiti na bazu"); mysql_select_db("test",$db) or die ("Ne mogu izabrati bazu"); mysql_query ("SET NAMES utf8"); $result= mysql_query("SELECT * FROM djelatnik");

echo"<table border='1'> <tr> <th>IME</th> <th>PREZIME</th> <th>RADNO MJESTO</th> <th>PLACA</th> </tr>";

while($row= mysql_fetch_array($result)) { echo"<tr>"; echo"<td>" . $row['IME'] . "</td>"; echo"<td>" . $row['PREZIME'] . "</td>"; echo"<td>" . $row['SIFRA_RADMJ'] . "</td>"; echo"<td>" . $row['PLACA'] . "</td>"; echo"</tr>"; } echo"</table>"; mysql_close($db); ?> </body> </html>

PHP + MySQL

Page 25: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 25

PHP + MySQL

• Što s ostalim SQL upitima ?

o Naravno, moguće je pokrenuti bilo koji SQL upit:

DDL (CREATE, ALTER, ...)

DML (INSERT, UPDATE, DELETE, ...)

o Slično kao i za SELECT upite, potrebno je samo provjeriti rezultat izvršavanja funkcije mysql_query().

o U slučaju INSERT upita nema povratnih rezultata već samo informacija o uspješnoj ili neuspješnoj transakciji.

Page 26: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 26

PHP + MySQL

• HTML forma – koristi se kako bi se definirao neki skup podataka koji

korisnik unosi i šalje serverskom jeziku (PHP) na obradu:

o Action – php datoteka koja se treba izvršiti (kojoj se šalju podaci)

o Method – metoda za preuzimanje vrijednosti varijabli iz forme može biti POST ili GET.

Za prijenos podataka se koristi POST metoda (kod nje korisnik ne vidi koje se vrijednosti šalju) dok se kod GET metode vrijednosti prenose preko URL-a.

GET metoda se sasvim sigurno neće korisiti kada se unose podaci o lozinkama ili drugim osjetljivim informacijama, ali se koristi ako stranicu npr. želimo staviti u bookmark.

<form action="primjer.php" method="post/get"> ... </form>

Page 27: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 27

PHP + MySQL

<html> <body> <form action="Primjer_POST.php" method="POST"> ili <form action="Primjer_GET.php" method=“GET">

Unesite vaše ime: <input type="text" name="ime" /><br /> Unesite vašu dob: <input type="text" name="dob" /><br /> <br /> <input type="submit" value= "Posalji" /> </form> </body> </html>

<html> <body> Zdravo <?php echo $_POST["ime"]; ?>.<br /> Imate <?php echo $_POST["dob"]; ?> godina! </body> </html>

<html> <body> Zdravo <?php echo $_GET["ime"]; ?>.<br /> Imate <?php echo $_GET["dob"]; ?> godina! </body> </html>

Page 28: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 28

PHP + MySQL

• Primjer:

o Upisivanje (INSERT) novih podataka putem forme (obrasca) i spremanje u tablicu baze podataka

• Kreiranje obrasca:

<html> <head> <title>Primjer - INSERT forma</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form action="primjer_insert.php" method="post"> Šifra županije: <input type="text" name= "sifra_zupanije" /> <br> Naziv županije: <input type="text" name= "naziv_zupanije" /> <br><br> <input type="submit" value= "Pohrani" /> </form> </body> </html>

Page 29: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 29

PHP + MySQL

• Upisivanje (INSERT) podataka u bazu:

<html> <head><title>Primjer - INSERT</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php $con= mysql_connect("localhost", "root", “***"); if(!$con) { die('Ne mogu se spojiti na bazu: ' . mysql_error()); } mysql_select_db("test", $con); mysql_query ("SET NAMES utf8");

$sifra=$_POST['sifra_zupanije']; $naziv=$_POST['naziv_zupanije'];

$sql="INSERT INTO ZUPANIJA (sifra_zupanije, naziv_zupanije) VALUES ('$sifra','$naziv')";

if(!mysql_query($sql,$con)) { die(' Greška: ' . mysql_error()); } echo"Dodavanje nove županije je uspješno izvršeno!"; mysql_close($con) ?> </body> </html>

Page 30: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 30

PHP + MySQL

• Superglobalne varijable:

o $GLOBALS – asocijativno polje sa svim globalnim varijablama

o $_SERVER – neke informacije o poslužitelju i klijentu

o $_GET – GET podaci iz obrasca/linka

o $_POST – POST podaci iz obrasca

o $_FILES – polje datoteka poslanih na poslužitelja

o $_COOKIE – asocijativno polje kolačića

o $_SESSION – asocijativno polje s varijablama sjednice

o $_REQUEST – $_GET, $_POST i $_COOKIE zajedno

o $_ENV – asocijativno polje s varijablama okoline

Page 31: PROGRAMIRANJE ZA INTERNET - fpmoz.ba · PDF . 2015/2016. PROGRAMIRANJE ZA INTERNET 7 • Princip rada PHP-a Na temelju zahtjeva korisnika izvršava se PHP kod, te se kreira HTML stranica

Ak.god. 2015/2016. PROGRAMIRANJE ZA INTERNET 31

Web:

http://www.fpmoz.ba/gkraljevic

Pitanja, primjedbe, dogovor za konzultacije ...

o E-mail: [email protected]

[email protected]

Programiranje za Internet