Kurs WWW – wykład 8
description
Transcript of 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
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:[email protected]/", "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