Giáo trình Cơ sở dữ liệu Apache, PHP, MySQL
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 : 6
1.2. Cài đặt: 6
Chương 2: TẠO NHỮNG TRANG PHP SỬ DỤNG PHP5 10
2.1. Sử dụng “echo” để trình bài text 10
2.2. Định dạng text bằng HTML và PHP 11
2.3. Sử dụng hằng và biến 13
2.3.1. Tổng quan về hằng: 13
2.3.2. Tổng quan về biến. 14
2.4. Truyền biến giữa các trang 16
2.4.1. Truyền biến qua URL 17
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. 17
2.4.1.2. Ký tự đặc biệt của URL. 21
2.5. Session và Cooking 22
2.5.1. Session 22
2.5.2. Cookies. 24
2.6. HTML FORMS 25
2.6.1. Lưu chuyển thông tin với form. 25
2.7. CÂU LỆNH IF/ELSE 29
2.7.1. Mệnh đề if. 29
2.7.2. Sử dụng if và else lồng nhau. 31
2.8. Sử dụng include cho đoạn mã có hiệu quả hơn 32
2.9. Sử dụng Hàm cho đoạn mã có hiệu quả hơn 33
2.10. Mảng 36
2.10.1. Cú pháp của mảng. 36
2.10.1.1. Mảng một chiều 36
2.10.1.2. Mảng đa chiều: 37
2.10.1.3. Sắp xếp mảng 38
2.10.2. Cấu trúc Foreach 40
2.11. While và do. while 46
2.12. Những cú pháp xen lẫn trong php. 51
2.12.1. Xen lẫn giữa <?php và ?> 51
2.12.2. Xen lẫn trong mệnh đề echo 51
2.12.3. Xen lẫn giữa các phép toán logic. 51
2.12.4. Xen lẫn trong việc sử dụng dấu (“”). 51
2.12.5. Xen lẫn những giá trị tăng, giảm 52
2.13. Tổng quan về OOP 52
2.13.1. Tóm tắt những ví dụ về OOP 52
2.13.2. Vì sao sử dụng OOP 55
Chương 3: SỬ DỤNG PHP VỚI MYSQL 56
3.1. Tổng quan về cấu trúc và cú pháp của MySQL. 56
3.1.1. Cấu trúc MySQL 56
3.1.2. Các kiểu dữ liệu 57
3.1.3. Lựa chọn kiểu cho đúng 58
3.1.4. NULL/NOT NULL 59
3.1.5. INDEXES 59
3.1.6. UNIQUE 60
3.1.7. Tăng tự động(auto Increment) 60
3.1.8. Những tham số khác 60
3.1.9. Các kiểu bảng của My SQl và kỹ thuật lưu trữ 60
3.1.10. Lệnh và cú pháp trong My SQL 60
3.2. Bắt đầu với My SQL và PHP như thế nào? 61
3.3. Kết nối MY SQL Server 61
3.4. Đọc, tạo cơ sở dữ liệu 62
3.5. Truy vấn cơ sở dữ liệu 65
3.5.1. WHERE , oh WHERE 66
3.5.2. Làm việc với PHP và mảng dữ liệu: foreach 68
3.5.3. Liên hệ giữa 2 bảng 72
3.5.4. Kết nối hai bảng (Join two tables) 73
3.6. Help Tips và Suggestions 75
3.6.1. Việc cung cấp tài liệu 75
3.6.2. Việc sử dụng PHPMyAdmin 75
Chương 4: SỬ DỤNG BẢNG ĐỂ TRÌNH BÀY DỮ LIỆU 77
4.1. Tạo bảng 77
4.2. Bảng thường dùng 78
4.3. Master là ai? 86
4.4. Quan hệ lâu dài 95
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 103
5.1. Form đầu tiên 103
5.1.1. Thành phần form 105
5.1.2. Phần tử nhập (INPUT) 106
5.1.3. Xử lý Form 107
5.2. Driving the User Input 108
5.2.1. Kiểu nhập hộp checkbox 111
5.2.2. Một form đa tiến trình 112
5.2.3. Những phần tử nhập nút Radio 117
5.2.4. Những nút submit phức tạp 117
5.2.5. Việc kiểm tra nhập cơ bản 117
5.2.6. Tiêu đề trang động 118
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 119
5.2.8. Toán tử tam nguyên 119
5.3. Kết hợp những phần tử của form 119
5.3.1. Tập lệnh khung 130
5.3.2. Câu trả lời mặc định 131
5.3.3. Thêm mục con 131
Chương 6: CHO PHÉP NGƯỜI SỬ DỤNG SOẠN THẢO CƠ SỞ DỮ LIỆU 134
6.1. Chuẩn bị Battlefield 134
6.2. Chèn một mẫu tin đơn giản từ phpMyAdmin 137
6.3. Chèn một mẩu tin trong cơ sở dữ liệu quan hệ 140
6.4. Xóa một mẩu tin 148
6.5. Sửa dữ liệu trong mẩu tin 154
Chương 7: THAO TÁC VÀ TẠO HÌNH ẢNH VỚI PHP 166
7.1. Làm việc với thư viện GD 166
7.1.1. Tôi có thể sử dụng loại files gì với GD và PHP? 166
7.1.2. Biên dịch PHP với GD 167
7.2. Cho phép người dùng đưa hình ảnh lên 168
7.3. Chuyển đổi loại file hình ảnh 176
7.4. Màu trắng và đen 183
7.5. Thêm những dấu đề 191
7.6. Thêm hình mờ và kết hợp hình ảnh 194
7.7. Tạo Thumbnails 196
Chương 8: NGƯỜI DÙNG NHẬP CÓ HIỆU LỰC 203
8.1. Những người dùng chỉ là những người dùng 203
8.2. Kết hợp có hiệu lực vào Movie Site 203
8.3. Quên điều gì? 204
8.4. Việc kiểm tra những kiểu lỗi 217
8.5. Tóm tại 235
Chương 9: ĐIỀU KHIỂN VÀ TRÁNH NHỮNG LỖI 236
9.1. Tiếp xúc với lỗi Apache Web Server như thế nào? 236
9.1.1. Chỉ thị lỗi của Apache 236
9.1.2. Lỗi tài liệu của Apache: Trang báo lỗi thông thường 241
9.2. Thi hành lỗi và tạo ra việc sửa trang lỗi với PHP 246
9.2.1. Các loại lỗi trong PHP 246
9.2.2. Việc phát sinh lỗi PHP 247
9.3. Một phương pháp khác của việc thi hành lỗi 256
9.3.1. Những ngoại lệ 257
9.3.2. Không gặp những điều kiện 259
9.3.3. Phân tích lỗi 259
9.4. Tóm lại. 259
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 Cơ sở dữ liệu Apache, PHP, MySQL.doc