php čitavanje podataka - · pdf file10.5.2011 1...

13
10.5.2011 1 Sveučilište Josipa Sveučilište Josipa Jurja Jurja Strossmayera u Osijeku, Strossmayera u Osijeku, Odjel za matematiku, Odjel za matematiku, Trg Ljudevita Gaja 6 Trg Ljudevita Gaja 6 31000 Osijek 31000 Osijek PHP PHP Web programiranje i primjene Web programiranje i primjene 10. vježbe Slobodan Jelić Sveučilište Josipa Sveučilište Josipa Jurja Jurja Strossmayera u Osijeku, Strossmayera u Osijeku, Odjel za matematiku, Odjel za matematiku, Trg Ljudevita Gaja 6 Trg Ljudevita Gaja 6 31000 Osijek 31000 Osijek Snimanje i učitavanje podataka Snimanje i učitavanje podataka Web programiranje i primjene Web programiranje i primjene Spremanje podataka za kasniju uporabu Otvaranje datoteka Izrada i upisivanje podataka u datoteku Zatvaranje datoteke Čitanje iz datoteke Zaključavanje datoteka Brisanje datoteka Uporaba korisnih datotečnih funkcija Priprema Priprema Iz mape Iz mape poglavlje2_snimanje_i_ poglavlje2_snimanje_i_ucitavanje ucitavanje_podataka _podataka kopirati datoteke u korijenski direktorij za objavljivanje na kopirati datoteke u korijenski direktorij za objavljivanje na serveru serveru localhost localhost idite na C:/xampp/htdocs Spremanje i čitanje podataka Spremanje i čitanje podataka Spremanje podataka za kasniju uporabu Otvaranje datoteka Izrada i upisivanje podataka u datoteku Zatvaranje datoteke Čitanje iz datoteke Zaključavanje datoteka Brisanje datoteka Uporaba korisnih datotečnih funkcija Spremanje podataka za kasniju uporabu Spremanje podataka za kasniju uporabu Spremanje podataka na 2 načina: Spremanje podataka na 2 načina: u običnu (tekstualnu) datoteku ( u običnu (tekstualnu) datoteku (eng eng. flat flat file), file), jednostavno za korištenje, ali i ograničeno jednostavno za korištenje, ali i ograničeno u bazu podataka u bazu podataka u bazu podataka, u bazu podataka, za rad s podacima većeg formata za rad s podacima većeg formata Primjer:Spremanje i promatranje Bobove narudžbe Primjer:Spremanje i promatranje Bobove narudžbe

Upload: phamhuong

Post on 01-Feb-2018

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

1

Sveučilište Josipa Sveučilište Josipa JurjaJurja Strossmayera u Osijeku,Strossmayera u Osijeku,Odjel za matematiku,Odjel za matematiku,Trg Ljudevita Gaja 6Trg Ljudevita Gaja 6

31000 Osijek31000 Osijek

PHPPHP

Web programiranje i primjeneWeb programiranje i primjene

10. vježbe

Slobodan Jelić

Sveučilište Josipa Sveučilište Josipa JurjaJurja Strossmayera u Osijeku,Strossmayera u Osijeku,Odjel za matematiku,Odjel za matematiku,Trg Ljudevita Gaja 6Trg Ljudevita Gaja 6

31000 Osijek31000 Osijek

Snimanje i učitavanje podatakaSnimanje i učitavanje podataka

Web programiranje i primjeneWeb programiranje i primjene

• Spremanje podataka za kasniju uporabu

• Otvaranje datoteka

• Izrada i upisivanje podataka u datoteku

• Zatvaranje datoteke

• Čitanje iz datoteke

• Zaključavanje datoteka

• Brisanje datoteka

• Uporaba korisnih datotečnih funkcija

PripremaPriprema

•• Iz mape Iz mape poglavlje2_snimanje_i_poglavlje2_snimanje_i_ucitavanjeucitavanje_podataka_podataka

kopirati datoteke u korijenski direktorij za objavljivanje na kopirati datoteke u korijenski direktorij za objavljivanje na serveruserveru localhostlocalhost

idite na 

C:/xampp/htdocs

Spremanje i čitanje podatakaSpremanje i čitanje podataka

• Spremanje podataka za kasniju uporabu

• Otvaranje datoteka

• Izrada i upisivanje podataka u datoteku

• Zatvaranje datoteke

• Čitanje iz datotekej

• Zaključavanje datoteka

• Brisanje datoteka

• Uporaba korisnih datotečnih funkcija

Spremanje podataka za kasniju uporabuSpremanje podataka za kasniju uporabu

Spremanje podataka na 2 načina: Spremanje podataka na 2 načina: 

•• u običnu (tekstualnu) datoteku (u običnu (tekstualnu) datoteku (engeng. . flatflat file),file),

→→ jednostavno za korištenje, ali i ograničenojednostavno za korištenje, ali i ograničeno

•• u bazu podatakau bazu podataka•• u bazu podataka,u bazu podataka,

→→ za rad s podacima većeg formataza rad s podacima većeg formata

Primjer:Spremanje i promatranje Bobove narudžbePrimjer:Spremanje i promatranje Bobove narudžbe

Page 2: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

2

Polje imena ‘tireqty’

Polje imena ‘oilqty’

Sl1. Forma narudžbe Bobovih auto dijelova

Polje imena ‘address’

Polje imena‘sparkqty’

Rad sa datotekama

Upisivanje podataka u datoteku (3 koraka):

1. Otvoriti datoteku. Ukoliko ne postoji, najprije je kreirati;

2. Upisati podatke u datoteku;

3. Zatvoriti datoteku.

Čitanje podataka iz datoteke (3 koraka):

1. Otvoriti datoteku. Ukoliko se ne može otvoriti, uočiti pogrešku i naći prikladno rješenje;

2. Čitati podatke iz datoteke;

3. Zatvoriti datoteku.

Otvaranje datotekeOtvaranje datoteke

• Koristimo funkciju fopen()

• Voditi računa na koji način želimo koristiti datoteku – režim (engl. filemode)

3 izbora prilikom otvaranja datoteke:

1. želite li datoteku za isključivo pisanje, isključivo čitanje ili oboje i čitanje i pisanje;

2. prilikom upisivanja podataka u datoteku, želite li postojeći sadržaj zamijeniti novim ili nove podatke dodati na kraj datoteke;

3. ukoliko upisujete podatke u datoteku u sustavu koji razlikuje binarne i tekstualne datoteke, trebate li specificirati ovu činjenicu.

Funkcija fopen() podržava kombinacije ovih triju mogućnosti.

Uporaba funkcije fopen()

Primjer: narudžbe klijenata se spremaju u Bobovu datoteku s narudžbama

imena orders.txt

ime datoteke koju otvaramoNačin uporabe datoteke

(eng. file mode)

Varijabla                                                   daje korijen stabla dokumenta na web serveru, ali zbog nezgrapnosti koristimo kratka imena varijabli, te na početku skripte moramo definirati 

Uporaba funkcije fopen()

$fp = fopen(‘orders.txt’, ‘ab’, true);

omogućava da se zada prefiks protokola pomoću kojeg se pristupa udaljenim datotekama (http, ftp)

resurs –pokazivač, koristi se za pisanje i čitanje iz datoteke

Page 3: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

3

Problemi s otvaranjem datoteka

• Npr.otvaranje datoteke za koju nemate ovlasti niti čitanja niti pisanja u nju.

Ukoliko se funkcija fopen() ne uspije izvršiti, vraća vrijednost FALSE,pa se korisniku može poslati odgovarajuća poruka.

Upisivanje podataka u datoteku

• Koristimo funkciju: fwrite( ) ili fputs( )

String spremljen u $outputstring upisuje u datoteku određenu s $fp. 

Treći parametar  funkcije fwrite( ), 'length' je neobavezan i predstavljap j g j p jmaksimalan broj bitova koji se mogu upisati u datoteku.Duljinu stringa možemo dobiti koristeći ugrađenu PHP funkciju strlen()

Novo u PHP5:

int file_put_contents ( string imedatoteke,string podaci[, int indikatori[, resource kontekst]])

Format datoteke

•ovisi isključivo o programeru

String koji predstavlja jednu zabilježbu u datoteci dobivamo s: 

Zatvaranje datoteke

•koristimo funkciju fclose( )

Zadatak 1.Zadatak 1.

•• U datoteku U datoteku orders.txtorders.txt koja se nalazi u poddirektoriju koja se nalazi u poddirektoriju ordersorderskorijenskog direktorija na serveru upišite podatke s narudžbe koji se korijenskog direktorija na serveru upišite podatke s narudžbe koji se nalaze u varijabli nalaze u varijabli $$outputstringoutputstring

$$outputstringoutputstring = = $date$date.”.”\\t”.t”.$$tireqtytireqty..” ” tirestires \\t”.t”.$$oilqtyoilqty..”oil”oil\\t”.t”.$$sparkqtysparkqty.” .” sparksparkplugsplugs\\tt\\$”.$”.$$totalamounttotalamount.”.”\\t”.t”. $$addressaddress.”.”\\n”;n”;plugsplugs\\tt\\$ .$ .$$totalamounttotalamount.. \\t . t . $$addressaddress.. \\n ;n ;

•• Otvorite datoteku u Otvorite datoteku u appendappendmodu kombiniranim s modu kombiniranim s binarybinary u u mapi mapi ordersorders

•• ukoliko je otvaranje neuspjelo ispišite obavijestukoliko je otvaranje neuspjelo ispišite obavijest

•• ako je uspjelo koristeći funkciju ako je uspjelo koristeći funkciju fwritefwrite() () upišite varijablu upišite varijablu $$outputstringoutputstring

•• zatvorite datotekuzatvorite datoteku

Čitanje podataka iz datoteke

•Slično upisivanju podataka u datoteku

Page 4: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

4

•Otvaramo datoteku za čitanje s 

•Petlja while koristeći funkciju feof( ) provjerava jesmo li došli do kraja datoteke

Zadatak 2.Zadatak 2.

•• U datoteci U datoteci vieworders.phpvieworders.php upišite potreban kod tako da upišite potreban kod tako da se u WEB preglednik ispiše sadržaj datoteke se u WEB preglednik ispiše sadržaj datoteke orders.txtorders.txt..

Čitanje redak po redakČitanje redak po redak

• Koristimo funkcije : fgets(), fgetss() i fgetscsv()

Funkcija fgets( ) je korisna za isključivo tekstovne datoteke

U našem primjeru:

Čitanje cijele datoteke

• Koristimo funkcije: readfile(),fpassthru() i file()

Čitanje znak po znak

• Koristimo funkciju fgetc()

Čitanje niza bitova proizvoljne duljine

• koristimo funkciju fread()

Neke korisne datotečne funkcije

•Provjera postoji li zaista određena datoteka : file_exists( ),

•Određivanje veličine datoteke: filesize( ),

•Brisanje datoteke: unlink( ),

•Upravljanje unutar datoteke: rewind( ), fseek( ) i ftell( )

Zaključavanje datoteke

• služi kako bismo izbjegnuli problem istovremenog upisivanja podataka u istu datoteku od strane različitih klijenata

• Koristimo funkciju flock()PHP kod u datoteci dodatak.txt iskoristite u prethodna dva zadatka.

Page 5: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

5

Sveučilište Josipa Sveučilište Josipa JurjaJurja Strossmayera u Osijeku,Strossmayera u Osijeku,Odjel za matematiku,Odjel za matematiku,Trg Ljudevita Gaja 6Trg Ljudevita Gaja 6

31000 Osijek31000 Osijek

Uporaba polja (Uporaba polja (ArraysArrays))

Web programiranje i primjeneWeb programiranje i primjene

• Numerički indeksirana polja

• Nenumerički indeksirana polja

• Operatori s poljima

• Višedimenzionalna polja

• Sortiranje polja

• Funkcije s poljima

POLJE(niz, eng.array)

‐je mjesto pohranjivanja skupa vrijednosti čime je omogućeno grupiranje skalara.

Numerički indeksirana polja

•U PHP‐u indeksi polja počinju od nule, ali se ta vrijednost može promijeniti

Primjeri kreiranja polja:

Uporaba elemenata polja

• Sadržaju elementa polja pristupamo preko imena polja i indeksa elementa, indeks elementa upisuje se u zagradi poslije imena polja

• Zamjenu sadržaja određenog elementa polja ostvarujemo koristeći operator ‘=’

Polja su indeksirana što omogućuje jednostavnije korištenje for petlje, npr. za ispis svih elemenata polja

• Specijalno kreirana za rad s poljima foreach petlja

Polja sa drugačijim indeksima

PHP omogućava da se elementima polja dodijele proizvoljni indeksi 

Primjer: Polje s elementima čiji su indeksi redom Tires,Oil,Spark Plugs

Koja je razlika između ove i prethodne sintakse?

Page 6: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

6

Korištenje petlji

• Indeksi elemenata polja nisu brojevi, pa je onemogućen rad s for petljom,

• Rješenje: foreach petlja, te list( ) i each( ) funkcije

Ili preko each() konstruktora

Rezultat:

Funkcija list() se može koristiti za podjelu polja na određen broj vrijednosti 

Primjer: Odvajanje dviju vrijednosti koje daje funkcija each()

Višedimenzionalna polja

• Nastaju kada element polja  sadrži neko drugo polje 

• Dvodimenzionalna polja = matrice, tablice s redcima i stupcima

Ovakvo polje dobili smo sljedećom naredbom u PHP‐u:

Svaki element dvodimenzionalnog polja ima dva indeksa‐retka i stupca

Ispis svih elemenata polja ostvarujemo naredbom:

Ili k i t ći f tlj t f tljIli koristeći for petlju unutar for petlje:

Rezultat u oba slučaja je isti:

Koji je od ova dva načina bolji i zašto?

Page 7: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

7

Sortiranje polja

• Koristimo funkciju sort( )

Primjeri:

• Polje sortirano po rastućem alfabetskom poretku

• Polje sortirano po rastućem numeričkom poretku

Funkcija sort() je osjetljiva na mala i velika slova!

• Drugi parametar funkcije sort( ) je neobavezan,

vrijednosti: SORT_REGULAR, SORT_NUMERIC ili SORT_STRING

Na primjeru polja s nenumeričkim indeksima možemo ilustrirati funkcije asort( ) i ksort( )

Funkcija asort( ) slaže sadržaj polja prema vrijednosti svakog elementaFunkcija asort( ) slaže sadržaj polja prema vrijednosti svakog elementa

Funkcija ksort( ) slaže sadržaj polja prema ključu (indeksu) svakog elementa

Za slaganje sadržaja polja u padajućem poretku koristimo funkcije:

• rsort( )

• arsort( )

• krsort( )

Koristimo ih na isti način kao i funkcije za slaganje u rastućem poretku

Slaganje višedimenzionalnih polja

Primjer dvodimenzionalnog polja:

Koristimo funkciju usort( ) i potrebno je uputiti PHP na koji način da uspoređuje elemente

Preuređivanje polja

• Funkcijom shuffle( ) mijenjamo redoslijed elemenata na slučajan način

• Funkcija array_reverse( ) vraća elemente polja u obratnom redoslijedu

Primjer: Prikaz triju slučajno odabranih slika na Bobovoj stranici koristeći PHP

Page 8: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

8

Učitavanje polja iz datoteke

•Funkcija file( ) učitava cijelu datoteku u polje, svaki red u datoteci je poseban element polja, a koristeći funkciju count( ) brojimo koliko ima elemenata u polju

koristite datoteku vieworders.php

Korisne funkcije za rad s poljima

• Upravljanje unutar polja: each( ), current( ),reset( ),end( ),next( ), pos( ) i prev( )

• Primjena bilo koje funkcije na svaki element polja: array_walk( )

• Brojanje elemenata u polju: count( ), sizeof( ) i array_count_values( )

• Pretvaranje polja u skalare: extract( )

Sveučilište Josipa Sveučilište Josipa JurjaJurja Strossmayera u Osijeku,Strossmayera u Osijeku,Odjel za matematiku,Odjel za matematiku,Trg Ljudevita Gaja 6Trg Ljudevita Gaja 6

31000 Osijek31000 Osijek

Rad sa znakovnim vrijednostima i Rad sa znakovnim vrijednostima i regularnim izrazimaregularnim izrazima

Web programiranje i primjeneWeb programiranje i primjene

1. Formatiranje znakovnih vrijednosti2. Spajanje i razdvajanje znakovnih vrijednosti3. Uspoređivanje znakovnih vrijednosti4. Pronalaženje i zamjena znakovnih podnizova pomoću funkcija za rad sa 

znakovnim vrijednostima5. Upotreba regularnih izraza

Primjer aplikacije: Primjer aplikacije: SmartSmart FormFormMailMail

•• jednostavan obrazac za prikupljanje informacija od kupcajednostavan obrazac za prikupljanje informacija od kupca

•• dio prethodnog projekta “Bobovi autodio prethodnog projekta “Bobovi auto‐‐dijelovi”dijelovi”

•• prosljeđivanje eprosljeđivanje e‐‐poruke određenom odjeljku poruke određenom odjeljku BobveBobve firme (na firme (na osnovu ključnih riječi)osnovu ključnih riječi)

izvorni kod: 

feedback.html

PHP skripta za obradu obrascaPHP skripta za obradu obrasca

<?<?phpphp

////createcreate shortshort variablevariable namesnames

$$namename=$_POST['=$_POST['namename'];'];

$$emailemail=$_POST['=$_POST['emailemail'];'];

$$feedbackfeedback=$_POST['=$_POST['feedbackfeedback'];'];

//set //set upup some some staticstatic informationinformation

$$toaddresstoaddress = "= "feedbackfeedback@@example.comexample.com";";

vrijednosti u poljima obrasca koje se dohvate pomoću niza _POST[’’]

funkcija za slanje mail‐a:

SINTAKSA:

bool mail(string to, string subject, string message,string [additional_headers [, stringadditional parameters]]);

$$subjectsubject = "= "FeedbackFeedback fromfrom web site";web site";

$$mailcontentmailcontent = "= "CustomerCustomer namename: ".$: ".$namename."."\\n".n".

""CustomerCustomer emailemail: ".$: ".$emailemail."."\\n".n".

""CustomerCustomer commentscomments::\\n".$n".$feedback.feedback.""\\n";n";

$$fromaddressfromaddress = "= "FromFrom: : webserverwebserver@@example.comexample.com";";

////invokeinvoke mail() mail() functionfunction to to sendsend mailmail

mail($mail($toaddresstoaddress, $, $subjectsubject, $, $mailcontentmailcontent, $, $fromaddressfromaddress););

?>?>

sadržaj e‐poruke –konkatenacija stringova, vrijednosti iz obrasca

additional_parameters]]);

dodatna zaglavlja:

$dodatna_zaglavlja="From: [email protected]\r\n"."Reply-To: [email protected]";

Page 9: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

9

SMTP poslužiteljSMTP poslužitelj

•• SSimpleimpleMMailail TTransfer ransfer PProtocolrotocol –– poslužitelj za slanje poslužitelj za slanje elektroničke pošteelektroničke pošte–– funkcija mail() u PHPfunkcija mail() u PHP‐‐u radit će samo ako ima instaliran SMTP u radit će samo ako ima instaliran SMTP 

poslužitelj na stroju poslužitelj na stroju localhostlocalhost..

–– koristimo koristimo MercuryMercury u sklopu XAMPP platforme u sklopu XAMPP platforme 

MercuryMercury

•• zatvoriti sve prozorezatvoriti sve prozore

bob

VježbaVježba

•• koristiti datoteke koristiti datoteke feedback.htmlfeedback.html i i processfeedback.phpprocessfeedback.php

•• U datoteci U datoteci processfeedback.phpprocessfeedback.php dodati sljedeće dodatno dodati sljedeće dodatno zaglavljezaglavlje

dodatna zaglavlja:

$dodatna_zaglavlja="From: [email protected]\r\n"."Reply-To: [email protected]";

Page 10: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

10

<?<?phpphp

////createcreate shortshort variablevariable namesnames$$namename=$_POST['=$_POST['namename'];'];$$emailemail=$_POST['=$_POST['emailemail'];'];$$feedbackfeedback=$_POST['=$_POST['feedbackfeedback'];'];

//set //set upup some some staticstatic informationinformation$$toaddresstoaddress = "= "bobautopartbobautopart@@localhostlocalhost";";

$$subjectsubject = "= "FeedbackFeedback fromfrom web site";web site";

$$mailcontentmailcontent = "= "CustomerCustomer namename: ".$: ".$namename."."\\n".n".""CustomerCustomer emailemail: ".$: ".$emailemail."."\\n".n".

""CustomerCustomer commentscomments::\\n".$n".$feedback.feedback.""\\n";n";

$$fromaddressfromaddress = "= "FromFrom: : webserverwebserver@@example.comexample.com";";

//dodatna zaglavlja//dodatna zaglavlja

//$dodatna_zaglavlja="//$dodatna_zaglavlja="FromFrom: : webserverwebserver@@example.comexample.com\\rr\\n"n"//."//."ReplyReply--To: bob@To: [email protected]";";

////invokeinvoke mail() mail() functionfunction to to sendsend mailmailmail($mail($toaddresstoaddress, $, $subjectsubject, $, $mailcontentmailcontent, $, $fromaddressfromaddress););

?>?>

Formatiranje znakovnih vrijednostiFormatiranje znakovnih vrijednosti

•• znakovne vrijednosti koje šalju korisnici prije upotrebe znakovne vrijednosti koje šalju korisnici prije upotrebe najčešće treba pročistitinajčešće treba pročistiti

•• imamo tri funkcije:imamo tri funkcije:–– trimtrim() () –– briše bjeline s početka i kraja znakovnog podatkabriše bjeline s početka i kraja znakovnog podatka

–– ltrimltrim() () –– briše bjeline samo s početka znakovnog podatkabriše bjeline samo s početka znakovnog podatka

–– rtrimrtrim() () –– briše bjeline samo s kraja znakovnog podatkabriše bjeline samo s kraja znakovnog podatka

•• Zadatak 1: Koristeći funkciju Zadatak 1: Koristeći funkciju trimtrim() () očistite znakovne očistite znakovne podatke u varijablama podatke u varijablama $$namename, , $$emailemail i i $$feedbackfeedback..

Rješenje:

$name = trim($_POST['name']);$email = trim($_POST['email']);$feedback = trim($_POST['feedback');

Formatiranje znakovnih vrijednosti u oblik pogodan za Formatiranje znakovnih vrijednosti u oblik pogodan za ispisivanjeispisivanje

•• HTML formatiranje: funkcija HTML formatiranje: funkcija nl2br()nl2br()–– prihvata znakovnu vrijednost kao ulazni parametar i sve znakove za prihvata znakovnu vrijednost kao ulazni parametar i sve znakove za 

novi redak zamjenjuje odgovarajućim XHTML oznakama novi redak zamjenjuje odgovarajućim XHTML oznakama <br/><br/>

•• Zadatak 2: Nakon unosa podataka u obrazac ispišite sadržaj eZadatak 2: Nakon unosa podataka u obrazac ispišite sadržaj e•• Zadatak 2: Nakon unosa podataka u obrazac ispišite sadržaj eZadatak 2: Nakon unosa podataka u obrazac ispišite sadržaj e‐‐mail poruke (mail poruke (tjtj. vrijednost varijable . vrijednost varijable $$mailcontentmailcontent) u HTML ) u HTML dokument koji se učita nakon izvršavanja skripte. Učinite to dokument koji se učita nakon izvršavanja skripte. Učinite to korištenjem i bez korištenja funkcije korištenjem i bez korištenja funkcije nl2br()nl2br()..

Formatiranje znakovnih vrijednosti u obliku pogodnom za Formatiranje znakovnih vrijednosti u obliku pogodnom za štampanještampanje

•• koristimo dvije naredbe:koristimo dvije naredbe:–– echoecho –– prikazivanje znakovnih vrijednosti u WEB preglednikuprikazivanje znakovnih vrijednosti u WEB pregledniku

–– printprint –– isto što i isto što i echoecho, ali vraća TRUE ili FALSE u ovisnosti o tome je li , ali vraća TRUE ili FALSE u ovisnosti o tome je li operacija uspjela ili neoperacija uspjela ili ne•• printfprintf() () –– prosljeđuje formatiranu znakovnu vrijednost WEB preglednikuprosljeđuje formatiranu znakovnu vrijednost WEB pregledniku

•• sprintfsprintf() () –– formatira znakovnu vrijednost i vraća je u obliku formatira znakovnu vrijednost i vraća je u obliku stringastringa

–– sintaksa:sintaksa:•• stringstring sprintfsprintf ((stringstring format [, format [, mixedmixed args..args...]).])•• voidvoid printfprintf ((stringstring format [, format [, mixedmixed args..args...]).])

–– Primjeri:Primjeri:•• echo “Total amount of order is echo “Total amount of order is $total$total.”;.”;•• printfprintf (“Total amount of order is (“Total amount of order is %s%s.”, .”, $total$total););•• printfprintf (“Total amount of order is (“Total amount of order is %.2f%.2f”, ”, $total$total););•• printfprintf (“Total amount of order is (“Total amount of order is %.2f%.2f (with shipping (with shipping %.2f%.2f) “,) “, $total$total, , $$totaltotal__shippingshipping););

•• opća specifikacija konverzije:opća specifikacija konverzije:–– %[‘znak_za_popunu][%[‘znak_za_popunu][--][širina][][širina][.preciznost.preciznost]tip]tip

Page 11: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

11

•• numeriranje argumenatanumeriranje argumenata–– printfprintf (“Total amount of order is (“Total amount of order is %%22\\$.2f$.2f (with (with shipping shipping %%11\\$.2f$.2f) “,) “, $total_$total_shippingshipping, $, $totaltotal););

–– upotrebljava se prilikom ponavljanja argumenataupotrebljava se prilikom ponavljanja argumenata

–– upotrebljavaju se ponekad i sljedeće verzije funkcije upotrebljavaju se ponekad i sljedeće verzije funkcije prinprintt::•• vprintfvprintf() () –– drugi (i posljednji) argument je niz od vrijednosti koje se drugi (i posljednji) argument je niz od vrijednosti koje se ispisujuispisuju

•• vsprintfvsprintf() () –– isto kao i isto kao i vprintfvprintf() () ali se rezultat ispisuje u ali se rezultat ispisuje u stringstring a a 

ne u WEB preglednikne u WEB preglednikne u WEB preglednikne u WEB preglednik

Pretvaranje malih slova u velika i obrnutoPretvaranje malih slova u velika i obrnuto

Formatiranje znakovnih vrijednosti u oblik pogodan za unos Formatiranje znakovnih vrijednosti u oblik pogodan za unos u bazuu bazu

•• mogu postojati problemi prilikom unošenja sljedećih znakova:mogu postojati problemi prilikom unošenja sljedećih znakova:

–– navodnici (obični i navodnici (obični i polunavodnicipolunavodnici))

–– obrnuta kosa crta (obrnuta kosa crta (\\))

–– NULLNULL

•• MySQLMySQL ih može shvatiti kao upravljačke vrijednostiih može shvatiti kao upravljačke vrijednosti–– ispred tih znakova treba dodati kosu crtuispred tih znakova treba dodati kosu crtu

–– \\””, , \\\\, , \\\\\\\\

•• addslashesaddslashes()()–– $$feedbackfeedback = = addslashesaddslashes((trimtrim($_POST['($_POST['feedbackfeedback']));']));

•• stripslashesstripslashes()()–– uklanja dodatne kose crte. Koristi se ako je aktivirana direktiva uklanja dodatne kose crte. Koristi se ako je aktivirana direktiva magicmagic__quotesquotes__gpcgpc

Spajanje i razdvajanje znakovnih vrijednostiSpajanje i razdvajanje znakovnih vrijednosti

•• explodeexplode()()–– sintaksa: sintaksa: arrayarray explodeexplode((stringstring graničnik, graničnik, stringstring tekst tekst [, int broj]);[, int broj]);

–– Primjer:Primjer:•• $$emailemail__arrayarray = = explodeexplode(‘@’, $(‘@’, $emailemail););

–– varijabla varijabla $$emailemail__arrayarray je niz dijelova rastavljenog teksta graničnikom je niz dijelova rastavljenog teksta graničnikom @@ (u ovom slučaju korisničko ime i domena)(u ovom slučaju korisničko ime i domena)

•• Zadatak 3: Ako je ime domene u eZadatak 3: Ako je ime domene u e‐‐mail adresi mail adresi jjbigcustomer.combigcustomer.com ee‐‐mail poruku proslijedite korisniku mail poruku proslijedite korisniku bob@[email protected], inače na adresu , inače na adresu feedbackfeedback@@example.comexample.com. Ime domene mora biti ispisano . Ime domene mora biti ispisano malim slovima!malim slovima!

•• implodeimplode()(), , joinjoin()()–– imaju istu sintaksu kao imaju istu sintaksu kao i i explodeexplode()(), ali suprotan učinak, ali suprotan učinak

–– Primjer:Primjer:•• $new_$new_emailemail = = implodeimplode(‘@’, $(‘@’, $emailemail__arrayarray););

Funkcija Funkcija strtokstrtok()()

•• omogućava obradu niza znakovnih podataka riječ po riječomogućava obradu niza znakovnih podataka riječ po riječ

•• sintaksa:sintaksa:–– stringstring strtokstrtok((stringstring inputinput, , stringstring separator);separator);

–– Primjer:Primjer:

$$tokentoken = = strtokstrtok($($feedbackfeedback, ‘“ “);, ‘“ “);

echoecho $$tokentoken.”<br />”;.”<br />”;

whilewhile ($($tokentoken != “”) {!= “”) {whilewhile ($($tokentoken !=  ) {!=  ) {

$$tokentoken = = strtokstrtok(“ “);(“ “);

echoecho $$tokentoken.”<br />”;.”<br />”;

}}

Funkcija Funkcija substrsubstr()()

•• izdvajanje izdvajanje podnizapodniza znakovnih vrijednosti između zadanog i znakovnih vrijednosti između zadanog i krajnjeg položajakrajnjeg položaja

•• Sintaksa:Sintaksa:

–– stringstring substrsubstr((stringstring stringstring, int start[, int , int start[, int lengthlength] );] );

–– Primjeri:Primjeri:

•• $test = ‘Your customer service is excellent’$test = ‘Your customer service is excellent’

•• b tb t ($t t 1)($t t 1) t i it i i•• substrsubstr($test, 1); ($test, 1); -- our customer service is our customer service is excellentexcellent

•• substrsubstr($test, ($test, --9); 9); -- excellentexcellent

•• substrsubstr($test, 0, 4); ($test, 0, 4); -- YourYour

•• echo echo substrsubstr($test, 5, ($test, 5, --13);13); ‐‐ ispisuje: ispisuje: customercustomer serviceservice

Page 12: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

12

Uspoređivanje znakovnih vrijednostiUspoređivanje znakovnih vrijednosti

•• == potpuna podudarnost== potpuna podudarnost

•• naprednije uspoređivanje:naprednije uspoređivanje:–– djelomična podudarnostdjelomična podudarnost

–– ostaloostalo

•• strcmpstrcmp() () –– Sintaksa:Sintaksa:

–– int int strcmpstrcmp((stringstring str1, str1, stringstring str2);str2);–– ako su ako su str1str1 i i str2str2 jednaki vraća 0jednaki vraća 0

–– ako je po abecedi ako je po abecedi str1str1 iza (veći od)iza (veći od) str2str2 vraća broj vraća broj većiveći od 0od 0

–– ako je po abecedi ako je po abecedi str1str1 ispred (manji od) ispred (manji od) str2str2 vraća broj vraća broj manjimanji od 0od 0

–– pravi razliku izmeću velikih i malih slovapravi razliku izmeću velikih i malih slova

•• strnatcmpstrnatcmp()()–– ista sintaksa kao i ista sintaksa kao i strcmpstrcmp()()–– uspoređuje nizove prema prirodnom poretkuuspoređuje nizove prema prirodnom poretku

–– više o prirodnom poretku na više o prirodnom poretku na http://www.naturalordersort.org/http://www.naturalordersort.org/

•• postoje verzije postoje verzije strcasecmpstrcasecmp() () i i strnatcasecmpstrnatcasecmp() () koje NE prave koje NE prave razliku između velikih i malih slovarazliku između velikih i malih slova

Dužina znakovne vrijednosti: funkcija Dužina znakovne vrijednosti: funkcija strlenstrlen()()

•• SintaksaSintaksa–– int int strlenstrlen((stringstring str1);str1);

–– Primjer:Primjer:

ifif ((strlenstrlen($($emailemail) < 6){) < 6){

echo ‘That email address is not valid’;echo ‘That email address is not valid’;

exit; // force execution of PHP scriptexit; // force execution of PHP script; // p; // p

}}

–– provjera ispravnosti eprovjera ispravnosti e‐‐mail adresemail adrese

Funkcija za utvrđivanje podudarnosti i za zamjenjivanje Funkcija za utvrđivanje podudarnosti i za zamjenjivanje znakovnih znakovnih podnizovapodnizova

•• strstrstrstr()()–– Sintaksa:Sintaksa:

•• stringstring strstrstrstr((stringstring tekst, tekst, stringstring uzorak);uzorak);

•• ako se ako se uzorakuzorak pojavljuje u nizu znakovnih vrijednosti pojavljuje u nizu znakovnih vrijednosti teksttekst onda onda funkcija vraća dio vrijednosti parametra funkcija vraća dio vrijednosti parametra teksttekst od prvog pojavljivanja od prvog pojavljivanja parametra parametra uzorakuzorak pa nadaljepa nadalje

•• inače, vraća inače, vraća FALSEFALSE

•• strchrstrchr() () –– isto kao i isto kao i strstrstrstr() () (razlika postoji u C(razlika postoji u C‐‐u)u)

•• stristrstristr() () –– isto kao i isto kao i strstrstrstr() () ali pravi razliku između ali pravi razliku između velikih i malih slovavelikih i malih slova

•• strrchrstrrchr() () –– vraća dio izvorne vrijednosti od posljednjeg vraća dio izvorne vrijednosti od posljednjeg pojavljivanja uzorka pa nadaljepojavljivanja uzorka pa nadalje

Utvrđivanje položaja znakovnog Utvrđivanje položaja znakovnog podnizapodniza: funkcije : funkcije strposstrpos() i () i strrposstrrpos()()

•• djeluje isto kao i djeluje isto kao i strstrstrstr() () ali vraća ali vraća pozicijupoziciju parametra parametra uzorakuzoraku parametru u parametru teksttekst

•• Sintaksa:Sintaksa:–– int int strposstrpos((stringstring tekst, tekst, stringstring uzorak, int uzorak, int [pomak] );[pomak] );

–– Primjeri:Primjeri:$test = "$test = "HelloHello world";world";echoecho strposstrpos($test, "o");($test, "o");pp ($ , );($ , );

echoecho strposstrpos($test, ‘o’, 5);($test, ‘o’, 5);

$$resultresult = = strposstrpos($test, “H”);($test, “H”);ifif ($($resultresult ====== falsefalse) {) {echoecho ““NotNot foundfound”;”;} } elseelse {{echo “Found at position ".$result;echo “Found at position ".$result;}}

zašto?

Zamjenjivanje dijelova izvornog znakovnog podatka: funkcije Zamjenjivanje dijelova izvornog znakovnog podatka: funkcije str_str_replacereplace()() i i substrsubstr__replacereplace()()

•• str_str_replacereplace()()•• Sintaksa:Sintaksa:

–– mixed mixed str_replacestr_replace(mixed (mixed uzorakuzorak, mixed , mixed zamjenazamjenamixed mixed teksttekst[, [, intint &&koliko_putakoliko_puta]));]));

–– rezultat funkcije je nova verzija parametrarezultat funkcije je nova verzija parametra tekst tekst u kojoj je svako u kojoj je svako pojavljivanje parametra pojavljivanje parametra uzorakuzorak zamijenjeno parametromzamijenjeno parametrom zamjenazamjena

–– Primjeri:Primjeri:$$ $$ @@•• $$feedbackfeedback = str_= str_replacereplace($($offcoloroffcolor, ‘%!@*’, , ‘%!@*’, $$feedbackfeedback););

•• substrsubstr__replacereplace()()•• Sintaksa:Sintaksa:

–– stringstring substrsubstr__replacereplace((stringstring tekst, tekst, stringstringzamjena, int zamjena, int pocetakpocetak, , intint [duljina] );[duljina] );

–– dio parametradio parametra tekst tekst zamjenjuje se parametrom zamjenjuje se parametrom zamjenazamjena–– dio parametra dio parametra teksttekst određen je parametrima određen je parametrima pocetakpocetak i i duljinaduljina

Regularni izraziRegularni izrazi

•• postoje dva stila:postoje dva stila:

–– POSIX POSIX –– podrazumijevani stilpodrazumijevani stil

–– PerlPerl

•• osnove:osnove:

–– oblik u kome opisujemo uzorak teksta koji tražimooblik u kome opisujemo uzorak teksta koji tražimo

–– sličniji funkciji sličniji funkciji strstrstrstr()()

–– pomoću specijalnih znakova mogu se zadati određeni uvjeti koje mora pomoću specijalnih znakova mogu se zadati određeni uvjeti koje mora ispunjavati znakovni nizispunjavati znakovni niz

•• znak . znak . –– predstavlja bilo koji predstavlja bilo koji srugisrugi znakznak

–– primjer:primjer:

•• .at.at

•• ‘‘catcat’, ‘sat’, ‘mat’, ‘#at’’, ‘sat’, ‘mat’, ‘#at’

•• [a[a‐‐z]at z]at –– ograničenje na skup slova od a do zograničenje na skup slova od a do z

Page 13: PHP čitavanje podataka - · PDF file10.5.2011 1 SveučilišteJosipaJurjaJurjaStrossmayeraStrossmayerauOsijeku, Odjelzamatematiku, TrgLjudevitaGaja6 31000 Osijek PHP Web programiranje

10.5.2011

13

•• [[aeiouaeiou] ] –– samoglasnicisamoglasnici•• [a[a--zAzA--Z] Z] –– velika i mala slovavelika i mala slova•• [^a[^a--z] z] –– sve osim malih slova od sve osim malih slova od aa do do zz (negacija, komplement)(negacija, komplement)•• definiran opseg znakovadefiniran opseg znakova•• klaseklase

•• ponavljanje: ponavljanje: +,*,?+,*,? (značenje kao i u Java (značenje kao i u Java ScriptuScriptu))–– primjer: primjer: [[:[[:alnumalnum:]]+:]]+

•• podizrazipodizrazi: : (vrlo)* veliko(vrlo)* veliko–– veliko, veliko, velovelo velikoveliko, vrlo , vrlo vrlovrlo velikoveliko

•• nabrojani nabrojani podizrazipodizrazi–– (vrlo ){1,3}(vrlo ){1,3}–– ‘vrlo’‘vrlo’,, ‘‘vrlovrlo vrlo ‘vrlo ‘,, ‘vrlo vrlo ‘vrlo vrlo vrlovrlo ‘‘

•• vezivanje za početak ili kraj znakovnog podatkavezivanje za početak ili kraj znakovnog podatka–– ^̂ ‐‐ traženi uzorak se mora nalaziti na početku znakovnog podatkatraženi uzorak se mora nalaziti na početku znakovnog podatka

–– $$ ‐‐ traženi uzorak se mora nalaziti na kraju znakovnog podatkatraženi uzorak se mora nalaziti na kraju znakovnog podatka

–– primjer: primjer: ^[a^[a--z]$z]$

•• GrananjeGrananje–– ((comcom)|(edu)|(net))|(edu)|(net)

•• posebni znakovi: stavlja se kosa crta ispred: posebni znakovi: stavlja se kosa crta ispred: \\., ., \\{, {, \\$, $, \\\\

•• regularni izrazi u PHPregularni izrazi u PHP‐‐u se pišu između u se pišu između uvijekuvijek polunavodnikapolunavodnika

•• \\ ‐‐ početak izlazne sekvencepočetak izlazne sekvence

•• posebni znakoviposebni znakovi

Uporaba regularnih izraza u aplikaciji Uporaba regularnih izraza u aplikaciji SmartSmart FormFormMailMail

•• prepoznavanje određenih riječiprepoznavanje određenih riječi–– shopshop||customercustomer service|service|retailretail

•• ispravnost eispravnost e‐‐mail adresemail adrese–– ^[a^[a--zAzA--Z0Z0--9_9_\\--.]+@[a.]+@[a--zAzA--Z0Z0--99\\--]+]+\\.[a.[a--zAzA--Z0Z0--99\\--.]+$.]+$

•• Pronalaženje znakovnih Pronalaženje znakovnih podnizovapodnizova pomoću regularnih izrazapomoću regularnih izraza–– funkcije funkcije eregereg()() i i eregieregi()()

–– sintaksa:sintaksa:

•• intint eregereg(string pattern, string search, array (string pattern, string search, array [matches]);[matches]);

•• funkcije funkcije eregieregi() () ne pravi razliku između velikih i malih slovane pravi razliku između velikih i malih slova

Zadatak 4.Zadatak 4.

•• u datoteku u datoteku processorder.phpprocessorder.php dodajte provjeru edodajte provjeru e‐‐mail mail adrese pomoću regularnog izrazaadrese pomoću regularnog izraza