Giáo trình Lập trình Web động với PHP/MySQL (Phần 1)
Kiến trúc cơ bản
Kiến trúc căn bản nhất để trang Dynamic Web hoạt động được là nó phải làm việc
trên mô hình client/server. Nôm na là mỗi thứ client hay server đều đảm đương một
chức năng riêng để hoàn thành công việc chung đó là cho ra một trang Web động.
Các bạn có lẽ đã quen thuộc với chương trình WinWord để soạn văn bản, nó có thể
hoạt động độc lập trên bất kỳ máy tính nào chẳng cần quan tâm tới cái gì là client hay
cái gì là server. Ứng dụng Web thì khác hẳn, phải có một mô hình server có thể làmột máy tính làm server thôi, nhằm tập trung hoá việc xử lý dữ liệu. Còn các client,
còn được hiểu nôm na là máy tính của người sử dụng phải được nối mạng với server,
giả sử các máy này truy cập vào một Website chẳng hạn, thì có nghĩa họ đã truy cập
vào server, sau đó lấy dữ liệu từ server về thể hiện lên máy mình. Cùng một lúc có
thể có hàng trăm người (client) truy cập vào cùng một Website được xử lý tập trung
trên server, tương tự như một đám trẻ xúm nhau giành phần của mình từ một cái bánh.
Tóm tắt nội dung tài liệu: Giáo trình Lập trình Web động với PHP/MySQL (Phần 1)
LẬP TRÌNH WEB ĐỘNG VỚI PHP / MySQL GUESTBOOK CATALOG FORUM SHOPPING CART PHẦN 1 Tống Phước Khải (tổng hợp& biên dịch) Giới thiệu Chúng ta hãy thực hiện một chuyến đi thần thoại, trong chuyến đi này chúng ta sẽ khám phá ngoại hình cũng như nội tại của MySQL và PHP một cách thật tỉ mỉ. Đây là một cuộc hành trình đầy những thú vị và bất ngờ. Okie, có lẽ tôi có vẻ hơi lạc quan phải không các bạn. Nếu như bạn đồng quan điểm với tôi trên một phương diện nào đó, trong cuộc hành trình này bạn sẽ có ngay sự giúp đỡ mỗi khi gặp phải những sự nhàm chán. Hãy đối mặt sự thật ngay nhé: Trò chơi lập trình ứng dụng không phải lúc nào cũng dễ nuốt đâu. Trong bất kỳ cuộc thám hiểm nào thì chắc chắn các bạn sẽ phải có những giây phút nản lòng, đó là lúc gặp phải sự cố lỗi cú pháp hoặc đôi khi là những đoạn mã không cho kết quả như mong muốn. Nhưng ngoài những việc đó ra, tôi nghĩ là có một lý do thật chính đáng đến các bạn đến với chúng tôi ở đây. Lập trình Web đang là một cuộc chơi đầy hứa hẹn hiện nay cũng như tương lai. Bất kể bạn có kiến thức cơ sở lập trình cho bất kỳ loại ngôn ngữ nào như Visual Basic, Cobol, hay bạn chỉ biết về HTML và JavaScript, thì hôm nay bạn vẫn có cơ hội để nắm bắt các kinh nghiệm mới mẻ về lập trình ứng dụng Web. Tôi nghĩ là không có sự kết hợp nào tốt hơn giữa PHP và MySQL. Số lượng người sử dụng ngôn ngữ này càng gia tăng, PHP và MySQL đã trở thành rất thông dụng, những đòi hỏi lượng người biết các công cụ lập trình này cũng tăng theo. Một chút xíu nữa tôi sẽ nói rõ cho bạn biết tại sao lại phải sử dụng PHP và MySQL. Nhưng trước hết tôi muốn bạn hãy khảo sát qua kiến trúc sơ bộ của ứng dụng Web. Vì chỉ khi bạn nắm bắt được điều này thì tôi mới có thể tiếp tục trình bày chi tiết rằng tại sao PHP và MySQL là trung tâm của môi trường phát triển ứng dụng Web. Trước khi tiếp tục, tôi nghĩ rằng bạn đã đọc những gì tôi đã giới thiệu và hiểu nó. Chúng ta tiếp tục đi thôi! Kiến trúc cơ bản Kiến trúc căn bản nhất để trang Dynamic Web hoạt động được là nó phải làm việc trên mô hình client/server. Nôm na là mỗi thứ client hay server đều đảm đương một chức năng riêng để hoàn thành công việc chung đó là cho ra một trang Web động. Các bạn có lẽ đã quen thuộc với chương trình WinWord để soạn văn bản, nó có thể hoạt động độc lập trên bất kỳ máy tính nào chẳng cần quan tâm tới cái gì là client hay cái gì là server. Ứng dụng Web thì khác hẳn, phải có một mô hình server có thể là một máy tính làm server thôi, nhằm tập trung hoá việc xử lý dữ liệu. Còn các client, còn được hiểu nôm na là máy tính của người sử dụng phải được nối mạng với server, giả sử các máy này truy cập vào một Website chẳng hạn, thì có nghĩa họ đã truy cập vào server, sau đó lấy dữ liệu từ server về thể hiện lên máy mình. Cùng một lúc có thể có hàng trăm người (client) truy cập vào cùng một Website được xử lý tập trung trên server, tương tự như một đám trẻ xúm nhau giành phần của mình từ một cái bánh. Client (người Việt tạm đọc là klai-ờn) Các ứng dụng mà bạn phát triểân trên nền MySQL và PHP sử dụng tính năng single client đó là trình duyệt Web. Tuy nhiên, không phải đây chỉ là ngôn ngữ duy nhất để phát triển ứng dụng Web. Đối với những ứng dụng phức tạp đòi hỏi multi-client hoặc cần các tính năng bảo trì (chúng ta sẽ bàn tính năng này sau), thì ứng dụng Java applet sẽ hữu dụng cho việc này. Chỉ trừ trường hợp bạn cần sử dụng ứng dụng thời gian thực như ứng dụng chat chẳng hạn, thì bạn Java Applet mới cần thiết. Ở đây chúng ta không bàn tới lập ứng dụng cho chuyện tán gẫu mà chỉ tập trung vào ứng dụng duyệt Web nên không đụng chạm gì tới Java Applet cả. Như bạn đã biết ngôn ngữ khởi thuỷ cho việc duyệt Web là HTML. HTML cung cấp hàng tá những thẻ lệnh (Tag) cho phép thể hiện trang Web theo nhiều kiểu cách khác nhau. Nếu bạn chưa có kiến thức cơ sở về HTML thì có thể chạy ra ngoài mua ngay một quyển sách hoặc download trên internet xuống các bài học hướng dẫn. Bạn không nên bỏ ra quá nhiều thời gian để học về HTML. Ngoài HTML ra các trình duyệt Web còn cho phép các add-in hỗ trợ nhiều thứ khác như RealPlayer, Flash, Shockwave, hoặc hỗ trợ về Javascript hoặc XML. Nhưng ở đây chúng tôi chỉ tập trung trên những gì cần thiết cho sự hội nhập của bạn – đó là HTML. Server (người Việt tạm đọc là sơ-vơ) Hầu hết các ứng dựng Web đều hoạt động tập trung trên Server. Một ứng dụng đặc trưng gọi là Web Server sẽ đảm trách việc giao tiếp với các trình duyệt. Một Cơ sở dữ liệu (CSDL) trên Server sẽ lưu trữ tất cả những thông tin đáp ứng yêu cầu cho công việc của ứng dụng Web. Kế tiếp, bạn cần phải có một ngôn ngữ làm vai trò "chú bé liên lạc" giữa Web Server và CSDL trên server. Ngôn ngữ này cũng thực hiện các công việc xử lý thông tin đến và đi từ Web Server. MIDDLE WARE (PHP, ASP, JSP) DATABASE SERVER (MySQL, SQLserver..) WEB SERVER (Apache, IIS) INTERNET WEB BROWSER (Internet Explorer, Netscape) Và dĩ nhiên là các thứ này sẽ chẳng hoạt động được nếu như không chạy trên một Hệ Điều Hành (HĐH). Các thứ như Web Server, Ngôn ngữ lập trình, CSDL phải hoạt động tốt trên một HĐH nào đó. Hệ điều hành Có rất nhiều chủng loại HĐH. Windows 98/XP và Linux có lẽ rất phổ biến với tất cả mọi người. Có trường hợp bạn làm việc trên HĐH mà ít ai biết tới và bạn chỉ có ấn tượng thích sử dụng nó mà thôi. Hãy gác qua những ý tưởng đó nếu như bạn thật sự muốn đi trên con đường thiết kế web. Hãy trang bị cho mình kiến thức về HĐH WinNT /2000 /2003 và Unix đi. Việc làm này sẽ rất có ích hơn là chuyện bảo mọi người nên đi học một khoá về AS/400. Bạn sẽ sử dụng loại nào trong các thứ nói trên đây? Okie, đây là một câu hỏi hơn rắc rối đấy. Câu trả lời ở đây là tuỳ thuộc bạn là "tín đồ" của HĐH nào. Nếu như bạn vẫn chưa rõ ràng về điều này, hãy để tôi nói cho bạn nghe về "chiến tranh giáo phái HĐH". Nếu bạn chưa hiểu được tôi đang nói gì, thì đây là các kiến thức cơ bản: PHP và MySQL thuộc nhóm phần mềm ứng dụng có tên gọi là open source (nguồn mở). Việc này có nghĩa là người dùng sẽ xem được mã nguồn của các ứng dụng sử dụng PHP/MySQL. Chúng tận dụng được mô hình phát triển dựa vào nguồn mở, cho phép người nào cảm thấy thích nó đều có thể góp phần vào việc phát triển các dự án. Trong trường hợp của PHP, các lập trình viên trên toàn thế giới tham gia vào việc phát triển ngôn ngữ và không trông chờ một khoản lợi nhuận nào. Phần lớn những người tham gia công việc đều có niềm đam mê việc tạo ra một sản phẩm phần mềm tốt, họ sẽ cảm thấy thích thú khi thấy người khác sử dụng các công cụ của họ như tôi và bạn chẳng hạn. Phương pháp nguồn mở này ban đầu chỉ còn là những vòng lẩn quẩn mà thôi, nhưng về sau đã trở thành đầy tiềm lực khi có sự ra đời và trở nên phổ biến của bộ nguồn mở Linux. Hầu như các nguồn mở đều miễn phí, bạn có thể download, cài đặt và sử dụng chúng mà không cần phải đợi sự cho phép hay phải trả tiền cho bất kỳ ai. Phương thức này thì Microsoft, Oracle hay một số các công ty lập trình nào khác không thể đáp ứng được. Nếu bạn không phải là tín đồ của phái nguồn mở, thì hãy chọn công cụ được coi là béo bở: NT/2000/2003. Nếu công ty của bạn đã sử dụng sản phẩm của Microsoft nhiều năm rồi thì mọi việc sẽ trở nên dễ dàng nếu bạn muốn duy trì làm việc với môi trường này. Nếu bạn là thành viên của nhóm lập trình Visual Basic, có lẽ bạn sẽ gắn bó với NT/2000/2003. Ngay cả trong trường hợp này, không có trở lực nào ngăn cản bạn trong công việc phát triển với công cụ PHP và MySQL. Bạn cũng có thể thử nghiệm PHP/MySQL trên nền HĐH Windows 95, 98, XP. Web Server Chức năng của Web Server có vẻ không phức tạp mấy. Nó chỉ ở tại chỗ, chạy trên nền của HĐH, lắng nghe các yêu cầu ai đó trên Web gởi đến, sau đó trả lời những yêu cầu này, và cấp phát những trang Web thích ứng. Thực tế thì nó không quá đơn giản như vậy, bởi vì nhiệm vụ của Web Server là phải cung cấp tính ổn định cho môi trường Web cho nên đòi hỏi này phải được đáp ứng một cách rất nghiêm túc. Có nhiều loại Web Server khác nhau, nhưng chủ yếu trên thị trường chỉ thường sử dụng Apache và IIS (Internet Information Server của Microsoft). INTERNET INFORMATION SERVER (IIS) được gắn liền với môi trường Windows và nó là thành phần không thể thiếu của Active Server Pages (ASP). Nếu bạn chọn con đường của Microsoft thì có lẽ bạn đã hiểu rõ về IIS. Có một sự tích hợp nhất định giữa một ngôn ngữ lập trình và một Web Server. Cũng vậy, PHP4 được tích hợp rất tối đối với IIS. Trước đây, có một số vấn đề cần phải bàn về tính ổn định của PHP/IIS với việc truyền tải lớn, nhưng PHP và IIS cũng đã được cải thiện liên tục nên việc này không còn đáng phải bận tâm. APACHE là một kiểu mẫu Web Server rất phổ biến. Giống như Linux, PHP, MySQL nó là một dự án nguồn mở. Không có gì ngạc nhiên khi người ta thấy Apache được hỗ trợ rất tốt trên môi trường Unix, nhưng chỉ khá tốt trong Windows. Apache tận dụng được tính năng của third-party. Bởi vì đây là nguồn mở nên bất kỳ ai có khả năng đều có thể viết chương trình mở rộng tính năng của Apache. PHP hoạt động với tư cách là một phần mở rộng của Apache, và người ta gọi là một module của Apache. Apache có tính ổn định và tốc độ đáng phải nói. Tuy nhiên, cũng có một số sự phàn nàn về nó là không hỗ trợ công cụ đồ hoạ trực quan, điều có thể giúp người ta làm việc một cách dễ dàng hơn. Bạn phải thực hiện các thay đổi đối với Apache bằng cách sử dụng dòng lệnh, hoặc sử các tập tin text trong folder chương trình Apache. Nếu lần đầu đến với Apache thì bạn sẽ gặp một chút lạ lẫm. Mặc dù Apache chỉ làm việc tốt trên Unix, nhưng cũng có những phiên bản chạy tốt trên hệ Windows. Không một ai, kể cả các nhà phát triển Apache đề nghị rằng Apache nên được chạy trên một server Windows bận rộn. Nếu bạn quyết định chọn HĐH Windows cho server thì bạn nên sử dụng IIS. Nếu bạn thử nghiệm ứng dụng trên Windows và sau đó đem upload và chạy trên Unix/Apache của nhà cung cấp host thì cũng không hề hấn gì, ứng dụng của bạn vẫn chạy ngon lành. Middleware PHP thuộc lớp ngôn ngữ lập trình gọi là middleware. Các ngôn ngữ này hoạt động cận kề với Web Server để thông dịch các yêu cầu từ trên World Wide Web, sau đó nhận các trả lời từ Web Server chuyển tải đến trình duyệt Web nhằm đáp ứng các yêu cầu đó. Middleware là nơi mà bạn sẽ thực hiện các khối lượng rất lớn công việc chính yếu của bạn. Với hỗ trợ này Web Server của bạn sẽ không phải cán đáng quá nhiều khối lượng công việc. Nhưng khi bạn phát triển ứng dụng của bạn, bạn sẽ tốn nhiều thời gian viết mã chương trình để cho chương trình của bạn có thể hoạt động được. Ngoài PHP ra có một số ngôn ngữ khác có chức năng tương đương như ASP, Perl, ColdFusion. Hệ CSDL quan hệ Relational Database Management Systems (Hệ Quản trị Cơ Sở Dữ Liệu Quan hệ - RDBMSs) cung cấp phương thức tuyệt vời để lưu trữ và truy xuất lượng thông tin lớn và phức tạp. Nó đã ra đời khá lâu. Thực tế, nó có trước Web, Linux và WindowsNT, cho nên không có gì ngạc nhiên khi có quá nhiều hệ CSDL để chọn lựa. Tất cả các CSDL này đề dựa trên cơ sở SQL (Structure Query Language). Một số hệ phổ biến như Oracle, Sysbase, Informix, Ms SQL Server, IBM's DB2. Hệ nguồn mở thông dụng hiện nay là MySQL mà quyển sách này đề cập đến, ngoài ra còn có hai hệ nguồn mở khác là PostgresSQL đã một thời thay thế MySQL và Interbase là bộ nguồn mở của Borland giới thiệu vào tháng 8/1999. Tại sao sử dụng PHP và MySQL Tại sao có quá nhiều chọn lựa như vậy mà chúng ta lại phải chỉ lấy ra cặp bài trùng PHP/MySQL mà thôi? Tôi sẽ giải thích điều naỳ ở phần sau. Nói về PHP Các ngôn ngữ lập trình xem ra giống như các loại giày dép. Có loại có vẻ bắt mắt với một số người này, nhưng lại khó ưa với người khác và ngược lại. Một số người chỉ thích sử dụng một hiệu giày nào đó đã quen thuộc và ngôn ngữ lập trình cũng tương tự như vậy. Ở đây tôi muốn ngụ ý với các bạn là khi lập trình Web, các ngôn ngữ lập trình đều cho kết quả gần giống nhau. Câu hỏi ngôn ngữ nào tốt nhất không phải là vấn đề nó không có khả năng thực hiện một số chức năng nào đó mà thường là nó có làm cho bạn thực hiện công việc một cách nhanh chóng và đỡ nhọc công hay không? Tốc độ nhanh, dễ sử dụng Chúng ta hãy bàn về tốc độ. Có 3 thứ mà tôi chắc chắn khi bàn về việc so sánh tốc độ giữa các ngôn ngữ lập trình Web. Thứ nhất, ứng dụng viết bằng C chạy nhanh nhất. Thứ hai, công việc lập trình C khá là phức tạp, và sẽ ngốn nhiều thời gian hơn. Thứ ba, việc so sánh giữa các ngôn ngữ là một điều khó khăn. Tất cả những gì tôi biết là tôi cảm thấy yên tâm khi nói rằng PHP cũng nhanh như các ngôn ngữ khác. Trở lại ví dụ so sánh với các loại giày dép: Vina, Đông Hải, Kiến Hoa, Hồng Thạnh, Italy v.v., chắn chắn bạn sẽ chọn loại tiện dụng nhất? Nếu bạn giống như tôi, bạn sẽ cảm thấy rằng PHP có đầy đủ các đặc tính như khả năng, cấu trúc và dễ sử dụng. Xin nói thêm, đây chỉ là cách nhìn riêng của tôi thì tôi tin rằng cú pháp PHP tuyệt hơn ASP hay JSP. Và theo tôi thì việc gõ lệnh PHP nhanh hơn ColdFusion và nó không khó học như Perl. Tóm lại, tôi cho rằng PHP cung cấp các tính n ... ùt triển MySQL rất tự hào về tốc độ sản phẩm của họ. Với các ứng dụng mà tôi giới thiệu trong phần III và IV của quyển sách này, thì bạn khó có thể kiếm được một Hệ Quản trị CSDL nào đạt được tốc độ nhanh hơn nó. Cải tiến liên tục MySQL được cải thiện liên tục với một tần số không ngờ. Các nhà phát triển cập nhật nó thường xuyên, ngoài ra còn bổ sung các tính năng rất ấn tượng cho nó mọi lúc mọi nơi. Hiện tại, MySQL đã được bổ sung thêm hỗ trợ transaction. Như vậy là MySQL đã thực thụ trở thành một Hệ Quản trị CSDL chuyên nghiệp. Good! Thực hành ứng dụng đầu tiên Phần mở đầu như vậy là tạm đủ. Bây giờ chúng ta hãy tiếp tục sang phần viết một ứng dụng thử nghiệm để biết được cách thức hoạt động của ngôn ngữ này như thế nào. Có lẽ đọc qua phần giới thiệu bạn cũng đã có một số khái niệm nhất định về sự hoạt động của chúng. Công cụ cần thiết Có một số thành phần cần thiết mà bạn phải có trước hết. Tôi sẽ giới thiệu ngay sau đây và bạn sẽ biết mình cần đến những gì. PHP Webserver Đây là ứng dụng chạy trên Web, cho nên bạn điều hiển nhiên là bạn cần phải có một Web Server. Bạn sử dụng Apache, bạn cài lên Winserver2000/ 2003 hoặc 98, XP thông dụng của bạn. Có một số phiên bản Apache có sẵn bộ cài đặt PHP trong đó. Nếu chưa có bạn phải cài đặt thêm PHP. Còn nữa, bạn phải cài MySQL. Như vậy bộ ba Apache, PHP và MySQL luôn đồng hành với nhau. Bạn xem thêm phần cài Apache server trên các CD thực hành PHP hoặc xem trên các Diễn đàn Tin học . Sau khi cài đặt xong bạn khởi động Apache. Nếu từ trình duyệt gõ vào trang web thông tin của Apache hiển thị thì coi như thành công. Lưu ý: Bạn cần phải xác định thư mục gốc của localhost để chứa các file .php của bạn sau này (xem trong hướng dẫn cài đặt Apache). Text Editor Để soạn thảo các dòng lệnh PHP bạn cần có một chương trình soạn thảo text đơn giản thôi, như Notepad trong Windows chẳng hạn. Có một số chương trình soạn thảo hỗ trợ PHP, các dòng lệnh được ngời sáng bằng nhiều màu khác nhau nhằm làm cho việc lập trình của bạn dễ dàng hơn. Bạn có thể vào các website của Allairre (www.allaire.com) hoặc Editplus (www.editplus.com). Hiện nay, chương trình Dreamweaver MX của Macromedia cũng hỗ trợ soạn thảo mã lệnh PHP rất tốt. BẮT ĐẦU LÀM Tôi nghĩ là tôi đã khởi đầu quyển sách với những mớ lý thuyết suông. Bây giờ chúng ta hãy bắt tay vào thực đi thôi. Như bạn đã biết khi truy cập vào một trang Web có thể bạn sẽ được yêu cầu hay chính bạn muốn ghi lại ý kiến cùng với một mớ các thông tin nhận dạng về mình như họ tên, địa chỉ website, email v.v. Tất cả các thông tin này sẽ được lưu trữ vào một CSDL trên Web. Nhờ vậy, người quản trị Web hoặc những người truy cập khác sẽ biết thông tin cá nhân cùng những ý kiến của bạn. Người ta gọi thông tin này là GuestBook (hiểu nôm na là Sổ vàng để khách viếng thăm ghi chép). Bây giờ chúng ta bắt tay vào việc tạo một GuestBook. Tạo một Database (quan trọng!) Bây giờ bạn cần biết phải làm gì rồi. Chuyện đầu tiên là phải tạo một CSDL lưu trữ thông tin của khách. Để làm được điều này bạn cần phải dùng đến ngôn ngữ SQL (thực tế bạn có thể làm với vài động tác nhắp chuột và vài ngón gõ phím, nhưng hãy tập làm quen với SQL vì nó sẽ hữu dụng về sau). Bạn sẽ được học kỹ về SQL trong các chương sau. Do đó bạn đừng lo lắng khi chưa hiểu gì về nó. Bây giờ bạn hãy khởi động MySQL. Nếu bạn đã cài đặt MySQL trong Windows thì nó sẽ có biểu tượng để khởi động hoặc nó sẽ được tự động khởi động khi mở Windows lên. Đối với MySQLAdmin version 1.1 cho phép bạn làm việc trong 2 giao diện: Windows và Dos. Đối với giao diện Widows thì biểu tượng MySQL (biểu tượng đèn giao thông) nằm ở SystemTray, bạn chỉ việc click chuột phải lên nó và chọn Show me. Cửa sổ làm việc của MySQL hiện lên, tuy nhiên trong cửa sổ này chỉ cho phép bạn thực hiện một số thao tác có hạn đối với CSDL. Hình trên là cách tạo Database mới trong MySQL theo giao diện Windows. Tuy nhiên, tôi khuyên các bạn nên dùng tiện ích PhpMyAdmin, chương trình này hỗ trợ các thao tác đối với CSDL trong MySQL với giao diện dễ sử dụng. Trong phần này tôi hướng dẫn thêm bạn thực hiện thao tác với Database trong giao diện dòng lệnh MSDOS bởi vì các giao diện khác tôi nghĩ tự bạn có thể làm được. Bật màn hình dòng lệnh DOS lên, chuyển sang thư mục cài đặt MySQL có chứa tập tin mysql.exe (/mysql/bin) và gõ vào mysql . Tại dấu nhấu nhắc lệnh hãy gõ lệnh để tạo ra một database mới: mysql> create database guestbook; Query OK, 1 row affected (0.00 sec) mysql> Bây giờ trong CSDL guestbook bạn cần phải có table chứa thông tin của khách. Bạn hãy dùng lệnh create table từ dấu nhắc lệnh: mysql> use guestbook Database changed mysql> create table guestbook -> ( -> name varchar(40) null, -> location varchar(40) null, -> email varchar(40) null, -> url varchar(40) null, -> comments text null -> ) -> ; Query OK, 0 rows affected (0.00 sec) mysql> Bạn đã có một CSDL tên là guestbook và một table ở trong CSDL này cũng tên là guestbook. Bây giờ đã đến lúc chúng ta viết một ứng dụng bằng PHP để thực hiện các thao tác: xem, chèn, sửa, xoá các thông tin trong CSDL guestbook. Viết lệnh PHP Bạn hãy dùng một chương trình soạn thảo văn bản đơn giản như Notepad chẳng hạn. Đặt tên cho các tập tin là .php, các tập tin này được lưu trữ trong thư mục gốc của web local trên máy bạn (nên tham khảo CD cài Apache để rõ hơn). Cú pháp cơ bản Điều thú vị đối với PHP là cho phép bạn xen kẽ giữa lệnh HTML và lệnh PHP. Do đó, PHP được xem như là một script giống như Javascript hay Vbscript. Các lệnh của PHP được gói trong thẻ mở: Bây giờ bạn hãy thử chạy tập tin hi.php sau: <? echo “Hi,”; ?> mom. Khi chạy bạn sẽ gõ vào: localhost/hi.php Kết quả cho ra là "Hi, mom". Ta thấy chữ "Hi," nằm trong tag lệnh PHP còn chữ "mom" thuộc về HTML. Tuy nhiên, PHP còn làm được nhiều điều khác nữa, cũng giống như các ngôn ngữ lập trình khác, nó có thể làm việc với các loại biến, kiểu dữ liệu, chứa rất nhiều hàm chức năng. Hãy tìm hiểu ví dụ sau: <? echo “hi, mom.” ; $var = date(“H”); if ($var <= 11) { echo “good morning”; } elseif ($var > 11 and $var < 18) { echo “good afternoon”; } else { echo “good evening”; } ?> Nếu như bạn thấy khó hiểu thì cũng không sao. Chúng ta sẽ biết tường tận hơn ở phần sau. Trang kết quả sẽ hiển thị các lời chào tuỳ thuộc vào giờ giấc hiện tại. Tôi đã dùng hàm date của PHP để lấy ra được giờ giấc hiện tại. Giá trị giờ được đem gán cho biến $var. Kế đến là các chọn lựa được sử dụng để đưa ra lời chào thích hợp. Các bạn hãy để ý một chút, các lệnh của PHP đều được kết thúc với dấu chấm phẩy (;). Trong phát biểu IF chúng ta thấy dấu ngoặc nhọn { } chứa các lệnh tuỳ sẽ được thi hành tuỳ thuộc vào điều kiện. Các điều kiện thì được bao trong dấu ngoặc đơn ( ). Hàm date() và lệnh echo chỉ là 2 trong hàng trăm các hàm và lệnh có trong PHP mà các bạn sẽ được học một số cần thiết của chúng trong các chương sau. Bây giờ bạn hãy tìm hiểu thêm một số lệnh về CSDL. Lệnh PHP để kết nối Database (quan trọng) Bởi vì PHP và MySQL hiện tại trên máy của bạn vẫn còn là hai thế giới tách biệt nhau. Do đó, muốn dùng PHP để làm việc được với CSDL bạn cần phải tạo ra sợi dây liên kết giữa hai chiến hữu này. Vì có thể có rất nhiều database trong MySQL, do đó bạn cần phải chỉ ra bạn muốn sử dụng database nào trong MySQL. Chúng ta hãy thực hiện như sau: <? mysql_connect(“localhost”, “khai”,”kkk”) or die (“Could not connect to database”); mysql_select_db(“guestbook”) or die (“Could not select database”); ?> Dòng đầu tiên thực hiện việc kết nối với Database Server đang nằm trên máy localhost, có username là khai, password là kkk. Nếu kết nối thành công, nó sẽ thực hiện bước kế tiếp là kết nối với database nằm trong đó là guestbook bằng lệnh mysql_select_db() Các bạn nên lưu ý là các lệnh trên bạn sử dụng thường xuyên cho mọi kết nối CSDL của bạn, do đó tôi khuyên bạn nên lưu nó vào một tập tin (dbconnect.php chẳng hạn), sau này cần thì chỉ việc dùng lệnh include(‘dbconnect.php’); Nhập dữ liệu vào Database Bởi vì hiện tại database của bạn vẫn chưa có user nào, cho nên tôi sẽ hướng dẫn bạn viết các lệnh để thực hiện việc này. Nhưng trước tiên, bạn cần phải biết thêm một chút ít về biến trong PHP. Ở phần trước bạn đã xem qua một ví dụ trong đó có chứa biến, tuy nhiên đối với môi trường client/server, bạn cần phải làm việc với biến data từ client. Bạn sẽ thường xuyên làm việc với form HTML (bạn có thể tìm hiểu kỹ hơn ở phần Phục lục A. Chúng ta nên biết là mỗi phần tử của form đều có một cái tên, và khi bạn submit một form nào đó thì các tên của các phần tử trong đó trở thành một biến trong script PHP được form submit đến. Với form như sau, khi được submit, các biến $surname và $submit sẽ được tạo ra trong myscript.php. Giá trị $surname sẽ mang giá trị mà user đã nhập vào. Giá trị của $submit sẽ là chuỗi "submit". Tôi xin lưu ý với các bạn là lập trình Web không giống như các dạng lập trình khác ở chỗ nó không ở trạng thái tĩnh. Để thể hiện một trang, Web Server phải trước hết nhận một thỉnh cầu từ trình duyệt. Giao thức sử dụng của chúng là HTTP, Hypertext Transfer Protocol. Các yêu cầu sẽ bao gồm: trang web mà trình duyệt sẽ thấy, form data, loại trình duyệt đang được sử dụng, địa chỉ IP mà trình duyệt sử dụng. Dựa vào thông tin này mà Web Server sẽ quyết định phục vụ những gì. Một khi server phục vụ yêu cầu trang web, nó sẽ duy trì sự kết nối với trình duyệt. Thông thường, bạn cần biết cách thức để chuyển các biến từ trang này sang trang khác. Bạn sẽ tìm thấy thao tác này trong ứng dụng tiếp theo. Ứng dụng của chúng ta sẽ giải quyết vấn đề dựa theo 1 trong 3 cách thức: chuyển giao theo phẩn tử form ẩn, sử dụng cookies, sử dụng session. Bây giờ trở lại script sau: Bạn có thể quyết định cho hiển thị trên site những gì dựa vào các biến thông tin từ form HTML. Thông thường, bạn có thể kiểm tra nếu form đã được submit hay chưa bằng cách kiểm tra biến $submit có chứa giá trị "submit" hay không. Hãy bắt tay vào công việc đi thôi. Trang đầu tiên trong ứng dụng được gọi là sign.php có chứa một form HTML. Action của nó là create_entry.php. Sau đây là chi tiết dòng lệnh: Sign my Guest Book!!! Name: Location: Email: Home Page URL: Comments: Khi bạn điền đầy đủ thông tin ở trong form, thì các thông tin sẽ được chuyển đổi tới create_entry.php. Chuyện đầu tiên phải làm trên trang này là kiểm tra xem form đã được submit chưa. Nếu rồi, nhận lấy giá trị đã nhập vào trong form và sử dụng chúng để tạo một query đồng thời gởi đến MySQL. Bạn đừng lo lắng là không biết các lệnh SQL, điều trước tiên là chỉ cần biết là nó sẽ thực hiện việc chèn dữ liệu vào table của guestbook. Tập tin create_entry.php như sau: <?php include(“dbconnect.php”); if ($submit == “Sign!”) { $query = “insert into guestbook (name,location,email,url,comments) values (‘$name’, ‘$location’, ‘$email’, ‘$url’, ‘$comments’)”; mysql_query($query) or die (mysql_error()); ?> Thanks!! View My Guest Book!!! <?php } else { include(“sign.php”); } ?> Trong lần đầu tiên create_entry.php được gọi, form sign.php sẽ được hiển thị. Kế tiếp, dữ liệu sẽ được cập nhật vào CSDL. Hình sau minh hoạ các form được hiển thị: sign.php create_entry.php Hiển thị dữ liệu trong Database lên màn hình Bây giờ dữ liệu đã được ghi vào CSDL guestbook . Bạn cần thực hiện việc xem các dữ liệu đó. Nên nhớ là chúng ta lại phải sử dụng dbconnect.php như tôi đã nói với bạn trước đây. Bạn cần phải cho hiển thị tất cả các record trong table thông tin của khách viếng thăm đã nhập vào. Chúng ta thực hiện script sau và đặt tên là view.php: View My Guest Book!! <?php $result = mysql_query(“select * from guestbook”) or die (mysql_error()); while ($row = mysql_fetch_array($result)) { echo “Name:”; echo $row[“name”]; echo “\n”; echo “Location:”; echo $row[“location”]; echo “\n”; echo “Email:”; echo $row[“email”]; echo “\n”; echo “URL:”; echo $row[“url”]; echo “\n”; echo “Comments:”; echo $row[“comments”]; echo “\n”; echo “\n”; echo “\n”; } mysql_free_result($result); ?> Sign My Guest Book!! Như chúng ta thấy query trong MySQL truy cập tất cả các hàng trong database. Script thực hiện việc này bằng cách sử dụng vòng lập thông qua biến $row. Trong mỗi vòng lặp thì mỗi field trong từng record được hiển thị. Vd: print $row["email"] sẽ ghi ra màn hình đối với record đang truy cập. Khi chạy chương trình, tất cả các field của từng record sẽ được hiển thị: view.php Chương trình này upload lên internet được chưa? Bây giờ thì ứng dụng đầu tiên của bạn đã hoàn tất. Nếu bạn muốn upload web vừa tạo lên trên Server để thử nghiệm thì cũng được thôi. Nhưng muốn để nó trở thành một site guestbook đúng nghĩa thì chưa được đâu! Bạn còn cần phải làm nhiều thứ để dữ liệu bạn không bị hacker quấy phá. (Còn tiếp) Lưu ý: Bạn có thể tìm thấy các CD thiết kế web PHP tại các cửa hàng CD (Tôn Thất Tùng, tp.HCM chẳng hạn). Trên CD có trình cài đặt Apache, PHP, MySQL thông dụng là FOX. Ngoài ra còn có các Website PHP mẫu. CÁC LỆNH Ở BÀI HỌC TRÊN TỐT NHẤT BẠN NÊN GÕ LẠI, KHÔNG NÊN COPY! tongphuockhai@mail15.com - Kiến thức là kho báu không phải của riêng ai. Vì vậy bạn đừng ngần ngại khi chia sẻ cho mọi người.
File đính kèm:
- giao_trinh_lap_trinh_web_dong_voi_phpmysql_phan_1.pdf