1 / 38

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

hamal
Download Presentation

Kurs WWW – wykład 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Kurs WWW – wykład 8 Paweł Rajba pawel@ii.uni.wroc.pl http://www.ii.uni.wroc.pl/~pawel/

  2. 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

  3. 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

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

  5. 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

  6. 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

  7. 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

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

  9. 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

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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. PHP – obsługa plików • Przykład: pliki.html, punkty.txt

  18. 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

  19. PHP – formularze • Kontrola poprawności danych formularza • za pomocą wyrażeń regularnych • za pomocą kontroli typów

  20. PHP – wyrażenia regularne • Wyrażenia regularne • ereg– sprawdza dopasowanie do wyrażenia bool ereg(string pattern,string string [, array regs]) • eregi– j.w., tylko funkcja jest case insensitive • ereg_replace– wymienia wyrażenie regularne string ereg_replace ( string pattern, string replacement, string string) • eregi_replace– j.w., tylko funkcja jest c. i.

  21. PHP – wyrażenia regularne • Wyrażenia regularne • split – dzieli napis na elementy rozdzielone przez wyrażenie regularne; zwraca tablicę tych elementów array split(string pattern, string string [, int limit]) • spliti– j.w., tylko funkcja jest c.i. • Przykład: regexp.php

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

  23. 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

  24. 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)

  25. 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.

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

  27. 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)

  28. 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

  29. 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

  30. 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

  31. 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)

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

  33. 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

  34. 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

  35. 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

  36. 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

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

  38. PHP – obsługa MySQL • Przykład: tabela.php, bazooka.php

More Related