Kurs WWW – wykład 8

38
Kurs WWW – wykład 8 Paweł Rajba [email protected] http:// www.ii.uni.wroc.pl /~ pawel /

description

Kurs WWW – wykład 8. Paweł Rajba [email protected] 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

Page 1: Kurs WWW – wykład 8

Kurs WWW – wykład 8

Paweł Rajba

[email protected]

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

Page 2: Kurs WWW – wykład 8

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

Page 3: Kurs WWW – wykład 8

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

Page 4: Kurs WWW – wykład 8

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:[email protected]/", "w");

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

Page 5: Kurs WWW – wykład 8

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

Page 6: Kurs WWW – wykład 8

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

Page 7: Kurs WWW – wykład 8

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

Page 8: Kurs WWW – wykład 8

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);

Page 9: Kurs WWW – wykład 8

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

Page 10: Kurs WWW – wykład 8

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");

Page 11: Kurs WWW – wykład 8

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

Page 12: Kurs WWW – wykład 8

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

Page 13: Kurs WWW – wykład 8

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

Page 14: Kurs WWW – wykład 8

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

Page 15: Kurs WWW – wykład 8

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

Page 16: Kurs WWW – wykład 8

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

Page 17: Kurs WWW – wykład 8

PHP – obsługa plików

Przykład: pliki.html, punkty.txt

Page 18: Kurs WWW – wykład 8

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

Page 19: Kurs WWW – wykład 8

PHP – formularze

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

Page 20: Kurs WWW – wykład 8

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.

Page 21: Kurs WWW – wykład 8

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

Page 22: Kurs WWW – wykład 8

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: ""

Page 23: Kurs WWW – wykład 8

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

Page 24: Kurs WWW – wykład 8

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)

Page 25: Kurs WWW – wykład 8

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.

Page 26: Kurs WWW – wykład 8

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());

?>

Page 27: Kurs WWW – wykład 8

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)

Page 28: Kurs WWW – wykład 8

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

Page 29: Kurs WWW – wykład 8

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

Page 30: Kurs WWW – wykład 8

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

Page 31: Kurs WWW – wykład 8

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)

Page 32: Kurs WWW – wykład 8

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"; ...?>

Page 33: Kurs WWW – wykład 8

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

Page 34: Kurs WWW – wykład 8

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

Page 35: Kurs WWW – wykład 8

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

Page 36: Kurs WWW – wykład 8

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

Page 37: Kurs WWW – wykład 8

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));}...?>

Page 38: Kurs WWW – wykład 8

PHP – obsługa MySQL

Przykład: tabela.php, bazooka.php