Bài giảng PHP (PHP Hypertext Preprocessing)
Làm quen với PHP
PHP Căn bản
Các tính năng cho ứng dụng Web base
Làm việc với Form
Các hàm làm việc với MySQL
Làm việc với File
Các hàm làm việc với hình ảnh
Các hàm trên ngày tháng
Các hàm trên dữ liệu
Cookies và QueryString
Session
Gỡ lỗi
asource);if (DB::isError($db)) { die($db->getMessage( ));} V.2.4. Thực thi query Để thực thi query, sử dụng phương thức query() của Database Object (đối tượng trả về khi bạn kết nối thành công với CSDL bằng hàm DB::connect() ); $db = DB::connect($datasource);$result = $db->query(sql); Cũng tương tự như DB::connect(), bạn có thể kiểm tra lỗi bằng DB::isError() if (DB::iserror($result)) { die($result->getMessage());} V.2.5. Lấy kết quả từ query $row = $result->fetchRow([ mode ]); Hàm fetchRow() trả về mảng các giá trị trên dòng hoặc DB_ERROR (nếu có lỗi) query(sql);while ($row = $result->fetchRow( )) { if (DB::isError($row)) { die($row->getMessage( )); } // do something with the row}?> V.2.5. Lấy kết quả từ query (2) $row = $result->fetchRow([ mode ]); mode: DB_FETCHMODE_ORDERED: Các cột được liệt kê trên $row theo thứ tự 0,1,2... DB_FETCHMODE_ASSOC : Các cột được liệt kê với khóa là tên của các cột DB_FETCHMODE_OBJECT: Các cột được liệt kê thành các trường của đối tượng V.2.5. Lấy kết quả từ query (3) query("select * from sv"); $row = $table->fetchRow(); var_dump($row); $row = $table->fetchRow(DB_FETCHMODE_ASSOC); var_dump($row); $row = $table->fetchRow(DB_FETCHMODE_OBJECT); var_dump($row); echo "Hoten: {$row->hodem} {$row->ten}, Ngay sinh: {$row->ngaysinh}";?> V.2.6. Giải phóng bộ nhớ query("select * from sv"); $row = $table->fetchRow(); unset($row); $table->free(); $db->disconnect();?> V.3. Các chức năng nâng cao với PEAR DB V.3.1. Query template V.3.2. Prepare/Execute V.3.3. Các hàm tiện ích V.3.4. Các thông tin trả về từ query() V.3.5. Metadata V.3.1. Query template Để xây dựng các query, nếu dùng phép nối xâu kí tự rất dễ gây nhầm lẫn do không nhìn thấy tổng thể của câu lệnh SQL (nhất là với các trường hợp có sử dụng dấu nháy) Trong trường hợp này, PHP cung cấp 1 công cụ hoạt động cho phép truyền tham số trong câu lệnh SQL giống như lệnh printf, trong đó sử dụng các ký hiệu ?: Cho số hoặc string (dấu nháy sẽ được bổ sung khi cần thiết) |: Cho số hoặc string (không sử dụng dấu nháy) &: Tên file (dùng cho các trường BLOB) query("INSERT INTO sv (hodem, ten) VALUES(?,?)", $row);?> V.3.2. Prepare/Execute Khi bạn thực hiện nhiều câu lệnh giống nhau, cách tốt nhất là dịch câu lệnh SQL trước khi thực hiện bằng phương thức prepare() Sau khi dịch SQL, bạn có thể thực hiện câu lệnh SQL bằng cách dùng 2 lệnh sau: $response = $db->execute(compiled, values); (values: mảng 1 chiều các giá trị) $responses = $db->executeMultiple(compiled, values); (values: mảng 2 chiều các dòng, mỗi dòng là 1 mảng 1 chiều các giá trị) prepare("INSERT INTO sv (hodem, ten) VALUES(?,?)"); $rows=array( array("Nguyen Van", "A"), array("Nguyen Van", "B"), array("Nguyen Van", "C"), array("Nguyen Van", "D") ); foreach ($rows as $row) { $db->execute($complied, $row); } $db->executeMultiple($complied, $rows);?> V.3.3. Các hàm tiện ích Ngoài các hàm chung, PEAR DB còn cung cấp các hàm cho phép thực hiện nhanh 1 số chức năng hay được sử dụng: getOne(), getRow(), getCol(), getAssoc(), getAll() getRow("SELECT * FROM sv"); var_dump($result); $result = $db->getOne("SELECT count(*) FROM sv"); var_dump($result); $result = $db->getCol("SELECT * FROM sv", "ten"); var_dump($result); $result = $db->getAssoc("SELECT * FROM sv"); var_dump($result); $result = $db->getAll("SELECT * FROM sv"); var_dump($result);?> V.3.4. Các thông tin trả về từ query() Bạn có thể lấy thông tin về các dòng, cột kết quả trả về từ câu lệnh SQL qua các hàm numRows(), numCols(), tableInfo(), affectedRows() query("SELECT * FROM sv"); var_dump($table->numRows()); var_dump($table->numCols()); var_dump($table->tableInfo()); $result = $db->query( "INSERT INTO sv (hodem, ten) VALUES (?,?)", array("Nguyen Phu", "Quang")); var_dump($result); var_dump($db->affectedRows());?> V.3.5. Metadata Hàm getListOf() sử dụng để lấy thông tin về users, databases, tables, views, functions (phụ thuộc vào sự hỗ trợ của CSDL mà bạn đang sử dụng) getListOf("users"); var_dump($result); $result = $db->getListOf("databases"); var_dump($result); $result = $db->getListOf("tables"); var_dump($result);?> V.3.6. Transaction Nhiều cơ sở dữ liệu hỗ trợ Transaction safe, để sử dụng transaction safe trong PHP, bạn sử dụng các lệnh commit(), rollback() Để có thể rollback(), bạn phải thiết lập autocommit là false autocommit = false; $result = $db->query("DELETE FROM sv;"); $db->rollback(); $db->autocommit = true;?> VI. Tổ chức ứng dụng PHP VI.2. Hệ thống template VI.3. Quản lý output VI.4. Quản lý lỗi VI.5. Tối ưu hóa VI.2. Hệ thống template Trang Web có giao diện dễ thay đổi là 1 tiêu chí rất quan trọng Nếu kết hợp mã HTML và PHP không tốt thì rất khó cho người thiết kế giao diện và người lập trình làm việc với nhau khả năng thay đổi giao diện khó khăn Một phương pháp hiệu quả là sử dụng các file template (.HTML – được thiết kế từ các chương trình: DW, FrontPage...). Các file template này thường không chứa mã PHP mà chỉ có các thông tin dưới dạng quy ước (thường là các tên gọi, giá trị được đặt theo 1 quy ước nhất định, các giá trị này sẽ được thay thế khi chạy chương trình bằng PHP) VI.2. Hệ thống template (2) $paramVal) { $templateContent = str_replace( $paramName, $paramVal, $templateContent); } return $templateContent;}?> VI.3. Quản lý output Thường thì các hàm ghi thông tin ra browser. Tuy nhiên có nhiều trường hợp chúng ta không muốn như vậy. Bạn có thể sử dụng vùng đệm ra (output buffer) để các lệnh ghi thông tin ghi dữ liệu lên đó Các hàm với output buffer: ob_start(), ob_get_length(), ob_get_contents(), ob_flush(), ob_end_flush(); ob_end_clean() VI.4. Quản lý lỗi VI.4.1. Thông báo lỗi VI.4.2. Giấu lỗi VI.4.3. Phát sinh lỗi VI.4.4. Hàm xử lý lỗi VI.4.5. Log lỗi VI.4.1. Thông báo lỗi Thông thường, khi có lỗi, thông báo lỗi được in ra output Có 3 mức độ thông báo: notices, warnings, errors Mặc định của PHP là các thông báo warning, error sẽ được in ra browser, bạn có thể thay đổi trong PHP.INI hoặc trong thời gian chạy bằng hàm error_reporting() (các tham số E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR) VI.4.1. Thông báo lỗi (2) VI.4.2. Giấu lỗi Sử dụng toán tử @ để ngăn không cho output lỗi ra browser Thiết lập track_errors trong php.ini để bắt được các thông báo lỗi qua biến $php_errormsg Để ngăn không cho tất cả các thông báo lỗi trên browser, sử dụng hàm error_reporting(0) VI.4.3. Phát sinh lỗi Bạn có thể làm phát sinh lỗi người dùng bằng hàm trigger_error trigger_error(message [, type]); type: E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE (default) VI.4.4. Hàm xử lý lỗi Giấu tất cả các lỗi không phải là một phương án hay, để quản lý lỗi tốt hơn, bạn nên dùng hàm xử lý lỗi (error handler) Error handler được thiết lập bằng hàm set_error_handler(), khôi phục lại bằng hàm restore_error_handler() VI.4.5. Log lỗi VI.5. Tối ưu hóa VII. Hình ảnh VII.1. Yêu cầu phần mềm VII.2. Tạo và vẽ ảnh VII.3. Vẽ Text VII.4. Co dãn ảnh VII.1. Yêu cầu phần mềm Với PHP bạn có thể sử dụng các hàm graphic để vẽ ra các hình ảnh và lưu trữ dưới dạng file (GIF, PNG, JPG) Để thực hiện được chức năng này, bạn cần phải cài đặt bộ thư viện GD ( ) Để biết thư viện GD đã được cài đặt hay chưa, có thể sử dụng hàm phpinfo() hoặc hàm gd_info() Đối với bộ PHP full (v5.0) có đầy đủ thư viện PEAR đi kèm, để chạy GD bạn chỉ việc thiết lập trong file php.ini: extension=php_gd2.dll VII.2. Tạo và vẽ ảnh Day la caro Day cung la caro: VII.2. Tạo và vẽ ảnh (2) Các hàm thường sử dụng resource imagecreate ( int x_size, int y_size ): Tạo ảnh với kích thước x_size * y_size, ảnh ko phải truecolor imagecolorallocate ( resource image, int red, int green, int blue ): Sử dụng để định nghĩa 1 màu sẽ xuất hiện trong ảnh. Đối với ảnh sử dụng palette, lần gọi đầu tiên sẽ cho màu là màu nền của ảnh resource imagecreatetruecolor ( int x_size, int y_size ): Tạo ảnh truecolor bool imagejpeg ( resource image [, string filename [, int quality]] ) bool imagepng ( resource image [, string filename] ) bool imagegif ( resource image [, string filename] ) VII.2. Tạo và vẽ ảnh (3) ImageSetPixel(image, x, y, color); ImageLine(image, start_x, start_ y, end_x, end_ y, color); ImageDashedLine(image, start_x, start_ y, end_x, end_ y, color); ImageRectangle(image, tlx, tly, brx, bry, color); ImageFilledRectangle(image, tlx, tly, brx, bry, color); ImagePolygon(image, points, number, color); ImageFilledPolygon(image, points, number, color); ImageArc(image, center_x, center_ y, width, height, start, end, color); ImageFill(image, x, y, color); ImageFillToBorder(image, x, y, border_color, color); VII.3. Vẽ Text VII.3. Vẽ Text (2) VII.4. Co dãn ảnh VII.5. Màu sắc VII.5.1. True color & color index VII.5.3. Kênh alpha VII.5.1. True color & color index Ảnh của bạn được tạo bởi các hàm imagecreate() – tạo ảnh sử dụng colorindex trên palette và imagecreatetruecolor () – tạo ảnh truecolor (24bit/pixel) Từ GD2.0 trở lên, ta có thể làm việc với kênh alpha (xem phần sau) Để lấy màu của điểm ảnh $color = ImageColorAt(image, x, y); $values = ImageColorsForIndex(image, index); Với ảnh truecolor, cấu trúc màu gồm: 7bit alpha, 8bit Red, 8bit Green, 8bit Blue (từ trái qua phải). Có thể sử dụng công thức sau $a = ($col & 0x7F000000) >> 24;$r = ($col & 0x00FF0000) >> 16;$g = ($col & 0x0000FF00) >> 8;$b = ($col & 0x000000FF); VII.5.2. Kênh alpha Kênh alpha trong GD chỉ gồm 7bit (giá trị từ 0 đến 127) Để sử dụng kênh alpha sử dụng các hàm ImageColorResolveAlpha() ImageAlphaBlending() IX. XML IX.1. Tạo văn bản XML IX.2. Đọc XML IX.1. Tạo văn bản XML Cách đơn giản nhất để tạo văn bản XML là đặt lại header của trang PHP header('Content-Type: text/xml'); Sau đó đưa thông tin ra browser bằng các hàm echo, print... như bình thường IX.2. Đọc XML ");?> VIII. PDF VIII.1. Document & Page VIII.2. Text VIII.3. Images & Graphics VIII.4. Nagivations VIII.5. Các chức năng khác
File đính kèm:
- Bài giảng PHP (PHP Hypertext Preprocessing).ppt