Giao trinh PHP co ban

46 7 0
Giao trinh PHP co ban

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Không như các đoạn mã script hoạt động ở máy khách, các tài liệu có chứa các đoạn mã script phía máy chủ thường được lưu ở các file tài liệu có đuôi mở rộng riêng biệt, và các đoạn mã th[r]

(1)Phần I: Căn PHP Bài 1: Những khái niệm mạng máy tính Mục đích và yêu cầu: - Nắm các khái niệm mạng máy tính - Biết cách cài đặt giao thức TCP/IP và web server I Khái niệm bản: Mạng máy tính: Là hay nhiều máy tính kết nối với Máy chủ - Máy khách: Trong mạng máy tính, máy chủ (hay còn gọi là server) là máy tính sử dụng để các máy tính khác truy cập Các máy tính truy cập vào máy chủ gọi là máy khách Như vậy, máy tính mạng có thể vừa là máy chủ (khi có máy khác truy cập đến nó), vừa là máy khách (nếu nó truy cập đến máy tính khác) Vì đừng nên nghĩ máy chủ là cái gì đó cao siêu cho mệt óc Giao thức mạng: Các máy tính trên mạng "nói chuyện" với thông qua ngôn ngữ đặc biệt gọi là các giao thức mạng Có nhiều giao thức khác nhau, giao thức có nhiệm vụ riêng Ở đây tôi tạm chia làm nhóm giao thức: - Giao thức truyền liệu, chuyên dùng để vận chuyển liệu máy tính - Giao thức xử lý liệu, có nhiệm vụ xử lý liệu nhận từ giao thức truyền liệu Túm lại: Không nên phát hoảng nghe thấy từ giao thức Chẳng qua nó là dạng ngôn ngữ để trao đổi với mà thôi Và bạn yên chí thích, bạn có thể tự định nghĩa cái giao thức nào đó Chẳng hạn các chương trình chat Yahoo, (2) hay các chương trình remote trojan… Chúng tự đẻ các giao thức riêng dựa trên giao thức TCP/IP Chùm giao thức TCP/IP Giao thức TCP/IP là giao thức sử dụng để truyền liệu máy tính Theo giao thức này, máy tính có địa xác định trên mạng gọi là địa IP Địa IP là cụm chữ số có dạng a.b.c.d (a,b,c,d là các số từ đến 255) VD: 174.178.0.1 Giao thức TCP/IP có nhiệm vụ là truyền liệu máy tính và đảm bảo giữ nguyên vẹn liệu truyền Ngoài nó chẳng cần biết liệu đó là gì và xử lý nào Dựa trên khả vận chuyển giao thức TCP/IP, người ta xây dựng nên nhóm các giao thức khác chuyên xử lý liệu nhận từ TCP/IP, gọi là chùm giao thức TCP/IP hay họ giao thức TCP/IP Để phân chia các giao thức chùm giao thức TCP/IP, người ta sử dụng khái niệm khác gọi là Cổng giao thức Đây là số nguyên từ đến 32767 thì phải :p Mỗi giao thức chùm giao thức chiếm hữu cổng riêng Thông thường thì chương trình ứng dụng trên server chịu trách nhiệm mở cổng TCP/IP, định nghĩa giao thức cho cổng đó, và sau đó là lắng nghe các yêu cầu từ máy khách và xử lý các yêu cầu đó Như vậy, hệ giao thức TCP/IP, máy khách truy cập thành công đến máy chủ nó có địa IP và cổng mở dịch vụ trên máy chủ Chẳng hạn: Với máy chủ quản lý web (web server), chúng ta cần phải có ứng dụng web gọi là web server Ứng dụng này mở cổng (mặc định là 80) và xử lý các tín hiệu đến từ cổng đó Bây hãy nhấp ngụm café cho tỉnh táo đã II Trang Web tĩnh và Trang Web động Trang web tĩnh và trang web động Bạn đã xây dựng trang Web và đưa nó lên mạng? Trang web bạn thật là thú vị (ít là theo ý nghĩ bạn ) và tất nhiên bạn muốn tham khảo ý kiến người đọc? Chẳng nhẽ bạn lại cho số điện thoại và yêu cầu người góp ý phải gọi điện đến? Hic… Đảm bảo chẳng có ma nào thèm gọi điện Bạn muốn "xin" ít thông tin người duyệt Web… hic Làm cách nào bây giờ??? (3) Vâng, đó chính là nhược điểm cái gọi là trang web tĩnh Đó là các trang Web không cho phép bạn có thể tương tác với người dùng (chẳng hạn là trao đổi hay thu thập các thông tin từ phía người dùng) Nó là các trang web có đuôi *.htm thông thường Ngược lại, các trang Web động cho phép bạn nhận thông tin từ người dùng, xử lý thông tin đó, và có thể đáp trả lại các yêu cầu họ Xem nó linh động phết chứ? Để làm điều đó, tất nhiên là bạn phải … theo dõi các bài viết này Lập trình Script Các trang web nguyên thuỷ sử dụng ngôn ngữ định dạng chuẩn là HTML (HyperText Markup Language) HTML chuẩn bao gồm các cặp thẻ đánh dấu để định khuôn dạng tài liệu Tuỳ theo tên thẻ là gì mà trình duyệt tự động hiểu và làm các công việc thẻ đó quy định Chẳng hạn cặp thẻ <B>….</B> quy định đoạn văn đó sử dụng chữ đậm Vì vậy, trên thực tế người ta không coi nó là ngôn ngữ (vì nó chẳng liên quan gì đến thứ mà ta hay gặp lập trình biến, câu lệnh rẽ nhánh, lặp…) Cũng chính vì nguyên nhân này, nó phải tự mở rộng cách cho phép "nhúng" vào thân nó số đoạn mã lệnh chương trình đặc biệt, người ta thường gọi chúng là các đoạn mã Script hay các đoạn mã nhúng Ngôn ngữ sử dụng các đoạn mã lệnh đó gọi là các ngôn ngữ Script Các ngôn ngữ script thường đơn giản và không có nhiều sức mạnh các ngôn ngữ "kinh điển" cùng tên, hay nói cách khác, chúng là phần nhỏ ngôn ngữ nào đó tích hợp vào trình duyệt để thực số thao tác định Chi tiết ngôn ngữ HTML đã có đầy rẫy trên Internet, các hiệu sách, nên chúng không nhắc lại đây Nếu các bạn chưa biết gì nó thì bạn phải tìm đọc các tài liệu HTML trước tiếp tục theo dõi khoá học này Lập trình Script máy khách Như tên gọi nó, lập trình script máy khách là viết các đoạn script chạy trên máy khách Các đoạn mã này máy chủ gửi kèm tài liệu, đưa máy khách và thực đây Trong tài liệu gửi trình duyệt, các đoạn mã này thường tìm thấy cặp thẻ <Script language ="xxxxxx">…</Script> Có nhiều ngôn ngữ script phía máy khách Nổi tiếng là javascript Kế đến là vbscript và PerlScript Vì tài liệu này chủ yếu tập trung vào PHP - ngôn ngữ script chạy trên máy chủ, nên chi tiết ngôn ngữ này không nhắc đến tài liệu Riêng javascript, các bạn có thể tìm thấy các tài liệu tiếng Việt qua trang tìm kiếm Vinaseek.com Nếu có thời (4) gian, tôi khuyên các bạn nên tìm hiểu chúng Rất nhiều xảo thuật bắt mắt có thể tìm thấy các đoạn mã này Lập trình Script máy chủ Trái ngược với lập trình Script máy khách (thực thi mã lệnh máy khách), lập trình script máy chủ cho phép thực thi các đoạn mã trên máy chủ Không các đoạn mã script hoạt động máy khách, các tài liệu có chứa các đoạn mã script phía máy chủ thường lưu các file tài liệu có đuôi mở rộng riêng biệt, và các đoạn mã thi hành trên máy chủ phải đặt cặp thẻ đặc biệt tuỳ theo quy định chương trình xử lý Chú ý loại ngôn ngữ server script có chương trình xử lý riêng Chẳng hạn các đoạn mã ASP thường đặt các file *.asp, và chúng xử lý file ASP.dll Chi tiết cách thức hoạt động loại này, có thể tóm tắt sau: - Bước 1: Client gửi yêu cầu đến máy chủ - Bước 2: Web server kiểm tra xem yêu cầu đó cần loại tài liệu nào Nếu đó là loại tài liệu có chứa các đoạn mã server script, nó triệu gọi chương trình xử lý tương ứng với loại tài liệu đó - Bước 3: Chương trình xử lý thực thi các đoạn mã server script tài liệu đó, và trả kết (thường là khuôn dạng HTML) cho web server - Bước 4: Web server trả kết tìm cho Client và ngắt kết nối Bài 2: Cài đăt web server Apache, MySQL và PHP Cài đặt giao thức TCP/IP Các dịch vụ web server dựa trên giao thức TCP/IP Vì trước cài đặt server, ta phải tiến hành cài đặt giao thức TCP/IP Để cài đặt giao thức TCP/IP, ta vào Control Panel, chọn Network Nếu thấy dòng chữ TCP/IP đã xuất ô Configuration, tức là giao thức TCP/IP đã cài đặt trên máy Còn không, ta kích chuột vào Add Hộp thoại Select Component hiển thị Kích chọn tiếp Protocol -> Add Trong danh sách bên trái, chọn Microsoft Sau đó sang danh sách bên phải, chọn TCP/IP Bấm Enter để bắt đầu quá trình cài đặt Trong quá trình cài đặt, máy tính bạn chưa có card mạng thì hệ thống yêu cầu cài trình điều khiển card mạng nào đó Đừng lo, chọn đại theo dẫn xong thôi (5) Sau cài đặt xong, mở cửa sổ Command Prompt Gõ lệnh C:\ping 127.0.0.1 Nếu thấy có dòng chữ có dạng: Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx tức là giao thức TCP/IP đã cài đặt thành công Ghi chú: Dãy số 127.0.0.1 chính là địa IP mặc định chính máy tính bạn sử dụng Bạn có thể sử dụng cái tên localhost thay cho địa IP 127.0.0.1 để truy cập vào máy tính chính mình Cài đặt web server, PHP, MySQL: (xem: http://thuvienit.org/forum/forum_posts.asp?TID=1765) Một số thông tin hệ thống: - Thư mục gốc ảo: Là thư mục www hệ thống Đây là thư mục gốc Apache Mọi địa URL gửi lên server phân tích thành đường dẫn tương ứng với đường dẫn thư mục gốc ảo trên - Thư mục liệu MySQL: Nằm thư mục /mysql/data Trong thư mục này, MySQL lưu trữ các CSDL (Database) dạng các thư mục, bảng CSDL ghi file riêng biệt - Để thao tác với CSDL MySQL, các bạn có thể mở trình duyệt và vào phpMyAdmin - Để xem các thông tin hệ thống, các bạn mở trang phpinfo.php Bài 3: Lịch sử phát triển các ứng dụng trên Web server: ASP, JSP và PHP Lịch sử phát triển các ứng dụng trên Web server ASP, JSP và PHP Vài năm trước đây, đường thực để vận chuyển các liệu động tới trang Web là kỹ thuật CGI (Common Gateway Interface) Các chương trình CGI cung cấp (6) liên hệ đơn giản để tạo các ứng dụng Web cho phép tiếp nhận các liệu nhập vào, các yêu cầu truy vấn sở liệu từ phía người dùng và trả vài kết cho trình duyệt Các chương trình CGI có thể viết trên vài ngôn ngữ, đó phổ biến là Perl Web server sử dụng CGI là cổng truy cập chặn yêu cầu người dùng và liệu yêu cầu Nó nạp vào nhớ chương trình bình thường Thông thường các web server chuyển các yêu cầu và triệu gọi chương trình CGI Sau chương trình kết thúc, web server đọc liệu trả từ chương trình và gửi nó đến trình duyệt Nhược điểm lớn kỹ thuật CGI là nó hoạt động kém hiệu Mỗi web server nhận yêu cầu, tuyến trình tạo Mỗi tuyến trình lại chứa nó các đoạn mã lệnh, liệu… và không chia sẻ lẫn nhau, đó gây lãng phí nhớ Để khắc phục nhược điểm này, Microsoft và Netscape đã hợp tác và đưa cải tiến đáng kể là chuyển chúng dạng các file thư viện liên kết động (DLL ), cho phép chia sẻ mã lệnh các tuyến trình Đây chính là các kỹ thuật ISAPI và NSAPI Đen đủi thay, các kỹ thuật dựa trên DLL không phải là đã hoàn thiện Chúng còn số vấn đề: - Khi các thư viện tảng gọi, muốn thoát các ứng dụng này, ta phải tắt chương trình triệu gọi (Web server) và khởi động lại máy tính - Các thư viện cần đặt các tuyến trình bảo vệ, tức là chúng cần phải cảnh giác cách sử dụng các biến chung các biến tĩnh - Nếu chương trình triệu gọi gây lỗi truy cập, nó có thể dẫn đến tình trạng server bị treo tắc tử - Và cuối cùng: đã dịch các file DLL, công việc gỡ lỗi bảo trì mã lệnh trở nên vất vả hết Kỹ thuật Web Microsoft, kết hợp HTML, các đoạn Script, các thành phần xử lý phía server cùng file, gọi là ASP (Active Server Pages), với phiên là ASP.Net ASP triệu gọi thư viện liên kết động gắn với các Web server Microsoft Về chất, ta có thể coi ASP là ngôn ngữ thông dịch Một trang ASP có thể sử dụng HTML, JScript và vbscript Qua các đoạn mã nhúng này, ASP có thể truy cập đến các thành phần phía server Các thành phần này có thể viết trên ngôn ngữ nào hỗ trợ các thành phần COM Microsoft Và đây chính là sức mạnh ASP: Nó có thể làm cái gì mà máy chủ có thể làm với các thành phần COM Sau thi hành, ASP sản sinh trang Web có khuôn dạng HTML và trả nó cho Web server (7) Một bất lợi lớn ASP là nó có thể hoạt động trên các họ Web server Microsoft (bao gồm PWS trên Win9x hay IIS trên WinNT/2000/XP) Các nhà phát triển hướng đến môi trường khác Unix/Linux (hiện đã có Chili! ASP chạy trên các môi trường này), kết thì còn phải đợi thêm thời gian Trước vào tìm hiểu lịch sử PHP, có lẽ chúng ta phải nhắc đến tên tuổi khác là Java Server Pages hay JSP Giống ASP, trang JSP cho phép chứa HTML, các đoạn mã Java và các thành phần Java Bean và chúng thực các công việc để sản sinh trang Web để gửi Client Bất lợi chính loại này là phải kèm với "máy ảo Java", vốn không coi là nhanh mặt tốc độ Lịch sử PHP PHP - viết tắt PHP Hypertext Preprocessor - định nghĩa đệ quy khó hiểu! Vào khoảng năm 1994, Rasmus Lerdorf đưa số đoạn Perl Script vào trang Web để theo dõi xem đọc tài liệu ông ta Dần dần, người ta bắt đầu thích các đoạn Script này và sau đó đã xuất gói công cụ có tên là "Personal Home Pages" (nghĩa đầu tiên PHP) Ông ta đã viết chế nhúng và kết hợp với số công cụ khác để phân tích đầu vào từ các mẫu biểu HTML: FI, Form Interpreter hay Phiên dịch mẫu biểu, tạo theo cách đó và đặt tên là PHP/FI hay PHP2 Nó hoàn thành vào khoảng năm 1995 Sau đó, người ta bắt đầu sử dụng các công cụ này để xây dựng thứ rắc rối hơn, và đội ngũ phát triển đã thay đổi từ người thành nhóm các nhà phát triển nòng cốt dự án, và nó đã tổ chức hoá Đó là bắt đầu PHP3 Đội ngũ các nhà phát triển (Rasmus Lerdorf, Andi Gutmans, Zeev Suraski, Stig Bakken, Shane Caraveo và Jim Winstead) đã cải tiến và mở rộng máy nhúng và bổ sung thêm số hàm API đơn giản cho phép các lập trình viên khác tự bổ sung nhiều tính vào ngôn ngữ cách viết các module cho nó Cấu trúc ngôn ngữ đã tinh chế, kết cấu thân thiện người đến từ các ngôn ngữ hướng đối tượng hay các ngôn ngữ hướng thủ tục Nếu bạn đã biết vài ngôn ngữ lập trình khác thì đến với PHP, bạn không cảm thấy khó khăn Phiên thời điểm này là PHP 5.0.1 Các bạn có thể tham khảo chi tiết trang web PHP: Hypertext Preprocessor Bài 4: Chương trình PHP đầu tiên: Hello World! I Khởi đầu Nếu các bạn đã học lập trình, các bạn biết "Hello world!" là cái gì, còn bạn nào chưa biết, thì tôi giải thích đây: (8) "Hello world!" là chương trình dành cho người bắt đầu học ngôn ngữ lập trình nào đó Chương trình này đơn giản viết dòng chữ "Hello world!" màn hình Các bạn có thể bỏ qua nó đã biết từ trước, còn bạn nào chưa học, thì chúng ta bắt tay vào viết chương trình này PHP nhé Hãy mở NotePad ra, gõ vào nội dung sau: Line ASP CODE -:- Thư Viện Chia Sẻ IT Việt Nam 1234567- <HTML> <BODY> <?php echo ("Hello world!"); ?> </BODY> </HTML> Line ASP CODE -:- Chú ý: Khi code bạn phải đổi các dấu {} thành [], “” thành '''' OK, Save lại với cái tên test.php Copy nó vào thư mục gốc (Root Directory) mặc định Web server Khởi động Web server Apache lên (nó hiển thị cửa sổ đen ngòm, bạn để đó, đừng tắt nó đi, vì tắt thì tức là bạn đã tắt chương trình Web server Apache đấy) Bây mở trình duyệt ra, ô địa chỉ, gõ nội dung sau: "http://127.0.0.1/test.php" (nhớ bỏ hai dấu ngoặc kép nhé) Nó hiển thị cửa sổ trình duyệt với dòng chữ Hello world! Chắc bạn thất vọng hả? Vâng, nó có dòng chữ "Hello world!" trên màn hình trình duyệt, mà bạn có thể làm nó đơn giản nhiều, chẳng cần đến cái PHP OK Đừng thất vọng vội Chương trình này hoạt động nào? Trước tiên chúng ta hãy tìm hiểu cách thức hoạt động hệ trình duyệt (Web Client) và máy chủ cung cấp dịch vụ Web (Web server ) đã nhé: Bước 1: Trình duyệt gửi yêu cầu HTTP đến máy chủ, yêu cầu file nào đó Bước 2: Máy chủ chuyển yêu cầu này đến chương trình xử lý tương ứng, chính là chương trình Web server (9) Bước 3: Web server phân tích chuỗi yêu cầu nhận được, kiểm tra xem trình duyệt máy khách yêu cầu gì Nếu đó là các file bình thường (không phải là các file chứa các đoạn mã script thực thi phía máy chủ), nó tìm kiếm file đó và trả cho trình duyệt máy khách Còn đó là các file chứa các đoạn mã script thực thi phía máy chủ (các chương trình CGI, hay các file thư viện liên kết động ISAPI, các file *.asp hay *.php), nó triệu gọi chương trình thực thi các đoạn mã này Chương trình này chịu trách nhiệm chạy các đoạn mã, trả chúng cho Web server khuôn dạng HTML Sau đó, Web server trả kết lấy cho trình duyệt Như vậy, chương trình bạn phải thực thi trên máy chủ, sau đó trả cho trình duyêt Và đây chính là cái gọi là "Trang Web động" Không các trang web tĩnh, trang web động cho phép bạn có tương tác với máy chủ thông qua các đoạn script thực thi phía server Nhờ có tương tác này, bạn có thể truy xuất sở liệu, lấy thông tin người sử dụng, điều khiển các hoạt động khác OK Bây bạn đã có chút ít kiến thức với các hệ thống điều khiển Web Client - Server Đến lượt chúng ta bắt đầu phân tích chương trình đầu tiên II Phân tích chương trình Quay trở đoạn mã trên Điều đầu tiên các bạn cần phải biết, đó là các đoạn mã thực thi PHP luôn luôn đặt thẻ <?php ?> Chương trình xử lý phía máy chủ thực thi các đoạn mã nằm thẻ này Tất các đoạn mã khác nằm ngoài thẻ trên không xử lý trực tiếp trên server mà đưa trình duyệt <?php // Đoạn mã PHP đặt đây ?> Điều thứ bạn cần biết là chương trình bạn phải đặt các file *.php Nếu bạn đặt nó vào file khác, thì đừng mong nó chạy nhé, vì nguyên tắc chương trình Web server là triệu gọi các chương trình xử lý tương ứng với các file có đuôi xác định trước Điều thứ bạn cần biết là file *.php bạn, ngoài các đoạn script PHP, bạn có thể đặt cái gì theo khuôn dạng HTML, kể các đoạn javascript chạy trên máy khách Tức là ngoại trừ các đoạn script PHP thì nó không khác gì file HTML thông thường Điều thứ các bạn cần biết, là chúng ta có thể đặt nhiều đoạn mã xử lý PHP khác cùng file PHP Các đoạn mã PHP này thực thi từ đầu file xuống Hãy xem ví dụ sau: CODE -:- Thư Viện Chia Sẻ IT Việt Nam (10) <HTML> <BODY> <?php echo ("Hello world!"); ?> <BR> Xin chao tat ca cac ban, day la chuong trinh PHP dau tien cua toi <?php echo ("<p align=right> CMXQ </p>") ?> </BODY> </HTML> Khởi đầu, chương trình xử lý phía Web server phân tích file PHP này, trả đoạn mã <HTML> <BODY> Tiếp theo, thấy đoạn mã thứ nhất, nó thực thi và trả dòng "hello, world" (Dòng này hàm echo() PHP thực hiện) Sau đó, nó tiếp tục trả các dòng <BR> Xin chao tat ca cac ban, day la chuong trinh PHP dau tien cua toi Đến gặp đoạn PHP thứ 2, nó thực thực thi đoạn mã thứ này (gọi hàm echo()) và trả kết quả: "<p align=right> CMXQ </p>" Hết đoạn mã thứ Nó gửi tiếp phần còn lại file cho Web server Sau đó, Web server chính thức trả toàn kết cho trình duyệt Điều quan trọng cuối cùng: Kết thúc câu lệnh PHP là dấu chấm phẩy (";"), ngoại trừ vài trường hợp (các bạn biết sau này) Bây tôi xin giải thích cách sử dụng hàm bài này: echo() Hàm echo sử dụng để trả nội dung các biến, hằng, chuỗi cho trình duyệt Ở ví dụ trên, hàm echo trả chuỗi "hello, world" và chuỗi "<p align=right> Le Nguyen Sinh </p>" Các thẻ HTML chuỗi giữ nguyên nó đưa trình duyệt, và nó xử lý các thẻ HTML khác III Một số lưu ý (11) Dấu chú thích: Các đoạn chú thích hữu dụng các chương trình bạn (chẳng hạn muốn chú thích câu lệnh này làm gì, đoạn chương trình này làm gì ) Khi phân tích mã PHP, các đoạn chú thích bị bỏ qua, lập trình viên thì không bỏ qua chúng Chúng ta có thể sử dụng số dấu chú thích sau PHP: // dòng văn chú thích (chỉ áp dụng trên dòng) /* Đoạn văn chú thích */ (nằm cặp /* và */ Lưu ý các dấu chú thích này có hiệu lực các đoạn mã nhúng PHP thôi nhé Ví dụ echo("Tôi là oan hồn vô danh"); // Hiển thị lời giới thiệu lên màn hình echo (" Sơ yếu lý lịch"); /* Hiển thị sơ yếu lý lịch Copyright © by CMXQ */ echo ("Tên đầy đủ: XXXXXXX"); echo ("Ngày sinh: XXXX"); ?> Ký tự giải phóng Hãy chú ý đến dòng chữ sau: My name's "CMXQ" Để in nó màn hình, các bạn làm sau: echo("My name's ""CMXQ""); ?> Rất tiếc là bạn đã nhầm PHP có quy định số ký tự đặc biệt (Dấu ngoặc kép (") là các ký tự đó) Một vài phiên web server gặp lỗi này đã không thực nữa, và thông báo lỗi đến người dùng Còn vài phiên khác, nó tự động chèn dấu sượt chéo (/) trước ký tự gây lỗi này Một dấu gạch chéo (\) trước ký tự gây lỗi khiến cho nó đối xử là ký tự thông thường, không phải là ký tự đặc biệt Ký tự này (\) gọi là ký tự giải phóng (Escaping character) (12) Đoạn mã đúng sau: <?php echo ("My name's: \"CMXQ\""); ?> Dưới đây là số các ký tự đặc biệt mà có thể rõ với ký tự giải phóng gạch chéo Ký tự nối tiếp Nghĩa \' Dấu móc lửng (') \" Dấu móc kép (") \\ Dấu gạch chéo (\) \$ Dấu $ \n Ký tự tạo dòng \r Ký tự đầu dòng \t Ký tự Tab Hãy xem ví dụ đây (yêu cầu bạn tự tìm hiểu và phân tích mã nguồn) $name="Tiến Tùng"; echo("Giá trị biến \$name là $name); ?> OK Đến bây giờ, bạn đã biết chút PHP Hãy viết vài chương trình PHP, sử dụng hàm echo đã nhé Nhớ chú ý cách thức xử lý các kết trả Hẹn gặp lại các bạn bài sau Bài 5: Hằng và biến PHP Hằng và biến Nếu các bạn chưa học lập trình, các bạn còn xa lạ với và biến OK, No Star where - Giống toán học, số xác định giá trị thông qua tên số, Tin học Môt số xác định giá trị toàn chương trình Người ta có thể sử dụng giá trị này thông qua tên số đó chương trình (13) - Tương tự biến Một biến lập trình sử dụng để lưu trữ giá trị nào đó thông qua tên biến Sở dĩ người ta gọi nó là biến, vì không số (giữ nguyên giá trị toàn quá trình chạy chương trình), người ta có thể thay đổi giá trị biến số thông qua các phép gán Để tạo điều kiện dễ dàng quá trình phân tích liệu, PHP quy định từ nào có dấu $ trước là tên biến Ví dụ: $ten xác định biến có tên là ten $custome_name: xác định biến có tên là $custome_name Bạn cần biết tên biến là chuỗi các ký tự bao gồm các chữ số, chữ cái (a z) và dấu gạch ( _ ) Và PHP quy định phân biệt các biến chữ hoa và chữ thường là khác CHẳng hạn $ab và $Ab là biến hoàn toàn khác Một điểm cần lưu ý khác là không đặt tên biến bắt đầu các chữ số (0 9) Do quy định các chuỗi ký tự có chứa dấu $ trước là tên biến, nên PHP tự động khởi gán giá trị các biến này là rỗng (đối với kiểu liệu văn bản) kiểu liệu số Bạn biết đến các kiểu liệu sau này Để gán giá trị cho các biến, bạn sử dụng câu lệnh gán sau: $tên_biến = giá trị cần gán; Ví dụ: $nam_sinh=1980; $ho_ten="CMXQ"; Các bạn chú ý đến ví dụ tôi nhập liệu: cái thì nằm cặp dấu ngoặc kép thị biến đó chứa liệu theo kiểu xâu, còn cái thì không nằm cặp dấu ngoặc kép thị biến đó chứa liệu kiểu số Bạn biết chi tiết sau đây: (14) Các kiểu liệu PHP PHP có kiểu liệu bản: Integer, double và string Ngoài còn số kiểu liệu khác, đượ xây dựng dựa trên các kiểu liệu trên, mảng, object, mà chúng ta đề cập đến sau Tất các biến định kiểu liệu, và chúng ta đã nói trên, giá trị chúng có thể bị thay đổi quá trình sử dụng Kiểu giá trị Integer sử dụng byte nhớ Đây là kiểu giá trị nguyên (không phải là số thực) và có giá trị nằm khoảng từ -2 tỷ đến tỷ Kiểu liệu double là kiểu liệu số thực, cho phép chứa các số thưc Kiểu String sử dụng để chứa các liệu là các ký tự văn bản, ký tự đặc biệt và các chữ số Dữ liệu kiểu string đặt cặp dấu ngoặc kép ("") định xâu (hay còn gọi là chuỗi ký tự) Ví dụ: 2: Kiểu integer; 2.0: kiểu double "2": Kiểu xâu "2 gio": Kiểu xâu 3.Định nghĩa Hàm define() sử dụng để tạo số: Hàm này có cấu trúc sau: define ("tên_hằng","giá trị hằng"); Ví dụ: (15) define ("COMPANY","NS Co.Ltd");// Định nghĩa COMPANY với giá trị là "NS Co Ltd" define ("diem_so",4.5);// định nghĩa diem_so với giá trị là 4.5 (hic thi lại ); Sau số tạo ra, ta có thể sử dụng chúng thay cho giá trị chúng: echo ("Tên công ty: ".COMPANY); Điều này tương đương với echo ("Tên công ty: NS Co Ltd"); Một số xây dựng sẵn (built in constant) PHP có chứa số xây dựng sẵn TRUE và FALSE là đã dựng sẵn với định true (1) và false (=0 xâu rỗng) Hằng số PHP_VERSION định phiên phân tích PHP mà bạn dùng Hằng PHP_OS định hệ điều hành server mà trình phân tích PHP chạy echo (PHP_OS); // in màn hình "Linux" (ví dụ) _FILE_and_LINE_ trả tên đoạn script (đoạn mã nhúng) phân tích dòng thời đoạn mã script PHP còn cung cấp số hàm để thông báo lỗi E_ERROR, E_WARNING, E_PARSE và E_NOTICE Ngoài ra, PHP còn cung cấp số biến cung cấp thông tin môi trường PHP sử dụng Để xem các thông tin này,bạn có thể dùng hàm phpinfo() sau: (16) <HTML> <! phpinfo.php > <BODY> <?php phpinfo(); ?> </BODY> </HTML Lừa kiểu và ép kiểu liệu Như chúng ta đã biết, tất các biến PHP có kiểu liệu riêng Kiểu liệu biến tự động xác định giá trị đặt vào biến $a=1 // $a là kiểu integer $a=1.2 // Bây giờ, nó là kiểu double $a="1" // Và bây nó là kiểu string a) Chuyển kiểu chuỗi và lừa kiểu liệu Nếu bạn làm các thao tác tính toán số trên chuỗi, PHP tính toán chuỗi là số Điều này biết đến với cái tên gọi là "chuyển kiểu chuối (String conversion), mặc dù giá trị chuỗi nó có thể không cần phải thay đổi Trong đoạn ví dụ sau, biến $str xác định là chuỗi: $str="756300 không có"; (17) Nếu chúng ta cố cộng thêm giá trị nguyên là vào biến $str, biến $str tự động tính với số nguyên 756300: $x=4+$str;//$x =756304 Nhưng thân giá trị biến $str không thay đổi echo ($str); // In màn hình chuỗi "756300 không có" Chuyển kiểu chuỗi phải tuân theo nguyên tắc sau: - Chỉ chuỗi bắt đầ là xâu các chữ số Nếu chuỗi bắt đầu giá trị số hợp lệ, chuỗi này xác định giá trị nó, trường hợp khác, nó trả VD: chuỗi "35 tuổi" ước lượng là 35, chuỗi "tuổi 35" xác định giá trị - Một chuỗi xác định là giá trị kiểu double giá trị kiểu double miêu tả bao gồm toàn chuỗi Chuỗi "3.4", "-4.2" ước lượng giá trị thực 3.4 và -4.2 Nếu ký tự không phải là ký tự kiểu số thực đưa vào chuỗi, giá trị chuỗi đó ước lượng là số nguyên Chuỗi "3.4 dollar" thành số nguyên Trong việc cộng với chuỗi chuyển kiểu, PHP thực "lừa kiểu" kiểu số Nếu bạn thực phép toán số học kiểu thực và kiểu nguyên, giá trị là số thực $a=1 //$ a là số nguyên $b= 1.0 //$b là số thực $c=$a+$b //$c là kiểu số thực , = 2.0 $d = $c+"6th" //$d là kiểu số thực = 8.0 (18) Ép kiểu liệu Ép kiểu liệu cho phép bạn thay đổi kiểu liệu biến $a=11.2// $a là kiểu thực $a=(int)$a// Bây giờ, $ a là kiểu nguyên, giá trị = 11 $a= (double) $a// Bây $a lại trở kiểu thực = 11.0 $b= (string)$a// $b là giá trị kiểu chuỗi ="11" Ngoài ra, chúng ta còn phép ép kiểu (array) và (object) (integer) tương đương với (int); (fload) và (real) tương đương với (double) Một số hàm tiện ích khác PHP có số hàm hỗ trợ làm việc với các biến - Hàm gettype($ten_bien) xác định kiểu biến Nó trả các giá trị: "integer", "double", "string", "array", "object", "class", "unknown type" (Chúng ta tìm hiểu kỹ vể mảng (array) và kiểu đối tượng (object) các bài sau Ví dụ: echo(gettype($name)); - Hàm settype($ten_bien,"kieu_du_lieu") đặt kiểu liệu cho biến $ten_bien Kiểu liệu viết dạng chuỗi, và có thể có các kiểu sau: "integer", (19) "double", "string", "array", "object" Nếu kiểu liệu không đặt, giá trị false trả về, còn thành công, nó trả giá trị true VD: $a=7.5; //$a là kiểu thực settype($a,"integer"); // bây nó là số nguyên có giá trị - Hàm isset($ten_bien) sử dụng để xác định xem biến $ten_bien đã đặt giá trị nào đó hay chưa Nếu biến đó đã có giá trị, hàm trả true Trong truờng hợp ngược lại, hàm trả giá trị false; - Hàm unset($ten_bien) sử dụng để huỷ bỏ biến $ten_bien, giải phóng nhớ bị chiếm dụng biến đó CSS (Cascading Style Sheet) - Định kiểu trình bày trang HTML Trước đọc bài này các bạn cần có kiến thức WWW, HTML cùng kỹ để làm trang web CSS là gì? - CSS: Cascading Style Sheet: Đây là mẫu để quy định cách thức thể các thẻ HTML Bạn có thể xem ví dụ cách thức thể các thẻ này CSS in Action - CSS có cách sử dụng: + Sử dụng trực tiếp kèm với các thẻ HTML (Inline Style Sheet) + Định nghĩa trang web (Internal Style Sheet) + Định nghĩa thành file CSS riêng (External Style Sheet) - Style đưa vào HTML 4.0 để giải số vấn đề - CSS giúp bạn tiết kiệm nhiều thời gian và công sức cho việc thiết kế web - Bạn có thể định nghĩa nhiều style vào thẻ HTML (20) Style (mẫu định dạng) giải số vấn đề chung: - Ta biết các thẻ HTML chuẩn thiết kế để định nghĩa nội dung văn Đầu tiên các thẻ HTML hỗ trợ cách viết "Đây là tiêu đề", "Đây là đoạn", "Đây là bảng" cách sử dụng các thẻ <H1>, <P>, <TABLE> Cách bố trí văn này qui định trình duyệt web và không có thẻ nào để định dạng văn - Đến các trình duyệt hệ sau đặc biệt là Nescape và Internet Explorer tiếp tục đưa thêm vào các thẻ HTML cùng các thuộc tính định dạng riêng mình (như các thẻ <FONT> và thuộc tính Color ) Do đó ngày càng khó để tạo web site mà nội dung nó bị tách rời khỏi cách bố trí - Để giải vấn đề này World Wide Web Consortium (W3C) đã tạo STYLE để đưa thêm vào HTML 4.0 - Cả hai trình duyệt lớn là Nescape Và Internet Explorer hỗ trợ CSS CSS giúp bạn tiết kiệm nhiều thời gian và công sức cho việc thiết kế web - Style phiên HTML 4.0 (phiên chúng ta dùng) qui định cách thức thể các thẻ HTML tương tự thẻ <FONT> hay thuộc tính COLOR HTML 3.2 Style thường lưu các file nằm ngoài trang web Chúng giúp bạn có thể thay đổi cách thức định dạng và cách bố trí các trang web cách thay đổi riêng file CSS Chỉ bạn muốn thay đổi lại toàn màu sắc, cách định dạng các tiêu đề, nội dung bạn hiểu rõ tác dụng thực CSS - CSS cho phép chúng ta điều khiển cách định dạng và cách bố trí cùng lúc nhiều trang web với lần thay đổi vị trí Là người thiết kế web, bạn có thể định nghĩa file CSS cho các thẻ HTML và áp dụng nó vào nhiều trang web mà bạn muốn Để thay đổi tổng thể các trang web này bạn đơn giản là thay đổi file CSS và tất các trang đã áp dụng thay đổi cách tự động Bạn có thể định nghĩa nhiều style vào thẻ HTML CSS cho phép bạn đưa các thông tin định nghĩa thẻ thông qua nhiều đường khác Style có thể qui định thẻ HTML, qui định trang web file CSS bên ngoài Thứ tự áp dụng các định dạng Như trên đã nói, ta có thể sử dụng nhiều cách khác để làm CSS Điều gì xảy bạn áp dụng nhiều cách định dạng cho thẻ HTML? Theo cách chung có thể nói các style bạn "xếp tầng" (cascade) Việc xếp tầng này tuân theo thứ tự sau: (Số là ưu tiên nhất, số là kém ưu tiên nhất) (21) Inline Style (Style qui định thẻ HTML cụ thể) Internal Style (Style qui định phần <HEAD> trang HTML ) External Style (style qui định file CSS ngoài) Browser Default (thiết lập mặc định trình duyệt) Như ta thấy các thiết lập thẻ HTML có mức ưu tiên cao nhất, Những gì định nghĩa đây bị bỏ qua tất các định nghĩa khác (như thẻ <HEAD>, File CSS ngoài, ) Cú pháp CSS Cú pháp CSS tạo nên thành phần: - Thành phần lựa chọn (thường là thẻ HTML) (Selector) - Thuộc tính (Property) - Giá trị (Value) Cú pháp CSS thể sau: Selector { Property1: Value1; Property2: Value2; } - Selector thường là các thẻ HTML mà bạn muốn định nghĩa thêm Property là thuộc tính mà bạn muốn thay đổi; thuộc tính cần phải có giá trị Một thuộc tính và giá trị nó phân cách dấu hai chấm (%3cgười%20%3chệ%3c Hai cặp thuộc (22) tính-giá trị phân cách dấu chấm phảy (%3chóc Toàn các cặp thuộc tính-giá trị thẻ HTML đặt cặp dấu ngoặc nhọn ({}) Ví dụ body{color: black} /*Phần chữ thẻ body có màu đen*/ hay: p {text-align: center} /*tất các thẻ <P> trang HTML canh giữa.*/ hay định nghĩa nhiều thuộc tính: p { text-align: center; color: red; font-family: arial } Nhóm các thẻ Trong trường hợp bạn muốn định nghĩa nhiều thẻ giống bạn có thể nhóm các thẻ lại Ví dụ đây nhóm tất các thẻ Header lại và định nghĩa chúng có màu xanh: h1,h2,h3,h4,h5,h6 { color: green } (23) Tạo các lớp Bằng việc tạo các lớp, bạn có thể định nghĩa nhiều kiểu thể khác cho cùng thẻ HTML và áp dụng lớp vào vị trí cần thiết trên trang web Các lớp gắn với thẻ cụ thể Ví dụ: Trên trang web bạn có loại đoạn văn: Đoạn văn canh lề trái, đoạn văn canh lề và đoạn văn canh lề phải Khi đó bạn có thể định nghĩa lớp riêng biệt cho loại đoạn văn này sau: p.trai {text-align: left} p.phai {text-align: right} p.giua {text-align: center} Tiếp theo, trang HTML bạn sử dụng sau: <p>Đoạn văn này canh lề trái.</p> <p>Đoạn văn này canh lề phải.</p> <p>Đoạn văn này canh lề giữa.</p> Chú ý: - CSS phân biệt chữ hoa và chữ thường giống C++ đó viết bạn cần phải cẩn thận việc sử dụng chữ hoa, chữ thường - Trong trang HTML, bạn phép khai báo thẻ thuộc lớp Trái điều này mặc dù trình duyệt không báo lỗi các lớp không hoạt động Ví dụ sử dụng lớp sai: (24) <p>Đây là đoạn định nghĩa sai</p> Các ví dụ trên là ví dụ việc tạo các lớp bị "gắn chặt" với thẻ nào đó, tức là ta không sử dụng lớp này thẻ khác Theo các khai báo trên, ví dụ đây không hoạt động: <td>Ví dụ này không hoạt động</td> Các lớp không gắn với thẻ cụ thể (có thể gắn với tất các thẻ): Rất đơn giản, bạn có thể tạo lớp mà lớp đó có thể gắn vào thẻ nào trên trang web cách bỏ tên thẻ đầu nhớ giữ lại dấu chấm (.) Ví dụ: Định nghĩa lớp "giua" có thể gắn với thẻ nào .giua{text-align="center"} và trang HTML ta sử dụng sau: <p>Đoạn văn này canh lề giữa.</p> <td>Câu này canh lề giữa.</p> Tạo các định danh (ID) Tương tự các lớp, các định danh cho phép chúng ta chia các thẻ thành nhiều loại khác Tuy nhiên trên thực tế thì Định danh khác với lớp!!! Một lớp có thể áp (25) dụng nhiều lần nhiều vị trí trên trang web, nhiên định danh có thể áp dụng cho thẻ và tên định danh phải là trên trang web Các ví dụ: Đoạn mã đây có thể áp dụng cho thẻ <P> có ID là para1 p#para1 { text-align: center; color: red } Khi sử dụng sau: <P>Đoạn văn bản</p> Đoạn mã đây có thể có hiệu lực cho thẻ đầu tiên có ID là xyz: *#xyz {color: green} Khi sử dụng: <p>Đoạn văn bản</P> Đoạn mã đây có thể áp dụng cho thẻ <P> đầu tiên: (26) p#wer345 {color: green} Khi sử dụng: <p>Đoạn văn bản</p> Và đoạn đây không có hiệu lực: <h1>Đoạn văn không áp dụng</p> Chú thích CSS Bạn có thể bổ xung các chú thích cho đoạn mã mình CSS Các đoạn chú thích trình duyệt bỏ qua Đoạn chú thích tạo tương tự C++ (đặt bắt đầu /* và kết thúc */) Ví dụ: /* Đây là đoạn chú thích*/ p { text-align: center; /* Và đây là đoạn chú thích khác */ color: black; font-family: arial (27) } Tạm thời đã, bây chúng ta xem ví dụ dùng CSS đây Trong các ví dụ này khung phái trên bên trái là đoạn mã HTML trang web, khung bên phải là mã CSS và phía là kết Ví dụ 1: CSS Example Ví dụ 2: CSS Example bài trên đã giới thiệu với bạn cách viết các mã định dạng CSS Bài này hướng dẫn bạn cách sử dụng các mã đã tạo Làm nào để chèn đoạn mã CSS vào trang web - Khi trình duyệt web đọc trang web bạn nó định dạng trang web theo cách CSS đã qui định cho nó - Theo bài đầu tiên đã đề cập, chúng ta có tất loại CSS dó đó chúng ta có cách để chèn CSS vào trang web mình Với External Style Sheet ( Sử dụng file CSS định nghĩa thành file riêng) Sử dụng External Style Sheet là cách lý tưởng ta cần phải định dạng nhiều trang web theo mẫu thống Với external Style Sheet chúng ta có thể thay đổi dáng vẻ trang web với việc thay đổi file Mỗi trang web sử dụng file CSS ngoài này phải sử dụng thẻ <LINK> Thẻ <LINK> đặt bên thẻ <HEAD> Ví dụ: <head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head> (28) Nếu trang web có đoạn mã trên thì hiển thị trang web trình duyệt đọc các style định nghĩa file mystyle.css và định dạng văn theo nó Nếu tên file bạn không phải là mystyle.css thì bạn cần đổi tên file thành tên file bạn Một file CSS có thể viết từ bất kì trình soạn thảo văn nào Trong file CSS chứa các định dạng, không bao gồm các thẻ HTML Một tệp CSS nên ghi với phần mở rộng là CSS Ví dụ đây thể toàn nội dung file CSS hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")} Với Internal Style Sheet (Định nghĩa các style sheet trang web) Trong trường hợp trang web bạn sử dụng các định dạng khác nhau, bạn hãy dùng Internal Style Sheet Để định nghĩa Internal Style Sheet bạn sử dụng thẻ <STYLE> đặt bên thẻ <HEAD> Ví dụ: <head> <style> hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")} </style> </head> Trình duyệt đọc đoạn mã này và định dạng trang web theo nó (29) Chú ý: - Thông thường trình duyệt bỏ qua đoạn mã mà nó không thể hiểu Điều đó có nghĩa là với các trình duyệt cũ chúng bỏ qua thẻ <STYLE> Tuy nhiên nó không bỏ qua nội dung bên thẻ này Điều đó có nghĩa là phần thông tin định nghĩa style bạn bị "phơi" hết lên trang web Do đó để giải vấn đề này bạn hãy sử dụng chú thích HTML để bao quanh các mã định nghĩa CSS Đoạn mã trên sửa lại thành sau: <head> <style> <!-hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")} > </style> </head> Với Internal Style Sheet (style qui định thẻ HTML) Khi sử dụng Internal Style Sheet là bạn đã đánh tác dụng to lớn CSS với việc trộn lẫn mã định dạng với nội dung trang Bạn nên sử dụng phương pháp này số trường hợp đặc biệt mà cách định dạng thẻ áp dụng lần trang web Sử dụng phương pháp này bạn đưa mã định dạng vào thẻ HTML cần thiết Các mã định dạng này có thể bao gồm thứ có thể dùng Internal Style Sheet và External Style Sheet Đoạn mã đây thay đổi màu sắc và lề đoạn trang web <p style="color: sienna; margin-left: 20px"> (30) This is a paragraph </p> Sử dụng nhiều Style Sheet Nếu cùng thẻ định nghĩa nhiều nơi thì thẻ này kế thừa tất các thuộc tính đã định nghĩa tất các vị trí Nếu các thuộc tính định nghĩa xung đột chúng lấy theo thứ tự ưu tiên đã đề cập đến bài Ví dụ: Một file style sheet ngoài định nghĩa thẻ <H3> sau: h3 { color: red; text-align: left; font-size: 8pt } Sau đó trang web sử dụng file CSS trên nó lại có phần định nghĩa cho thẻ <H3> sau: h3 { text-align: right; font-size: 20pt } Và kết thẻ <H3> định nghĩa là kết hợp định nghĩa trên và là: (31) color: red; text-align: right; font-size: 20pt rên đây chúng ta đã cùng thảo luận vấn đề chung việc sử dụng CSS Phần tôi xin giới thiệu với các bạn cách áp dụng CSS vào trường hợp cụ thể Điều quan trọng phần này các bạn cần nhớ đó là các thuộc tính, tác dụng và các giá trị có thể đặt vào thuộc tính này Áp dụng CSS với trang web Thuộc tính Background cho phép chúng ta điều khiển thành phần nào đó trên trang web Thành phần này có thể là trang, nút, ô textbox, Bạn thử tưởng tượng, chúng ta có thể đặt thuộc tính gì cho nền? CSS cho phép bạn lựa chọn thuộc tính sau: Nền là màu đồng hay là ảnh? + Trong trường hợp là màu đồng thì đó là màu gì? Xanh, đỏ, + Trong trường hợp đó là ảnh: - Ảnh đó là ảnh nào? - Ảnh đó xếp nào Các lựa chọn CSS cho phép qui định sau: * Thuộc tính background-color: - Ý nghĩa: Cho phép đặt màu là màu đồng nào đó - Các giá trị: + Bộ màu RGB (RGB(255,0,0): Màu đỏ; RGB(0,255,0): Màu xanh lá cây, ) + Màu qui định số HEX (#FF0000: Màu đỏ; #00FF00: Màu xanh lá cây, ) + Màu đặt tên từ tiếng Anh (red: đỏ; green: xanh lá cây, ) + transparent: Trong suốt (có thể nhìn xuyên qua đối tượng có màu suốt được) (32) Ví dụ: tạo lớp áp dụng nó thì đối tượng có màu đỏ MauNenDo {background-color: #FF0000} * Thuộc tính backround-image đặt ảnh có sẵn làm - Các giá trị: + url(địa chỉ): lấy ảnh định "địa chỉ" làm + none: Không có ảnh Bài 7: Các câu lệnh gán và rẽ nhánh PHP OK, bây chúng ta chuẩn bị làm việc với các câu lệnh "xương sống" ngôn ngữ lập trình Nếu bạn nào đã học qua ngôn ngữ lập trình nào đó, thì các bạn có thể đọc lướt qua phần này Còn bây bạn bắt đầu tiếp xúc với ngôn ngữ lập trình thì hãy chuẩn bị tinh thần Các câu lệnh ngôn ngữ lập trình Để lập trình giải bài toán nào đó, chúng ta phải sử dụng các câu lệnh sau: Lệnh gán: sử dụng để đặt giá trị vào biến nào đó Lệnh rẽ nhánh: Được sử dụng để xác định xem chương trình thực công việc gì điều kiện Lệnh lặp: Cho phép chương trình bạn tự động lặp lại các thao tác nào đó Quá trình xây dựng các bước để thực bài toán nào đó, gọi là quá trình xây dựng thuật giải Ví dụ: Hãy tưởng tượng bạn nhậu (33) Bước 0: chưa có say rượu Bước 1: Kêu chủ quán cho chai "cuốc lủi" (tạm thời là lệnh gán) Bước 2: Khi còn chưa hết chai thì nhày sang bước 3: Bước 3: Mỗi thằng chén, trăm phần trăm Bước 4: Nếu thằng nào xỉn, thì loại nó khỏi trận chiến (lệnh rẽ nhánh) Bước 5: Nếu tất xỉn: tàn (lệnh rẽ nhánh), còn không thì tiếp tục Bước 6: Nếu hết chai thì nhảy bước (Lệnh lặp) OK, đến thì bạn đã hiểu qua chút Bây chúng ta ứng dụng chúng vào PHP Phần các câu lệnh PHP chia làm bài là Các câu lệnh rẽ nhánh và các câu lệnh lặp Bài này tập trung vào việc xử lý câu lệnh gán và rẽ nhánh Lệnh gán Lệnh này đã học bài trước: Cú pháp: $ten_bien = gia_tri; Ví dụ: $ngay_sinh="1/4/1980"; $que_quan="Thanh Hoa"; $luong=300000; (34) Các câu lệnh rẽ nhánh Trong PHP có dạng rẽ nhánh: rẽ hai nhánh (if) và rẽ nhiều nhánh Lệnh rẽ nhánh là câu lệnh quan trọng tất các ngôn ngữ lập trình Nó cho phép bạn thực thi đoạn mã mà điều kiện định là đúng Trong PHP, lệnh rẽ nhánh có dạng sau: if (điều kiện) { công việc cần làm } Ví dụ: if ($name="Sinh") { echo ("Good morning, my boss"); } Nếu khối câu lệnh cần làm bao gồm dòng lệnh, ta có thể bỏ cặp dấu {} : if ($name="Sinh") echo ("Good morning, my boss"); Nhưng nhiều dòng lệnh, ta phải đưa chúng vào cặp dấu ngoặc {}: if ($name=="Sinh") { echo ("Good morning, my boss"); (35) echo ("Have a romantic day!"); } Đoạn lệnh trên kiểm tra điều kiện biến $name = "Sinh" thì nó hiển thị lời chào Còn không thì nó không làm gì cả! Điều kiện đặt vào có thể là đúng, có thể là sai, có thể là tổng hợp nhiều điều kiện Hãy xem ví dụ sau: if ("false" ) echo ("Khong co gi ca"); if (($name=="sinh") && ($pass=="test")) echo ($name "đã nhập đúng password"); Đoạn lệnh trên có thể viết tương đương với: if ($name=="sinh") { if ($pass=="test") echo ($name "đã nhập đúng password"); } Như bạn thấy trên, câu lệnh, chúng ta có thể chèn nhiều đoạn lệnh khác, người ta gọi đó là cấu trúc khối, tức là khối lệnh, có thể có chứa nhiều khối lệnh khác Nếu bạn phải đọc mã nguồn người khác, hi vọng bạn không bị hoa mắt vì hàng chục khối lệnh chen chúc vào Chúng ta có thể sử dụng các toán tử &&, || hay xor để kết nối các điều kiện với bạn thấy trên Câu lệnh rẽ nhánh đầy đủ: (36) Nếu điều kiện kiểm tra trả false (sai), PHP cho phép chúng ta định thực thi khối mã lệnh khác từ khoá else Ví dụ: if (($name=="sinh") && ($pass=="test")) { echo ("Good day, ".$name); } else { echo {"Sai mat khau!") } Chú ý đến ngoại lệ sau: Trước từ khoá else không có dấu chấm phẩy ( Lệnh rẽ nhiều nhánh: Với câu lệnh if, PHP cho phép chúng ta rẽ nhiều nhánh thông qua từ khoá elseif: if (dieu_kien1) { doan_lenh_1; } elseif (dieu_kien_2) (37) { doan_lenh_2 } elseif (dieu_kien_3) } // bao nhiêu từ khoá elseif else { doan_lenh_n } Ví dụ: if ($thu==2) { echo ("Chao co, van, su, ly"); } elseif ($thu==3) { echo (" Hoa, Sinh, Dia, GDCD"); } elseif ($thu==4) { echo ("KTCN, Van, Toan, Tieng Anh"); } elseif ($thu==5) (38) { echo (" Hoa, Toan, Van, Tin"); } elseif ($thu==6) { echo ("Toan, Van, Anh, Sinh hoat"); } else { echo ("Duoc di choi"); } Trong ví dụ trên, chúng ta đã lặp lặp lại thao tác kiểm tra giá trị biến $thu, mặc dù nó không thay đổi qua các dòng Để khắc phục dài dòng này, PHP cho phép ta sử dụng câu lệnh switch Câu lệnh này sử dụng để kiểm tra muốn xem xét qua nhiều giá trị biến: switch ($bien){ Case gia_tri 1: doan_lenh_1; Case gia_tri 2: doan_lenh_2; Case gia_tri n: doan_lenh_n; default: doan_lenh_khac; } (39) Ví dụ: switch ($thu){ case 2: echo ("Chao co, van, su, ly"); case 3: echo (" Hoa, Sinh, Dia, GDCD"); case 4: echo ("KTCN, Van, Toan, Tieng Anh"); case 5: echo (" Hoa, Toan, Van, Tin"); case 6: echo ("Toan, Van, Anh, Sinh hoat"); default: echo ("Duoc di choi"); } Câu lệnh switch ước lượng giá trị biến $thu, và so sánh nó với giá trị mệnh đề case Khi giá trị hợp lệ tìm thấy, nó thực câu lệnh tương ứng với giá trị đó Còn không, nó tự động thực câu lệnh mệnh đề default Hãy chú ý mệnh đề defaul là tuỳ chọn (bạn có thể có nó không cần nó) Bài 8: Lệnh điều khiển vòng lặp Lệnh điều khiển vòng lặp Điều khiển vòng lặp, tức là bạn điều khiển chương trình bạn tự động thực đoạn mã lệnh nào đó lặp lặp lại nhiều lần (lặp số lượng lần nào đó, lặp thoả mãn điều kiện nào đó) (40) PHP cung cấp cho chúng ta hai kiểu vòng lặp: vòng lặp while (lặp kiểm tra điều kiện, điều kiện thoả mãn) và vòng lặp for (xác định số lần lặp lại) a) Vòng lặp while Vòng lặp while là dạng vòng lặp đơn giản nhất, cấu trúc nó gần giống lệnh if: while (điều kiện) { //Khoi cau lenh can lap } Vòng lặp while ước lượng biểu thức giá trị kiểu boolean (đúng sai).Nếu giá trị biểu thức là false, đoạn mã cặp dấu ngoặc (đoạn mã cần lặp) bỏ qua và nhảy đến đoạn mã sau vòng lặp Nếu giá trị nó là true, đoạn mã cặp dấu ngoặc thực thi Khi bắt gặp dấu ngoặc ôm ("}") , điều kiện kiểm tra tính toán lại, và giá trị là true, đoạn mã ngoặc lại tiếp tục thực thi Chú ý điều kiện lặp tính toán thời điểm bắt đầu lặp Vì vậy, dù điều kiện lặp có bị thay đổi quá trình thực thi đoạn lệnh cặp dấu {} thì đoạn lệnh đó tiếp tục thực hết Muốn dừng lại vị trí xác định nào đó khối câu lệnh, chúng ta sử dụng lệnh break: Ví dụ1: Tính tổng từ đến 5: <?php $i=0; $tong=0; while ($i<=5) { $tong=$tong+$i; $i+=1; } (41) ?> Ví dụ 2: Đoạn mã sau hiển thị trên trình duyệt ô textbox (Với điều kiện bạn phải save nó file *.php : <HTML> <TABLE> <BODY> <?php $i=1; while ($i<=3) { ?> <TR><TD> <INPUT> </TD></TR> <?php $i+=1; } ?> </table> </body> </html> b Vòng lặp while (42) Vòng lặp này giống vòng lặp while, thay vì kiểm tra điều kiện vào lúc đầu đoạn lệnh cần lặp, thì nó lại kiểm tra giá trị điều kiện vào cuối vòng lặp Điều này có nghĩa là nó luôn luôn thực đoạn lệnh cần lặp ít lần Cấu trúc nó sau: { Đoạn (khối) câu lệnh cần lặp } while (điều kiện); Ví dụ: <HTML> <TABLE> <BODY> <?php $i=1; { ?> <TR><TD> <INPUT> </TD></TR> <?php $i+=1; }while ($i<=3); ?> (43) </table> </body> </html> Để xác định lại khác câu lệnh trên, đơn giản bạn việc thay điều kiện $i<=3 thành $i<1, bạn thấy hai kết khác liền Phần này dành cho bạn tự ngồi nghĩ OK??? Quên mất, lúc nãy tôi đề cập đến lệnh break, chưa cho ví dụ, bây chúng ta hãy xem xét ví dụ sau: Các bạn biết giai thừa là số lớn kinh khủng, và chương trình chúng ta tính toán n giai thừa, với số n gửi đến theo địa url: Nhanhoa.com - Offline (ở đó x là số người dùng tự nhập) Do giai thừa là số lớn, nên chúng ta cho phép người dùng tính đến tối đa là giai thừa chẳng hạn Nếu họ nhập lớn thì sao? Hãy xem đây: <HTML> <?php // Ghi lai voi ten file la giaithua.php $giaithua=1; $i=1; while ( $i<=$n) { $giaithua*=$i; $i+=1; (44) if ($i>8 ) { echo ("Chi tinh den 8! <BR>"); break; } } echo ("Ket qua la: ".$giaithua); ?> </HTML> Đoạn mã trên cho phép tính đến giai thừa, người dùng nhập số lớn thì máy hiển thị giai thừa, còn nhỏ thì chạy tốt c) Vòng lặp for Vòng lặp for, với ý nghĩa đầu tiên là lặp với số lần định trước, có cấu trúc sau: for ( $biến = giá_trị_đầu; $biến < (hay <=) giá_trị_kết_thúc; tăng_biến_đếm) { // Khối câu lệnh } Biểu thức $biến=giá_trị_đầu, đảm bảo biến gán giá trị khởi đầu (1) (45) Biểu thức $biến< (hay <=) giá_trị_kết_thúc, xác định xem biến đã đạt đến giá trị kết thúc (tức là điều kiện lặp không còn đúng nữa) chưa (2) Biểu thức tính toán tăng_biến_đếm đảm bảo để sau số lần lặp nào đó thì biểu thức xác định điều kiện (2) dẫn đến kết sai (để thoát khỏi vòng lặp) Ví dụ: for ( $i = 1; $i <10; ++$i) { echo ("Giá trị biến \$i là: ".$i); } Một biến dạng khác vòng lặp for, gần giống lệnh rẽ nhánh if và while: for (bieu_thuc_1; bieu_thuc_2; bieu_thuc_3): // Khối câu lệnh endfor; Ví dụ: <?php for ($i=1; $i<=10;++$i) ?> <TR><TD> <INPUT> </TD></TR> <?php endfor ?> Như các bạn đã học qua các lệnh php, và là các lệnh tất các ngôn ngữ lập trình (gán, rẽ nhánh và lặp) Sau này phải triển khai trên (46) các ngôn ngữ lập trình khác, cách viết các lệnh này có thể khác nhau, chất chúng thì mãi mãi không thay đổi (47)

Ngày đăng: 21/06/2021, 13:55