Kurs WWW – wykład 8

Post on 17-Jan-2016

52 views 2 download

description

Kurs WWW – wykład 8. Paweł Rajba pawel@ii.uni.wroc.pl http://www.ii.uni.wroc.pl/~pawel/. PHP – obsługa plików. int fopen (string nazwa, string tryb) otwiera plik lub URL nie są obsługiwane przekierowania (należy URL kończyć slaszem) tryby - PowerPoint PPT Presentation

Transcript of Kurs WWW – wykład 8

Kurs WWW – wykład 8

Paweł Rajba

pawel@ii.uni.wroc.pl

http://www.ii.uni.wroc.pl/~pawel/

PHP – obsługa plików

int fopen(string nazwa, string tryb) otwiera plik lub URL nie są obsługiwane przekierowania (należy

URL kończyć slaszem) tryby

r – otwiera plik tylko do odczytu i ustawia wskaźnik na początku pliku

r+ – otwiera plik do odczytu i zapisu oraz ustawia wskaźnik na początku pliku

PHP – obsługa plików

tryby c.d. w – otwiera plik tylko do zapisu i ustawia wskaźnik

na początku pliku; zawartość pliku jest usuwana lub jeśli plik nie istnieje to jest tworzony

w+ – otwiera plik do odczytu i zapisu oraz ustawia wskaźnik na początku pliku; zawartość pliku jest usuwana lub jeśli plik nie istnieje to jest tworzony

a – otwiera plik do zapisu; ustawia wskaźnik na końcu pliku; jeśli plik nie istnieje to jest tworzony

a+ – otwiera plik do odczytu i zapisu; ustawia wskaźnik na końcu pliku; jeśli plik nie istnieje to jest tworzony

PHP – obsługa plików

fopen – przykłady:

$fp = fopen("/home/pawel/plik.txt", "r");

$fp = fopen("/home/pawel/img.jpg", "rb");

$fp = fopen("http://www.php.net/", "r");

$fp = fopen("ftp://jjs:tajne@wp.pl/", "w");

$fp = fopen("c:\\dane\\plik.txt", "r");

PHP – obsługa plików

string fgetc(int fp) pobiera znak z wskaźnika pliku jeśli jest koniec pliku, to zwraca FALSE

string fgets(int fp [, int długość]) pobiera linię z wskaźnika pliku możemy określić długość domyślna długość wiersza, to 1024 znaki jeśli jest koniec pliku, to zwraca FALSE

PHP – obsługa plików

string fgetss(int fp, int długość

[, string dozwolone_tagi]) pobiera linię ze wskaźnika pliku i usuwa tagi

HTML i PHP $linia = fgetss($fp,4096,"<i><b>");

string fread(int fp, int długość) czyta z pliku binarnie do długość bajtów czytanie się kończy po odczytaniu długość

bajtów lub po osiągnięciu końca pliku

PHP – obsługa plików

mixed fscanf(int fp, string format) przetwarza dane z pliku wg formatu

$fp = fopen("punkty.txt","r");

while ($row=fscanf($fp,"%s\t%d\n")) {

// zrób coś z wartościami

}

fclose($fp); plik.txt:

dziki 200

łysy 60

warzywo 120

PHP – obsługa plików

array fgetcsv(int fp, int długość [, string delimiter]) czyta linię w formacie CSV przetwarza i zwraca tablicę zawierającą odczytane pola domyślnym separatorem jest "," Przykład:

$fp = fopen ("wiersz.csv","r");

$data = fgetcsv ($fp, 1000, ":");

for ($c=0; $c<count($data); $c++) {

print $data[$c]."|";

}

fclose ($fp);

PHP – obsługa plików

int fwrite(int fp, string napis [, int length]) zapisuje do wskaźnika pliku można określić długość fwrite($fp,"ząbek"); fwrite($fp,"ząbek");

// będą zapisane obok siebie int fputs(int fp, string str [, int długość])

alias do funkcji fwrite bool fclose(int fp)

zamyka otwarty wskaźnik pliku i zwraca TRUE lub FALSE

PHP – obsługa plików

int copy(string źródło, string przeznaczenie) kopiuje plik jeśli plik docelowy istnieje, to zostanie nadpisany Przykład:

if (!copy($file, $file.'.bak')) {

print ("Błąd przy kopiowaniu.<br>\n");

} bool rename(stara_nazwa, nowa_nazwa)

zmienia nazwę pliku rename("c:\\plik1.txt","c:\\plik2.txt");

PHP – obsługa plików

int unlink(string nazwa_pliku) kasuje plik zwraca TRUE lub FALSE w przypadku braku pliku pojawi odpowiednie

ostrzeżenie bool file_exists(string nazwa_pliku)

sprawdza, czy plik istnieje int filesize(string nazwa_pliku)

zwraca rozmiar pliku w bajtach

PHP – obsługa plików

int ftruncate(int fp, int rozmiar) przycina plik fp do podanego rozmiaru

int mkdir(string pathname, int mode) tworzy katalog jeżeli istnieje, to pojawi się odpowiednie

ostrzeżenie mkdir("/path/to/my/dir", 0700);

bool rmdir( string dirname) usuwa katalog jeżeli katalogu nie ma, to pojawi się

odpowiednie ostrzeżenie

PHP – obsługa plików

string dirname(string ścieżka) zwraca ścieżkę podanego pliku print dirname("c:\\xxx\\plik.txt");

// zwróci c:\xxx

bool is_dir(string nazwa) mówi o tym, czy nazwa jest katalogiem

bool is_file(string nazwa) mówi o tym, czy nazwa jest zwykłym plikiem

PHP – obsługa plików

array pathinfo(string path) zwraca informację o path <?php

$p = pathinfo("/www/htdocs/index.html");

echo $p["dirname"]."<br>\n";

echo $p["basename"]."<br>\n";

echo $p["extension"]."<br>\n";

?> /www/htdocs

index.html

html

PHP – obsługa plików

int fseek(resource handle, int offset [, int whence]) ustawia kursor na odpowiedniej pozycji w pliku opcję whence można ustawić na

SEEK_SET – ustawia kursor na pozycji równej dokładnie offset (domyślne)

SEEK_CUR – ustawia kursor na pozycji bieżąca+offset

SEEK_END – ustawia kursor na pozycji koniec pliku+offset

fseek($fp,-2,SEEK_END);

// na dwa znaki od końca

PHP – obsługa plików

bool rewind(fp) ustawia kursor na początku pliku

int ftell(fp) zwraca pozycję kursora w pliku

string tempnam(string dir, string prefix) tworzy plik tymczasowy w katalogu dir o

unikalnej nazwie zaczynającej się od prefix

PHP – obsługa plików

Przykład: pliki.html, punkty.txt

PHP – formularze

Jak to działa? Tablice zawierające przesłane dane

$_POST[ ] ($HTTP_POST_VARS[ ]) $_GET[ ] ($HTTP_GET_VARS[ ])

Przykład: login.php, gratulacje.html Skalarne i wielowartościowe elementy

formularza – przykład: dane.php

PHP – formularze

Kontrola poprawności danych formularza za pomocą wyrażeń regularnych za pomocą kontroli typów

PHP – wyrażenia regularne

Wyrażenia regularne ereg – sprawdza dopasowanie do wyrażeniabool ereg(string pattern, string string

[, array regs])

eregi – j.w., tylko funkcja jest case insensitive ereg_replace – wymienia wyrażenie regularnestring ereg_replace ( string pattern,

string replacement, string string)

eregi_replace – j.w., tylko funkcja jest c. i.

PHP – wyrażenia regularne

Wyrażenia regularne split – dzieli napis na elementy rozdzielone

przez wyrażenie regularne; zwraca tablicę tych elementówarray split(string pattern, string string

[, int limit])

spliti – j.w., tylko funkcja jest c.i. Przykład: regexp.php

PHP – obsługa MySQL

resource mysql_connect(

[string serwer

[,string użytkownik

[,string hasło]]]) łączy z bazą danych domyślnie

serwer: "localhost:3306" użytkownik: user będący właścicielem procesu

MySQL hasło: ""

PHP – obsługa MySQL

int mysql_create_db(string nazwa_bazy

[, resource identyfikator_połączenia]) tworzy bazę danych

bool mysql_select_db(string nazwa_bazy

[, resource identyfikator_połączenia]) wybiera bazę danych

PHP – obsługa MySQL

resource mysql_query(string zapytanie

[, resource identyfikator_połączenia

[, int typ_wyniku]]) wykonuje zapytanie zwracając zasoby zapytania nie powinno się kończyć średnikiem typ_wyniku może przyjmować następujące

wartości: MYSQL_USE_RESULT MYSQL_STORE_RESULT (domyślne, wynik jest

buforowany)

PHP – obsługa MySQL

resource mysql_unbuffered_query(string zapytanie

[, resource identyfikator_połączenia

[, int typ_wyniku]]) wysyła zapytanie nie pobierając i buforując wyniku ma znaczenie przy zapytaniu generującemu duże

wyniki; znacznie oszczędza pamięć nie trzeba czekać na zakończenie zapytania; można

od razu pracować na pierwszej krotce nie można użyć funkcji mysql_num_rows() przed wysłaniem kolejnego zapytania należy pobrać

wszystkie wiersze.

PHP – obsługa MySQL

int mysql_insert_id([resource id_połączenia]) podaje numer ID wygenerowany przez auto_increment

podczas ostatniej operacji INSERT<?php

mysql_connect('localhost', 'user', 'pass') or

die('Nie można się połączyć');

mysql_select_db('test');

mysql_query("INSERT INTO osoba(imie,nazwisko,...)

values ('Paweł','Rajba',...)");

printf("Ostatnio dodany rekord ma id %d\n",

mysql_insert_id());

?>

PHP – obsługa MySQL

array mysql_fetch_array(resource wynik

[, int typ_wyniku]) zapisuje wiersz wyniku w tablicy asocjacyjnej

lub zwraca null gdy nie ma więcej wierszy typ_wyniku

MYSQL_ASSOC MYSQL_NUM MYSQL_BOTH (domyślne, zwraca tablicę

asocjacyjną i indeksowaną numerycznie)

PHP – obsługa MySQL

array mysql_fetch_assoc(resource wynik) równoważne

mysql_fetch_array( _ , MYSQL_ASSOC) array mysql_fetch_row(resource wynik)

równoważne

mysql_fetch_array( _, MYSQL_NUM) bool mysql_free_result(resource wynik)

zwraca całą pamięć przydzieloną wynikowi

PHP – obsługa MySQL

string mysql_error([resource id_połączenia]) zwraca tekst komunikatu z ostatnio wykonanej

operacji int mysql_errno([resource id_połączenia])

zwraca numer komunikatu błędu z ostatnio wykonanej operacji

bool mysql_close([resource id_połączenia]) zamyka połączenie z serwerem

PHP – obsługa MySQL

int mysql_num_rows(resource wynik) zwraca liczbę wierszy w wyniku stosuje się do polecenie SELECT

int mysql_affected_rows([resource conn_id]) zwraca liczbę przetworzonych wierszy stosuje się do poleceń UPDATE, INSERT,

DELETE jeżeli DELETE zostanie wywołany bez klauzuli

WHERE, to wtedy funkcja zwróci wartość 0

PHP – obsługa MySQL

bool mysql_data_seek(

resource identyfikator_wyniku,

int numer_wiersza) przesuwa wewnętrzny wskaźnik do pozycji

numer_wiersza array mysql_fetch_lengths(resource wynik)

pobiera długość każdego pola pobranego za pomocą funkcji mysql_fetch_row (muszą być numerki)

PHP – obsługa MySQL

mysql_fetch_lengths – przykład:

<?php ... $row = mysql_fetch_array($result,MYSQL_BOTH); $len = mysql_fetch_lengths($result); print $row["id"]." "; print $row["name"]." "; print $row["salary"]."<br>\n"; print $len[0]." ".$len[1]." ".$len[2]."<br>\n"; ...?>

PHP – obsługa MySQL

string mysql_field_table(

resource wynik, int ofset_pola) pobiera nazwę tabeli w której znajduje się

dane pole może mieć znaczenie przy złączeniach

int mysql_num_fields(resource wynik) zwraca liczbę pól w wyniku

string mysql_field_name(

resource wynik, int indeks_pola) podaje nazwę danego pola w wyniku

PHP – obsługa MySQL

string mysql_field_type(

resource wynik, int ofset_pola) pobiera typ podanego pola (int, real, string, ...)

int mysql_field_len(

resource wynik, int ofset_pola) zwraca długość podanego pola

resource mysql_list_fields(string baza, string tabela [, resource identyfikator_połączenia]) zwraca informację o polach

PHP – obsługa MySQL

mysql_list_fields – przykład<?php...$fields = mysql_list_fields('test','emp', $link);$columns = mysql_num_fields($fields);for ($i = 0; $i < $columns; $i++) { echo mysql_field_name($fields, $i).":"; echo mysql_field_type($fields, $i).":"; echo mysql_field_len($fields, $i)."<br>\n";}...?>//id:int:11//name:string:20//salary:int:11

PHP – obsługa MySQL

resource mysql_list_tables(string baza

[, resource identyfikator_połączenia]) pobiera nazwy tabel z baza

string mysql_tablename(resource wynik, int i) pobiera nazwę i-tej tabeli z wyniku funkcji

mysql_list_tables

PHP – obsługa MySQL

Przykład:<?php...$result = mysql_list_tables('test');while ($row = mysql_fetch_row($result)) { printf ("Tabela: %s\n",$row[0]);}for ($i=0; $i<mysql_num_rows($result); $i++) { printf ("Tabela:%s\n", mysql_tablename($result,$i));}...?>

PHP – obsługa MySQL

Przykład: tabela.php, bazooka.php