Está en la página 1de 33

Programiranje za Internet

PHP + MySQL

Struni studij raunarstva epe

MySQL osnove administracije


1. 2. 3. 4. 5. MySQL klijent i PhpMyAdmin Izrada baze podataka Rad sa korisnicima - kreiranje Izrada tablica Izrada indeksa

Struni studij raunarstva epe

1. MySQL klijent
u MySQL klijentu moemo koristiti ugraene naredbe MySQL servera za preglede i opise sadraja, te SQL naredbe za kreiranje i manipulaciju podacima Spor proces, svaka greka znai ponovni upit svih naredbi Ponekad jedini mogui pristup bazi Najbolji i najbri nain izrade i vraanja sigurnosnih kopija

Struni studij raunarstva epe

PHPMYADMIN

Struni studij raunarstva epe

Vjeba
Logirajte se na localhost (http://localhost/phpmyadmin ) Otvorite dio SQL Unesite i pokrenite sljedee upite.
show databases; use fsr; show tables; describe djelatnik; select * from djelatnik;
Struni studij raunarstva epe

PHP i baze podataka


PHP kao i npr. C jezik podrava veliki broj naredbi za rad i manipulaciju datotekama, ali u sklopu ovoga predmeta, u uvodnom dijelu PHP-a neemo ih obraivati. Za vie informacija pogledajte [1]. PHP podrava rad sa velikim brojem baza podataka, najbolje (i najdue) radi sa bazama podataka iz Opensource okruenja (MySQL i PostgreSQL), ali isto tako PHP radi i sa ostalim, komercijalnim, bazama podataka (npr. Oracle). Povezivanje PHP programa sa nekom bazom podataka mogue je putem ugraenih funkcija, koje su karakteristine u svome imenu za svaku od pojedinih baza.

Struni studij raunarstva epe

Spajanja na bazu podataka


Pristup pojedinoj bazi podataka razlikuje se od verzije PHP-a, dananje aktualne verzije u poptunosti podravaju rad sa bazama. Opi nain je linearan pristup u sljedeim koracima:
Spajanje na DBMS Odabir konkretne baze Slanje i izvravanje SQL upita nad bazom Prekid veze s bazom

Primjer dostupnih funkcija za rad sa MySQL bazom podataka:


Struni studij raunarstva epe

PHP funkcije za MySQL


mysql_affected_rows mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_list_fields mysql_list_dbs mysql_list_tables mysql_select_db mysql_tablename mysql_query mysql_result mysql_fetch_array mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_field_flags mysql_field_len mysql_free_result mysql_insert_id mysql_pconnect mysql_num_fields mysql_num_rows

Struni studij raunarstva epe

MySQL osnovni SQL izrazi


1. 2. 3. 4. INSERT UPDATE DELETE SELECT (najvaniji, najkoriteniji, ali i najsloeniji izraz)

Struni studij raunarstva epe

1. INSERT unos podataka


INSERT [INTO] table [(column1, column2, column3, ...)] VALUES (value1, value2, value3, ...), (value4, value5, value6, ...); Primjer: insert into zupanija(sifra_zupanije, naziv_zupanije) values ('ZDK', 'Zeniko dobojski kanton');
Struni studij raunarstva epe

2. UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] update customers set address = '250 Olsens Road where customerid = 4;

Struni studij raunarstva epe

3. DELETE
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp_column LIMIT 1;

Struni studij raunarstva epe

4. SELECT
SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name' | INTO @var_name [, @var_name]] [FOR UPDATE | LOCK IN SHARE MODE]]
http://dev.mysql.com/doc/refman/4.1/en/select.html

Struni studij raunarstva epe

4. SELECT PRIMJERI
SELECT * FROM books;
$row = $r->fetch_array() // echo $row[0]

SELECT id,name FROM books;


$row = $r->fetch_assoc() // echo $row[id]

SELECT id,name,price FROM books ORDER BY price DESC;

Struni studij raunarstva epe

4. SELECT PRIMJERI
SELECT AVG(price) FROM books; SELECT COUNT(*) AS broj_knjiga FROM books;
// echo $row[broj_knjiga]

SELECT CONCAT(f_name,, ,l_name) AS ime_prez FROM people;

Struni studij raunarstva epe

4. SELECT - SPAJANJA
SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name = t2.name;

SELECT college, region AS r, seed AS s FROM tournament ORDER BY r, s;

Struni studij raunarstva epe

Primjer baze ER model

Struni studij raunarstva epe

Primjer itanja iz MySQL baze


<html><body> <? $db = mysql_connect("localhost",uname",upass"); mysql_select_db("imebaze",$db) or die ("Ne mogu se spojit na bazu"); $sql="SELECT * FROM DJELATNIK"; $result=mysql_query($sql) or die(Ner mogu izvriti upit"); while($redak=mysql_fetch_assoc($result)) echo $redak[IME]. - .$redak[PREZIME]; ?> </body> </html>
Struni studij raunarstva epe

Primjer tablice DJELATNIK

Struni studij raunarstva epe

Primjer itanja iz MySQL baze preko mysql_fetch_row


<html><body> <?php $db = mysql_connect("localhost","fsr","fsr") or die ("Ne mogu se spojit na bazu"); mysql_select_db("fsr",$db) or die ("Ne mogu odabrati bazu"); $sql="SELECT * FROM DJELATNIK"; $result=mysql_query($sql) or die("Ne mogu izvriti upit -> ".mysql_error()); while($redak=mysql_fetch_row($result)){ echo $redak[1]; echo $redak[2]; echo "<br>"; } ?> </body> </html>
Struni studij raunarstva epe

Primjer itanja iz MySQL baze preko mysql_fetch_assoc


<html><body> <?php $db = mysql_connect("localhost","fsr","fsr) or die ("Ne mogu se spojit na bazu"); mysql_select_db("fsr",$db) or die ("Ne mogu izabrati bazu"); $sql="SELECT * FROM DJELATNIK"; $result=mysql_query($sql) or die("Ne mogu izvriti upit -> ".mysql_error()); while($redak=mysql_fetch_assoc($result)){ echo $redak['IME']." - ".$redak['PREZIME']; echo "<br>"; }

?> </body> </html>

Struni studij raunarstva epe

mysql_fetch_array() funkcija
Funkcija mysql_fetch_array() vraa jedan slog iz tablice kao niz, i to ona polja (stupce) koji su izabrani naredbom SELECT Svaki sljedei poziv te funkcije vraa sljedei slog iz tablice (pokaziva se pomie na poetak sljedeeg reda u tablici) Ako se ele dohvatiti svi slogovi u tablici, koristi se petlja while i u uvjetu poziva funkcija mysql_fetch_array. Ona vraa vrijednost u PHP varijablu (odnosno niz) $row. Dakle, sve dok funkcija vraa vrijednost u varijablu $row, izvrit e se naredbe unutar while petlje. Za ispis vrijednosti iz svakog retka tablice, s pomou echo naredbe ispisuju se lanovi niza $row, npr. $row[IME'] , $row[PREZIME]). Takoer se moe ispisati i $row[TELEFON].

Struni studij raunarstva epe

Primjer itanja iz baze u HTML tablicu


Ukoliko podatke iz baze elimo prikazati u html tablici, potrebno je unutar php skripte, u naredbama echo, upisati html tagove za tablicu. Npr. nakon povezivanja s tablicom, upisati ove naredbe:
<?php $db = mysql_connect("localhost","fsr","fsr) or die ("Ne mogu se spojit na bazu"); mysql_select_db("fsr",$db) or die ("Ne mogu izabrati bazu"); $result = mysql_query("SELECT * FROM osoba"); echo "<table border='1'> <tr> <th>Ime</th> <th>Prezime</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['IME'] . "</td>"; echo "<td>" . $row['PREZIME'] . "</td>"; echo "</tr>"; } echo "</table>"; mysql_close($con); ?>

Struni studij raunarstva epe

Insert podataka u bazu


Umetanje novih slogova u tablicu baze podataka vri se pomou SQL naredbe: INSERT INTO . Sintaksa: INSERT INTO table_name VALUES (value1, value2,....) Mogue je navesti i nazive stupaca u koje elimo upisati podatke: INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....) Da bi se ove naredbe izvrile, trebaju se upisati u mysql_query() funkciju. Funkcija mysql_query() alje upit ili naredbu nekoj konekciji prema bazi.

Struni studij raunarstva epe

Umetanje podataka iz forme u bazu


Ako bismo eljeli da se podaci o imenu, prezimenu i starosti osobe unose putem forme (obrasca) i spremaju u tablicu baze, koriste se sljedee naredbe: Primjer: Kreiranje obrasca: <html> <body> <form action="insert.php" method="post"> Ime: <input type="text" name= "ime" /> <br /> Prezime: <input type="text" name= "prezime" /> <br /> Starost: <input type="text" name= "starost" /> <br /> <input type="submit" value= "Pohrani" /> </form> </body> </html>

Struni studij raunarstva epe

Pohranjivanje podataka sadraj datoteke "insert.php:


<?php $con = mysql_connect("localhost", "fsr", "fsr"); if (!$con) { die(' Ne mogu se spojiti na bazu: ' . mysql_error()); } mysql_select_db("fsr", $con); $sql="INSERT INTO osoba (IME, PREZIME, STAROST) VALUES ('$_POST[ime]','$_POST[prezime]','$_POST[starost]')"; if (!mysql_query($sql,$con)) { die(' Greka: ' . mysql_error()); } echo "1 slog je dodan u tablicu osoba"; mysql_close($con) ?>
Struni studij raunarstva epe

PHP i MySQL rad s datumima i vremenom 1


MySQL podrava mnogo tipova podataka za rad s vremenom i datumom: To su:
DATE datum, format YYYY-MM-DD TIME vrijeme, format HH:MM:SS DATETIME datum i vrijeme, format YYYYMM-DD HH:MM:SS TIMESTAMP format YYYY-MM-DD HH:MM:SS YEAR format format YYYY
Struni studij raunarstva epe

PHP i MySQL rad s datumima i vremenom 2


Isto tako ima mnogo ugraenih funkcija, npr. trenutno vrijeme moemo dobiti pomou ugraene funkcije NOW():
SELECT NOW(); -> '2011-11-19 14:50:26'

Znai php insert u neku tablicu s nekim od date/time kolumnom izgleda ovako:
$sql="INSERT INTO log (DATUM, PORUKA) VALUES (NOW(),'$PORUKA')";
Struni studij raunarstva epe

Ostale napomene
Ukoliko imamo neku od kolona definiranu kao auto_increment, prilikom inserta moemo koristiti ili NULL vrijednost, ili Uope ne insertirati podatak u tu kolonu

Struni studij raunarstva epe

Znai insert into opcina() values (NULL, 'Zenica', 'ZDK') ILI insert into opcina (NAZIV_OPCINE,SIFRA_ZUPANIJE) values ('Zenica', 'ZDK')

Struni studij raunarstva epe

Zadatak na vjebama
Kreirajte PHP kod za insert podataka u tablicu OPCINA - nadograditi aplikaciju DJELATNIK Nadograditi program opcina.php s formom za dodavanje novih opina (s podacima NAZIV_OPCINE i SIFRA_ZUPANIJE) Kreirati i PHP kod (nova datoteka naziva nova_opcina.php) unutar koje ete izvriti insert tih podataka u tablicu OPCINA
Struni studij raunarstva epe

Dio koda za itanje iz druge tablice i punjenje forme


<form action="nova_opcina.php" method="GET"> <h3>Dodavanje novih opcina</h3> Naziv opcine: <input type="text" name="NAZIV_OPCINE"><br> Sifra zupanije (3 slova): <?php // povezivanje $conn = mysql_connect('fsr', 'fsr', 'fsr') or die ('Error connecting to mysql'); mysql_select_db('fsr') or die ('Error selecting to mysql'); $sql2="SELECT * FROM zupanija ORDER BY naziv_zupanije"; $result2=mysql_query($sql2) or die (mysql_error()); echo "<select name=\"SIFRA_ZUPANIJE\">"; while($ispisrez2 = mysql_fetch_array($result2)){ echo "<option value=\"".$ispisrez2['SIFRA_ZUPANIJE']."\">".$ispisrez2['NAZIV_ZUPANIJE']."</option>; } // zatvaranje while petlje echo "</select>"; ?> <br> <input type="SUBMIT" value="POSALJI"><br> </form>
Struni studij raunarstva epe

Primjeri
Pokrenite i analizirajte PHP-MySQL primjere na adresi:
http://neretva.fsr.ba

Primjer itanja iz MySQL baze :


preko mysql_fetch_assoc - primjer_assoc.php preko mysql_fetch_num - primjer_num.php Primjer aplikacije djelatnik

Struni studij raunarstva epe

También podría gustarte