Learning PHP & MySQLUpdatesofts.comCài đặt Web server – bước đầu tiên để học PHP!”Trường học” vừa khai giảng, trong lúc đợi bài học đầu tiên ra lò, cho phép tớ được “múa rìuqua mắt thợ cái”!Như bác ngocha85 đã nói, để học PHP và MySQL, một trong những thứ cần chuẩn bị là webserver chạy trên PC của mình. Để cho nhanh chóng, theo tớ tốt nhất nên cài bộ XAMPP.Câu hỏi 1: XAMPP là gì?Trả lời: XAMPP giống với WAMP, nghĩa là người mới học ko cần phải biết cách cài đặt riêng lẻtừng thành phần như Apache, PHP và MySQL. Chỉ cần download một gói về là xong.Các tính năng có trong XAMPP:1. Apache 2 => server2. PHP 5 => ngôn ngữ lập trình3. MySQL => cơ sở dữ liệu4. Webalizer => quản lý statistic của site5. Mercury => giả lập gửi email6. FileZilla => giả lập FTP server7. Rất nhiều tính năng chuyên sâu khác…Câu hỏi 2: Tại sao ko dùng WAMP?Trả lời: Vì cái này tớ chưa dùng bao giờ + Cái này bác ngocha85 chắc sẽ giới thiệu => tránhđụng hàng là hơn. Với lại cái XAMPP này theo tớ cũng rất hay, thậm chí ko cần cài đặt, chỉ cầncopy và chạy.Câu hỏi 3: Down XAMPP ở đâu?Trả lời: Ở đây: http://www.apachefriends.org/en/xampp.htmlCó đủ bộ XAMPP cho Windows, Linux, MacOS và cả Solaris, vì vậy mọi hệ điều hành nó đềuchấp tất!Câu hỏi 4: Cài đặt và sử dụng XAMPP như thế nào?Trả lời: Sau khi tải về, bạn sẽ có 1 file zip. Giải nén file đó ra 1 thư mục bất kỳ, ví dụ C:XAMPP.Để chạy web server, bạn kích hoạt file xampp_control.exe, bấm nút Start bên cạnh Apache vànút close để XAMPP Control tự động chuyển xuống system tray.Ngoài ra, bạn có thể khởi động MySQL nếu dùng cơ sở dữ liệu, FileZilla nếu dùng FTP vàMercury nếu dùng email.Để biết chắc web server đã chạy đúng, bạn mở trình duyệt web của mình, gõ http://localhostvào thanh Address, sau đó enter. Một trang thông báo sẽ hiện ra, cho biết quá trình “cài đặt” đãhoàn tất.Câu hỏi 5: Làm thế nào để chạy các script viết bằng PHP?Trả lời: Bạn cho script vào thư mục C:XAMPPhtdocs sau đó gọi file đó qua URLhttp://localhost/script_name.phpBy TXP Lover, Incomplete, iSheep, Seneken.1Learning PHP & MySQLUpdatesofts.comVậy là hết “bài chuẩn bị cho bài khởi động” của bác ngocha85 sẽ post trong vài ngày tới. Tèntén ten!Thừa thắng xông lên, tớ làm luôn bài “Hello World”.Bài 1: Nói “hello world” với PHPCần chuẩn bị những gì?1. Web server cần đảm bảo sẵn sàng. Apache được khởi động theo bài post ở trên.2. Một script editor. Cái này có rất nhiều, như PHP Designer, Dev-PHP, … Thậm chí dùngnotepad cũng được. Nhưng tốt nhất nên dùng một editor có hỗ trợ unicode. Như tớ dùngSCiTE.Bạn vào trang này để xem list và review các PHP editor: http://www.php-editors.com/3. 5 phút thời gian rảnh rỗi.Bắt đầu!!!1. Tạo một file mang tên “helloworld.php” trong thư mục htdocs. Mở file đó bằng script editor.2. Gõ đoạn code sau vào editor:PHP Code:3. Mở trình duyệt web, gõ http://localhost/helloworld.php .4. Nhắm mắt lại trong 0.0001 giây. Nếu mở mắt ra mà bạn thấy dòng chữ Hello World là đãthành công rồi đó!Giải thích1. Dòng thứ nhất của file helloworld.php là “”. Đây là 2 thẻ (tag)để báo cho server biết điểm bắt đầu và kết thúc của một đoạn code PHP. Nói cách khác, bằngcách này bạn có thể nhúng code PHP trong bất cứ file HTML có sẵn nào. Khi thực thi file PHP,web server sẽ chỉ thực hiện những đoạn code đặt trong 2 thẻ này và bỏ qua tất tần tật nhữngphần còn lại.2. Dòng 2 là một lệnh của PHP: Lệnh echo. Lệnh này làm nhiệm vụ in một xâu ra ngoài mànhình. Cần nhớ một lệnh PHP luôn kết thúc bằng dấu chấm phẩy “;”. Nếu thiếu dù chỉ một dấuchấm phẩy, code của bạn sẽ ko chạy và dừng lại biểu tình ngay.3. Cũng ở dòng 2, xâu “Hello World” được đặt trong dấu ngoặc kép. Nếu ko, sẽ có lỗi.Một vài câu hỏi1. Có cần thiết phải trình bày như trên ko?=> Ko. Bạn có thể trình bày code theo bất cứ cách nào bạn muốn. Lùi vào 10 dấu cách, mỗidòng cách nhau 3 hàng, … Điều đó là tùy bạn. Tuy nhiên cần phải viết code cho thật dễ đọc vàdễ hiểu để tiện cho việc sửa đổi và chia sẻ code sau này.2. Có cách nào báo hiệu một đoạn code PHP ngoài cách dùng Có. Nhiều cách là đằng khác. Ví dụ bạn có thể viếtBy TXP Lover, Incomplete, iSheep, Seneken.2Learning PHP & MySQLUpdatesofts.comPHP Code:Tuy nhiên các cách khác đều ít thông dụng và được khuyến cáo ko nên sử dụng.3. Có thể đặt xâu Hello World trong dấu ngoặc đơn ko?=> Có thể. Bạn có thể dùng dấu ngoặc kép và dấu nháy đơn để chứa xâu. Sự khác nhau giữachúng sẽ được thảo luận sau.4. Nếu trong xâu cũng có dấu ngoặc / xâu là một đoạn văn bản rất dài thì sao?=> Ko có gì phải lo lắng. Cái gì cũng có cách giải quyết. Vấn đề là cách đó ko nằm trong bàihọc hôm nay. Hết 5 phút rồi, bạn hãy nghỉ ngơi đã. :PBài tậpVì Bài 1 hết sức đơn giản, chỉ theo tinh thần Hello World nên bài tập cũng sẽ chỉ có bài, và cũngrất rất đơn giản.Hãy cho biết lỗi sai trong các đoạn code sau:1.PHP Code:echo “Hello World!”;2.PHP Code:3.PHP Code:4.By TXP Lover, Incomplete, iSheep, Seneken.3Learning PHP & MySQLUpdatesofts.comPHP Code:Bài 2 – Mục 1: Lưu trữ dữ liệu trong PHP. Vài điều cần nói về biến.Trước khi bắt đầu bài 2, tớ xin trình bày về cách chú thích (comment) trong PHP. Đây có thể coilà một kỹ năng cũng được, vì bạn rất KHÔNG NÊN viết code mà ko có chú thích. Có thể đoạncode rất dễ hiểu vào thời điểm viết, nhưng nếu ko có chú thích, chỉ vài tháng sau bạn có thểquên ngay mình đã viết cái gì. Viết chú thích ngay vào thời điểm code là cách tốt nhất.Trong PHP, một dòng chú thích được đặt sau 2 dấu sổ chéo //Ví dụPHP Code:// Đây là một dòng chú thíchNếu chú thích của bạn dài hơn 1 dòng, bạn có thể để nó trong 1 block, mở đầu bằng /* và kếtthúc bằng */PHP Code:/*Chú thích dòng thứ nhấtThứ 2Thứ 3Vân vân…*/Còn một cách nữa, KHÔNG phổ biến (ít ra là tớ thấy thế), đó là chú thích đặt sau dấu #. Chúthích này cũng chỉ cho phép 1 dòng giống như //Một điều khác cũng rất cần chú ý đó là PHP ko cho phép đặt chú thích trong chú thích (nestedcomment).Ta bắt đầu vào Bài 2.Bài 2: Lưu trữ dữ liệu trong PHPKhi bắt tay vào lập trình một chương trình, hiển nhiên ta sẽ cần phải lưu trữ dữ liệu. Cụ thể, dữliệu có thể được lưu trữ bằng biến (variable). Khác với các ngôn ngữ lập trình khác, trong PHPcác biến ko cần phải khai báo (declare) trước khi sử dụng. Để sử dụng biến, bạn chỉ cần gán(assign) cho nó một giá trị (value). Biến sẽ tự động được tạo. Cực kỳ đơn giản và nhanh chóng!By TXP Lover, Incomplete, iSheep, Seneken.4Learning PHP & MySQLUpdatesofts.com1. Biến. Khai báo. Đặt tên.Biến trong PHP bắt đầu bằng dấu dollar ($), theo sau là tên biến. Tên biến có thể bắt đầu bằngdấu gạch dưới (_ gọi là underscore) hoặc chữ cái. Tiếp sau đó là các chữ cái, số hoặc lại là dấugạch dưới. Một số ký tự mở rộng (extended character) có thể được sử dụng, nhưng tốt nhất lànên tránh.Một số ví dụ về biến ĐÚNG: $uds, $update_softs, $uds_has_more_than_26000_membersBiến sai: abc vì thiếu dấu dollar, $124adfd vì bắt đầu bằng sốCũng cần thảo luận thêm một chút: Cũng vì sự dễ dãi trong việc ko phải khai báo biến nên sẽcó lúc bạn gõ nhầm tên biến. Ví dụ $uds gõ thành $usd (ặc!)Ví dụ:PHP Code:May mắn làm sao, từ bản PHP 5 trở lên, sẽ có một cảnh báo (warning) khi bạn chạy script, chobiết bạn chưa gán giá trị cho biến $usd.À, còn một vấn đề chưa nói đến: Đó là trong PHP, tên biến CÓ phân biệt chữ hoa chữ thường(case-sensitive). Nghĩa là $uds hoàn toàn khác với $UDS hay $uDs. Nói chung nên tránh việcđặt tên biến chỉ khác nhau cách viết hoa thường này, vừa đỡ mất công giữ Shift, vừa đỡ nhớnhầm tên biến.Mục 2 sẽ mang tên Một số kiểu dữ liệu trong PHP. Mọi người đón đọc nhá!Bài tậpTrong các biến sau đây, biến nào được đặt tên đúng, biến nào bị đặt tên sai:1. this_is_a_variable2. $yet another variable3. $simplevariable4. $blah_blah_blah_123456789_______5. $123456789_____abacabadfskdjsfksdfkdserwuewrjfdksj fdksljf6. $^^7. $___A___VARIABLE____8. $THiS_iS_THe_LaST_ONeBài 2 – Mục 2: Lưu trữ dữ liệu trong PHP. Một số kiểu dữ liệu cơ bảnBy TXP Lover, Incomplete, iSheep, Seneken.5Learning PHP & MySQLUpdatesofts.comNgoài lề một chút: Lúc đầu tớ cũng ko định tách Bài 2 ra làm mấy thread, nhưng nếu để như thếkia thì dài quá, sợ đọc theo các bác mệt mắt => nản lòng.Ta có một số kiểu dữ liệu cơ bản sau đây trong PHP:a. Kiểu số (number)b. Kiểu xâu (string)c. Kiểu boolean (boolean)a. Kiểu sốTrong kiểu số (lại) có 2 kiểu cơ bản khác: Số nguyên (int) và số thực (float). Số nguyên có thểbiểu diễn bằng số thập phân (hệ 10 – decimal), hệ 8 (octal) và hệ 16 (hexadecimal).Ví dụ ta gán giá trị cho một số biến kiểu NGUYÊN như sau:PHP Code:Ở ví dụ trên, cả 6 biến từ $a đến $f đều có giá trị là 27 hoặc -27. Tuy nhiên, với biến $a và $b,ta dùng kiểu biểu diễn số thập phân (viết như số ta viết hàng ngày). Với $c và $d, dùng kiểu sốhệ 8 (bắt đầu với chữ số 0). Với $e và $f dùng kiểu hệ 16 (bắt đầu với chữ số 0 và chữ cái x).Nếu đã từng học qua Pascal, chắc chắn bạn sẽ hỏi tớ: Thế nếu tớ dùng 1 biến kiểu int, gán chonó một giá trị cao bằng max của int, thì khi đem số đó cộng với 1, giá trị có bị chuyển thành âmdo tràn số (overflow) ko?Câu trả lời là ko. Một biến kiểu int có giá trị cực lớn trong PHP là 2147483647, khi cộng 1 vẫnsẽ trả giá trị đúng là 2147483648, nhưng lần này sẽ thuộc kiểu float. Nói cách khác, PHP tựchuyển số bị tràn lên kiểu float.Nếu thích đặt câu hỏi, chắc chắn (lại một lần nữa) bạn sẽ hỏi tớ: Sao cậu biết điều ấy?Câu trả lời rất đơn giản: Bạn hãy cùng tớ làm ví dụ với đoạn code sau:PHP Code:Sau khi chạy script, kết quả trả về sẽ làint(2147483647) float(2147483648)=> Đúng như tớ nói nhá!Tớ xin giải thích như thế này:Ở dòng thứ nhất, ta đem gán giá trị 2147483647 cho $a. Đây là một giá trị cực to, nhưng vẫnnằm trong int, vì vậy $a sẽ thuộc kiểu int.Dòng thứ 2 và thứ 4, ta dùng lệnh var_dump($a); Đây là lệnh in ra kiểu và giá trị của một biếntrong PHP. Chú ý nhé, lệnh này khá phổ biến và hay được dùng để debug code.Ở dòng thứ 3, ta dùng lệnh gán $a = $a + 1; Với các bạn đã học lập trình, điều này chẳng có gìkhó hiểu. Sau khi thực thi lệnh, $a sẽ mang giá trị của $a cộng thêm với 1. Còn nếu (chẳngmay) bạn chưa học lập trình bao giờ, thì tớ (lại) xin giải thích như thế này:- Dấu bằng ở đây là lệnh gán, đem giá trị của vế phải gán cho vế trái, chứ ko phải là dấu bằngtrong biểu thức toán học mà mình vẫn học. Do đó, ko có gì là trái với lẽ tự nhiên cả. :PMột điều khác mà bạn nên nhớ, đó là hãy THẬT cẩn thận khi sử dụng số kiểu float trong PHP.Nó luôn chỉ là những giá trị xấp xỉ, và ko hề chính xác tuyệt đối. Do đó tốt nhất là chuyển sốfloat sang int khi có thể. Cách làm sẽ được thảo luận sau.Giờ ta sang kiểu xâu.b. Kiểu xâuĐịnh nghĩa một cái nào: Xâu là một chuỗi các ký tự. Một câu tớ xì pam là một xâu. Cả cái bàiviết này cũng có thể là một xâu.Để sử dụng xâu, có 3 cách (hic, bắt đầu phức tạp rồi => mọi người đứng dậy vươn vai cái chotỉnh táo! :P):Cách 1 là dùng nháy đơn.Cách 2 là dùng ngoặc kép (hay gọi là nháy kép gì cũng được).Cách 3 là dùng kiểu HEREDOC.Nói rõ nhé:Cách 1: Xâu được đặt trong dấu nháy đơn.PHP Code:Sẽ có bạn hỏi tớ (sao hỏi nhiều thế!): Trong xâu có thể đặt dấu nháy đơn được ko? Kiểu nhưBy TXP Lover, Incomplete, iSheep, Seneken.7Learning PHP & MySQLUpdatesofts.comxâu là I”m a student ý.Câu trả lời là bạn phải thêm một dấu sược (hay suộc gì ý) trước dấu nháy đơn “bất thường” ý.Như thế này:PHP Code:echo “Trong nháy đơn lại có một nháy đơn như thế này “, và như thế này nữa “.”;Đặt cái dấu đó () gọi là “escape the character”. Nói nhỏ nhá: Bài tớ viết hay chèn tiếng Anh vàolà để các bạn đỡ “bỡ ngỡ” khi đọc tut hay doc bằng Eng.Một lần nữa, (lại) có một câu hỏi được đặt ra: Nếu trong xâu cũng có một dấu thì sao?Câu trả lời cũng rất giản dị: Dùng thêm một dấu nữa ngay trước dấu ý. Như thế này \Lần này, sẽ ko có một câu hỏi, mà sẽ là một tiếng thở dài: Sao lắm thứ thế? Còn cái dấu nàophải “escape” như dấu và ” ko?Có. Đó là:1.
: Báo hiệu xuống dòng trong PHP. Giống như trong HTML.2. : Thay mặt cho Tab3. $ : Dấu dollar (tránh “cạnh tranh lành mạnh” với tên biến mà! :P)4. … Để gặp nói sau. Nói nhiều e “tẩu hỏa nhập ma” chết!Quên mất, trừ ” và \, mấy cái escape này chỉ dùng trong trường hợp xâu đặt trong dấu ngoặckép.Hờ hờ, lại quên một điều phải nói trước khi chuyển qua phần kế tiếp: Nếu trong xâu ta ko thèmdùng dấu , cũng kóc thèm dùng dấu “, mà dùng cả ” cho “dân chơi” thì sao?Trả lời: Thì cứ làm như bình thường thôi. Như thế nè: \”. Dấu thứ 1 để escape cho dấu thứ2. Dấu thứ 3 để escape cho dấu ” cuối cùng. Thường thôi!Cách 2: Xâu được đặt trong dấu ngoặc kép (hay nháy kép – whatever)Trường hợp này rất giống với sử dụng dấu nháy đơn đã nói ở trên.PHP Code:Sở dĩ nói RẤT giống mà ko phải HOÀN TOÀN giống vì giữa chúng có điểm khác nhau: Khi thựcthi, PHP sẽ tìm và thay thế trong xâu những ký tự đặc biệt được escape (như
, …) như đãnói ở trên, cùng với các biến (nếu có) trong xâu.Ví dụ:PHP Code:Sẽ cho ta kết quả: Biến $a có giá trị là 1Trong khi đó, nếu sử dụng dấu nháy đơn:PHP Code:Lại in ra: Biến $a có giá trị là $aĐiều đó cho thấy: Khi sử dụng dấu nháy đơn, giá trị của biến trong xâu, cùng với các ký tự đặcbiệt cần escape sẽ ko được in ra. Các bạn nhớ kỹ điều này nhé!Ta sang cách thứ 3: Xâu đặt trong cấu trúc HEREDOCỞ cách 1, PHP sẽ nhận thấy 1 xâu được bắt đầu với dấu nháy đơn thứ nhất và kết thúc với dấunháy đơn thứ 2. Tương tự với cách 2, nhưng là dấu ngoặc kép.Ở cách 3 này, PHP sẽ coi một xâu bắt đầu bằng 3 dấu nhỏ hơn viết liền nhau Nhìn vào ví dụ trên, bạn có nhận xét gì?By TXP Lover, Incomplete, iSheep, Seneken.9Learning PHP & MySQLUpdatesofts.comThứ nhất, xâu ko nhất thiết phải thuộc một dòng. Nó ko nhất thiết phải ngắn gọn, mà có thể dài”tràng giang đại hải” ra mấy chục dòng cũng được. Điều này rất tiện nếu bạn muốn echo mộtlúc cả một bài thơ chẳng hạn!Thứ hai, chữ HERE; ở dòng cuối cùng tớ ko căn lề với chữ echo ở dòng 1. Đó là LUẬT, dù tớthấy hơi “bất công” và “nghiệt ngã” một tí:- Sau Có gì bí ẩn ở đây ko? Thay vì echo thẳng mấy dòng kia ra, ta đi “vòng vèo” một chút bằng cáchgán xâu chứa mấy dòng đó cho biến $s, sau đó echo nl2br($s) ra màn hình.nl2br() được gọi là một hàm (function). Nó nhận một xâu làm tham số (parameter), ở đây là xâu$s, sau đó in ra theo luật: Cứ gặp dấu xuống dòng trong code là chuyển thành dấu xuống dòngtrong HTML.By TXP Lover, Incomplete, iSheep, Seneken.10