Giáo trình PHP cơ bản
MỤC LỤC
Chương 1: SƠ LƯỢC VỀ APACHE, PHP, MYSQL VÀ CÁCH CÀI ĐẶT 5
1.1. Tóm tắt sơ lược về Apache, PHP, MySQL: 5
1.1.1. Apache : 6
1.1.2. PHP: 6
1.1.3. MySQL : 7
1.2. Cài đặt: 7
Chương 2: TẠO NHỮNG TRANG PHP SỬ DỤNG PHP5 11
2.1. Sử dụng “echo” để trình bài text 12
2.2. Định dạng text bằng HTML và PHP 13
2.3. Sử dụng hằng và biến 15
2.3.1. Tổng quan về hằng: 15
2.3.2. Tổng quan về biến. 16
2.4. Truyền biến giữa các trang 18
2.4.1. Truyền biến qua URL 20
2.4.1.1. Phương thức đầu tiên để truyền biến giữa các trang là thông qua một URL. 20
2.4.1.2. Ký tự đặc biệt của URL. 24
2.5. Session và Cooking 26
2.5.1. Session 26
2.5.2. Cookies. 28
2.6. HTML FORMS 30
2.6.1. Lưu chuyển thông tin với form. 30
2.7. CÂU LỆNH IF/ELSE 34
2.7.1. Mệnh đề if. 34
2.7.2. Sử dụng if và else lồng nhau. 37
2.8. Sử dụng include cho đoạn mã có hiệu quả hơn 38
2.9. Sử dụng Hàm cho đoạn mã có hiệu quả hơn 39
2.10. Mảng 43
2.10.1. Cú pháp của mảng. 43
2.10.1.1. Mảng một chiều 43
2.10.1.2. Mảng đa chiều: 44
2.10.1.3. Sắp xếp mảng 46
2.10.2. Cấu trúc Foreach 47
2.11. While và do. while 54
2.12. Những cú pháp xen lẫn trong php. 61
2.12.1. Xen lẫn giữa <?php và ?> 61
2.12.2. Xen lẫn trong mệnh đề echo 61
2.12.3. Xen lẫn giữa các phép toán logic. 61
2.12.4. Xen lẫn trong việc sử dụng dấu (“”). 61
2.12.5. Xen lẫn những giá trị tăng, giảm 61
2.13. Tổng quan về OOP 62
2.13.1. Tóm tắt những ví dụ về OOP 62
2.13.2. Vì sao sử dụng OOP 66
Chương 3: SỬ DỤNG PHP VỚI MYSQL 67
3.1. Tổng quan về cấu trúc và cú pháp của MySQL. 67
3.1.1. Cấu trúc MySQL 67
3.1.2. Các kiểu dữ liệu 68
3.1.3. Lựa chọn kiểu cho đúng 70
3.1.4. NULL/NOT NULL 71
3.1.5. INDEXES 71
3.1.6. UNIQUE 72
3.1.7. Tăng tự động(auto Increment) 72
3.1.8. Những tham số khác 72
3.1.9. Các kiểu bảng của My SQl và kỹ thuật lưu trữ 72
3.1.10. Lệnh và cú pháp trong My SQL 72
3.2. Bắt đầu với My SQL và PHP như thế nào? 73
3.3. Kết nối MY SQL Server 73
3.4. Đọc, tạo cơ sở dữ liệu 74
3.5. Truy vấn cơ sở dữ liệu 77
3.5.1. WHERE , oh WHERE 78
3.5.2. Làm việc với PHP và mảng dữ liệu: foreach 81
3.5.3. Liên hệ giữa 2 bảng 86
3.5.4. Kết nối hai bảng (Join two tables) 88
3.6. Help Tips và Suggestions 90
3.6.1. Việc cung cấp tài liệu 90
3.6.2. Việc sử dụng PHPMyAdmin 90
Chương 4: SỬ DỤNG BẢNG ĐỂ TRÌNH BÀY DỮ LIỆU 91
4.1. Tạo bảng 91
4.2. Bảng thường dùng 93
4.3. Master là ai? 101
4.4. Quan hệ lâu dài 112
Chương 5: NHỮNG THÀNH PHẦN CỦA FORM: CHO PHÉP NGƯỜI DÙNG LÀM VIỆC VỚI DỮ LIỆU 120
5.1. Form đầu tiên 120
5.1.1. Thành phần form 123
5.1.2. Phần tử nhập (INPUT) 124
5.1.3. Xử lý Form 125
5.2. Driving the User Input 126
5.2.1. Kiểu nhập hộp checkbox 130
5.2.2. Một form đa tiến trình 131
5.2.3. Những phần tử nhập nút Radio 136
5.2.4. Những nút submit phức tạp 137
5.2.5. Việc kiểm tra nhập cơ bản 137
5.2.6. Tiêu đề trang động 138
5.2.7. Điều khiển một chuỗi bằng tay như một mảng để đổi ký tự đầu tiên 139
5.2.8. Toán tử tam nguyên 139
5.3. Kết hợp những phần tử của form 139
5.3.1. Tập lệnh khung 152
5.3.2. Câu trả lời mặc định 153
5.3.3. Thêm mục con 153
Chương 6: CHO PHÉP NGƯỜI SỬ DỤNG SOẠN THẢO CƠ SỞ DỮ LIỆU 156
6.1. Chuẩn bị Battlefield 156
6.2. Chèn một mẫu tin đơn giản từ phpMyAdmin 160
6.3. Chèn một mẩu tin trong cơ sở dữ liệu quan hệ 162
6.4. Xóa một mẩu tin 172
6.5. Sửa dữ liệu trong mẩu tin 179
Chương 7: THAO TÁC VÀ TẠO HÌNH ẢNH VỚI PHP 192
7.1. Làm việc với thư viện GD 192
7.1.1. Tôi có thể sử dụng loại files gì với GD và PHP? 192
7.1.2. Biên dịch PHP với GD 193
7.2. Cho phép người dùng đưa hình ảnh lên 194
7.3. Chuyển đổi loại file hình ảnh 204
7.4. Màu trắng và đen 212
7.5. Thêm những dấu đề 220
7.6. Thêm hình mờ và kết hợp hình ảnh 225
7.7. Tạo Thumbnails 227
Chương 8: NGƯỜI DÙNG NHẬP CÓ HIỆU LỰC 235
8.1. Những người dùng chỉ là những người dùng 235
8.2. Kết hợp có hiệu lực vào Movie Site 235
8.3. Quên điều gì? 237
8.4. Việc kiểm tra những kiểu lỗi 252
8.5. Tóm tại 273
Chương 9: ĐIỀU KHIỂN VÀ TRÁNH NHỮNG LỖI 274
9.1. Tiếp xúc với lỗi Apache Web Server như thế nào? 274
9.1.1. Chỉ thị lỗi của Apache 274
9.1.2. Lỗi tài liệu của Apache: Trang báo lỗi thông thường 280
9.2. Thi hành lỗi và tạo ra việc sửa trang lỗi với PHP 285
9.2.1. Các loại lỗi trong PHP 285
9.2.2. Việc phát sinh lỗi PHP 287
9.3. Một phương pháp khác của việc thi hành lỗi 298
9.3.1. Những ngoại lệ 298
9.3.2. Không gặp những điều kiện 300
9.3.3. Phân tích lỗi 301
9.4. Tóm lại. 301
hằng, nếu không là hằng nó giả thiết là chuỗi trong mảng. Có thể đưa ra thông báo lỗi khi dùng error_reporting(number) mà số không thay đổi. Nếu bạn không biết cấp độ lỗi được thiết lập, bạn có thể chạy hàm error_reporting() đơn giản với bất kỳ chủ đề nào: <?php echo error_reporting(); ?> Mặc định, tất cả những việc thi hành lỗi được điều khiển bời người xây dựng nên lỗi, cho bạn những thông báo về liểu lỗi, tên file, số dòng lỗi xuất hiện Bạn chú ý một lỗi như sau: Warning: Wrong parameter count for str_replace() in c:\FoxServ\www\errorhandling\error1.php on line 8 Thông thường việc phát sinh lỗi thì tốt vì có thể thông báo cho người quản trị biết là anh ta có thể biết nhiều hơn từ những lỗi ấy. Ví dụ về việc một người tạo lỗi thông thường Bạn sẽ tạo một lỗi thông thường nhưng thân thiện với người dùng và hiển thị như sau: 1. Trình soạn thảo trong ví dụ trước như sau: <?php //create your error handler function function handler($error_type, $error_message, $error_file, $error_line) { echo “Page Error”; echo “Errors have occurred while executing this page. Contact the “; echo “administrator “ . “to report errors”; echo “Information Generated”; echo “Error Type: $error_type”; echo “Error Message: $error_message”; echo “Error Filename: $error_file”; echo “Error Line: $error_line”; } //set the error handler to be used set_error_handler(“handler”); //set string with “Wrox” spelled wrong $string_variable = “Worx books are great!”; //try to use str_replace to replace Worx with Wrox //this will generate an E_WARNING //because of wrong parameter count str_replace(“Worx”, “Wrox”); ?> 2. Lưu file với tên custom_error.php và mở trình duyệt, bạn sẽ thấy như Hình 9.3 3. Vì lỗi của bạn là do người dùng định nghĩa, bạn có thể bắt lỗi và có thể tạo lại thông báo lỗi dựa vào kiểu lỗi. Tạo file custom_error.php để sắp xếp những lỗi như sau: <?php //create your error handler function function handler($error_type, $error_message, $error_file, $error_line) { switch ($error_type) { //fatal error case E_ERROR: echo “Fatal Error”; die(“A fatal error has occured at line $error_line of file “ . “$error_file.” . “Error message created was "$error_message"”); break; //warnings case E_WARNING: echo “Warning”; echo “A warning has occured at line $error_line of file “ . “$error_file.”; echo “ Error message created was "$error_message"”; //notices case E_NOTICE: //don’t show notice errors break; } } //set the error handler to be used set_error_handler(“handler”); //set string with “Wrox” spelled wrong $string_variable = “Worx books are great!”; //try to use str_replace to replace Worx with Wrox //this will generate an E_WARNING //because of wrong parameter count str_replace(“Worx”, “Wrox”); ?> 4. Lưu file và đưa lên trình duyệt. Kết quả như Hình 9.4. E_ERROR được gọi trong mệnh đề switch có thể sử dụng bất kỳ loại lỗi nào và thực hiện những hoạt động khác nhau tùy theo lỗi. Hình 9.4. Nó hoạt động thế nào? Tạo ra thông báo lỗi cho bạn điều khiển đầy đủ những trang web của bạn, bất chấp thành công hay thất bại khi thi hành. Bạn sẽ bắt lỗi, đưa ra thông báo lỗi, hồ sơ thông báo lỗi và lỗi nào xuất hiện. Trang web mà bạn đưa ra thông báo lỗi, trình bày hoặc gởi thông báo nhất định đến người dùng phụ thuộc vào lỗi mà người dùng mắc phải. Bạn đã tạo ra thông báo lỗi nhưng không muốn người dùng nhìn thấy thông báo ấy, bạn có thể lịch sự xin lỗi người dùng hãy qua một trang khác vì trang này đang bị lỗi như thế người dùng không thấy lỗi của mình. Dùng phương pháp email có thể cho người dùng không trực tiếp xem xét cơ sở dữ liệu mà là có bao nhiêu yêu cầu tới trang lỗi xuất hiện. Ví dụ về việc tạo một trang lỗi rõ ràng Trong bài này, bạn sẽ thiết lập việc thi hành một lỗi rõ ràng như bạn muốn. Bạn có thể tìm tất cả những lỗi mà không cần sử dụng những hướng dẫn có sẵn trong PHP 1. Trình soạn thảo feature_error.php như sau: <?php //create your error handler function function handler($error_type, $error_message, $error_file, $error_line) { switch($error_type) { //fatal error case E_ERROR: $to = “Administrator ”; $subject = “Custom Error Handling”; $body = “”; $body .= “”; $body .= “Website error”; $body .= “”; $body .= “”; $body .= “Fatal Error”; $body .= “Error received was a ” . $error_type . “ error.”; $body .= “The page that generated the error was: ” . $error_file . “”; $body .= “ and was generated on line: ” . $error_line . “”; $body .= “The generated error message was:” . $error_message; $body .= “”; $body .= “”; $headers = “MIME-Version: 1.0\r\n”; $headers .= “Content-type: text/html; charset=iso-8859-1\r\n”; $headers .= “From: Apache Error \r\n”; $headers .= “Cc: webmaster@yourdomain.com\r\n”; mail($to, $subject, $body, $headers); die(); //kill the script break; //warnings case E_WARNING: $to = “Administrator ”; $subject = “Custom Error Handling”; $body = “”; $body .= “”; $body .= “”; $body .= “”; $body .= “”; $body .= “Warning”; $body .= “Error received was a ” . $error_type . “ error.”; $body .= “The page that generated the error was: ” . $error_file . “”; $body .= “ and was generated on line: ” . $error_line . “”; $body .= “The generated error message was:” . $error_message; $body .= “”; $body .= “”; $headers = “MIME-Version: 1.0\r\n”; $headers .= “Content-type: text/html; charset=iso-8859-1\r\n”; $headers .= “From: Apache Error \r\n”; $headers .= “Cc: webmaster@yourdomain.com\r\n”; mail($to, $subject, $body, $headers); break; //script will continue //notices case E_NOTICE: //don’t show notice errors break; } } /* set error handling to 0 we will handle all error reporting only notifying admin on warnings and fatal errors don’t bother with notices as they are trivial errors really only meant for debugging */ error_reporting(0); //set the error handler to be used set_error_handler(“handler”); /* Create the rest of your page here. We will not be displaying any errors We will be e-mailing the admin an error message Keep in mind that fatal errors will still halt the execution, but they will still notify the admin */ ?> Nó hoạt động thế nào? Với cách này đưa ra thông báo đến người dùng những thông báo lỗi thông thường nhưng thân thiện đối với người dùng bằng cách dùng hàm email . Vì vậy, với cách đơn giản bạn chạy trang này và bạn nhận một lỗi, đôi khi đưa ra thông tin có ích cho người dùng. Một phương pháp khác của việc thi hành lỗi Bạn vừa đưa ra những thông báo lỗi thông thường, có một phương pháp khác tự nhiên hơn chèn mệnh đề echo để kiểm tra giá trị của biến và xem mệnh đề điều kiện đúng hay chưa. PHP cũng cung cấp vài thông báo lỗi cho những lỗi đơn giản. Những ngoại lệ PHP5 giới thiệu đặc tính mới gọi là những ngoại lệ. Những điều đó tương tự như ngôn ngữ Java. Những điều kiện điều khiển ngọai lệ trong ứng dụng Web và cho bạn một cách hiệu quả để điều khiển những lỗi gặp phải. PHP5 sử dụng phương pháp tìm kiếm, nắm bắt để điều khiển những ngoại lệ. Ví dụ về việc thử nghiệm với những ngoại lệ Trong bài này, bạn sẽ tạo một phiên bản đưa ra vài ngoài lệ để thấy chúng làm việc thế nào 1. Tạo một trang PHP với đoạn code sau: <?php //$x = “”; //Throws null Exception //$x = “500”; //Throws less than Exception $x = “1000”; //Throws NO Exception try { if ($x == “”) { throw new Exception(“Variable cannot be null”); } if ($x < 1000) { throw new Exception(“Variable cannot be less than 1000”); } echo “Validation Accepted!”; } catch (Exception $exception) { echo $exception->getMessage(); echo “ - Validation Denied!”; } ?> 2. Lưu đoạn code với tên exceptions.php và chạy nó trong trình duyệt. Bạn không thấy bất cứ lỗi nào 3. Thay $x= “1000” bằng $x= “” 4. Lưu file và chạy một lần nữa, bạn sẽ thấy một thông báo rỗng 5. Thay $x= “” bằng $x= “500” 6. Lưu file lại và bạn sẽ thấy thông báo “less than 1000” Nó hoạt động thế nào? Sự hữu ích của khối này là tất cả những điều kiện phải gặp hoặc thấy. Đây là hữu ích khi bạn cần kiểm tra nhiều biến hay không muốn thông qua nhiều mệnh đề if/else cho việc tìm ra kết quả. Tất cả yêu cầu trong mệnh đề if mà đúng thì sẽ thực hiện, sẽ đưa ra thông báo lỗi thích hợp phụ thuộc vào ngoại lệ gặp phải. Trong vùng thấy lỗi, bạn có thể thi hành lỗi trong bất cứ phương pháp nào bạn thích. Bạn muốn gởi đến người dùng là bạn muốn thiết lập vài biến mặc định, kết nối cả hai hoặc bất cứ cái gì mà bạn cần. Hữu ích của việc sử dụng những ngoại lệ là cách chúng đưa ra những hàm và code. Ví dụ, nếu bạn có một hàm gọi là hàm B mà bên trong thì gọi hàm C và một ngoại lệ trong hàm C thông qua việc sử dụng try{} , ngoại lệ sẽ dừng việc xử lý phiên bản nếu khối được tìm thấy Nếu không tìm thấy try{}…catch{} khi thi hành code, lỗi sẽ xuất hiện trên màn hình để thông báo ngoại lệ đã xuất hiện. Ngoại lệ cũng có thể thông qua như sau: <?php try { throw new Exception(“This will be rethrown”); } catch (Exception $e) { throw $e; } ?> Không gặp những điều kiện Không phải trong bất cứ đoạn mã nào cũng gặp lỗi, nó chỉ xuất hiện khi liên quan đến PHP, bằng việc sử dụng vài phương pháp khác nhau trong đoạn mã để kiểm tra lỗi xuất hiện. Bạn đang kiểm tra để thấy nút nhấn khi nào hoặc sẽ không thi hành thông tin khi nào. Bạn có thể làm điều này như sau: if ($_POST[‘submit’] == “submit”) { //form has been submitted } else { //form has not been submitted } Phân tích lỗi Phân tích lỗi là kiểu lỗi chính, nó xuất hiện khi bạn quên một dấu chấm phẩy,…Những lỗi này không làm với mệnh đề điều kiện, chúng là cú pháp chính là nguyên nhân dừng việc thực thi. Phân tích lỗi xấu hơn những lỗi nặng vì chúng không thể chạy tất cả những phiên bản, chúng cho bạn thông tin về lỗi. Tóm lại. Bạn đọc được nhiều thứ trong chương này, từ việc biết được những lỗi cho đến việc phòng ngừa những lỗi, giúp người lập trình làm thế nào để phòng ngừa lỗi, tìm ra lỗi.
File đính kèm:
- Giáo trình PHP cơ bản.doc