- Thực tế thì trình độ và kinh nghiệm của chúng ta không phải là caonên để phân tích và tổng quát hoá bài toán một cách tương đối rõ ràng,phương án giải quyết và thực hiện triển khai một
Trang 1Lời mở đầu
Ngày nay cùng với sự phát triển vượt bậc của khoa học kỹ thuật, ngànhcông nghệ thông tin cũng phát triển một cách mạnh mẽ và nhanh chóng.Đặcbiệt là những ứng dụng của nó có một ý nghĩa rất thiết thực, và có thể nóicông nghệ thông tin là một trong những lĩnh vực có nhiều đóng góp thiết thựcnhất đối với cuộc sống của chúng ta.Công nghệ thông tin có mặt hầu hết trongcác lĩnh vực của cuộc sống.Đặc biệt là những ứng dụng trong kinh tế, nó cónhững đóng góp rất lớn đến sự phát triển của nền kinh tế Và nổi bật nhất lànhững ứng dụng của ngành công nghệ thông tin trong công tác quản lý củangành kinh tế cũng như các ngành khác trong cuộc sống Điều này được thểhiện bằng việc đưa tin học vào việc quản lý kinh doanh của các công ty Nhờvào công tác tin học hoá mà công việc quản lý và điều hành doanh nghiệpmột cách hiệu quả và nhanh chóng Chính vì lẽ đó mà việc tin học hoá đang làgiải pháp tốt nhất cho các doanh nghiệp để có thể tồn tại và phát triển nhanhchóng trong thời đại mà công nghệ thông tin có thể coi là sự sống còn của cácquốc gia phát triển trên thế giới
Công ty PHẦN MỀM QUẢN LÝ DOANH NGHIỆP FAST là một công ty
mà lĩnh vực kinh doanh chủ yếu về sản xuất và kinh doanh các phần mềmquản lý doanh nghiệp Với quy mô và đặc thù kinh doanh như vậy cho nên em
chọn đề tài “Xây dựng chương trinh quản lý nhân sự” tại công ty làm
chuyên đề thực tập
Chương trình được phân tích, thiết kế và cài đặt trên môi trường PHP vàMySQL
Nội dung của chuyên đề bao gồm:
Chương I: Tông quan về công ty
Chương II: Cơ sở phương pháp luận của bài toán quản lý nhân lực Chương III: Chương trình quản lý nhân lực
Trang 2Mặc dù có nhiều cố gắng nhưng do kiến thức có hạn nên không thể tránhnhững thiếu sót Rất mong được sự đóng góp ý kiến của quý thầy cô, các anhchị và các bạn để chuyên đề được hoàn thiện hơn.
Cuối cùng em xin trân thành cảm ơn Thầy giáo Phùng Tiến Hải và anh LêKhắc Bình cùng toàn thể các cô các chú trong công ty đã giúp đỡ em trongquá trình thực tập và làm chuyên đề này
Em xin trân thành cảm ơn.
Trang 3Chương I: Tổng Quan Về Công Ty
I Thông tin chung:
Tên công ty:
-Tên tiếng Việt: Công ty phần mềm quản lý doanh nghiệp FAST
-Tên tiếng Anh: Fast Software Company
-Tên giao dịch: FAST
Trước năm 2003 công ty có tên là “Công ty phần mềm tài chính kế toánFAST” Từ năm 2003 công ty đổi tên thành “Công ty phần mềm quản lýdoanh nghiệp FAST”
Ngày thành lập:
-Công ty: 11/6/1997
-Chi nhánh tại TP Hồ Chí Minh: năm 1998
-Văn phòng đại diện tại Đà Nẵng: 1999
Vốn đăng ký và hình thức sở hữu:
-Vốn đăng ký: 1.000.000.000 đồng
-Hình thức sở hữu: cổ phần
Địa chỉ liên hệ:
Văn phòng tại TP Hà Nội:
18, Nguyễn Chí Thanh, Quận Ba Đình
Điện thoại: (04) 771 5590
Fax: (04) 771 5591
Email: fhn@fastsoftware.biz
Văn phòng tại TP Hồ Chí Minh
391A, Nam Kỳ Khởi Nghĩa, Quận 3
Điện thoại: (08) 848 1001
Fax: (08) 848 0998
Email: fastsg@hcm.vnn.vn; fsg@fastsoftware.biz
Trang 4Văn phòng tại TP Đà Nẵng
15, Quang Trung, Quận Hải Châu
Điện thoại: (0511) 81 0632
Fax: (0511) 81 2692
Email: fastdn@dng.vnn.vn; fdn@fastsoftware.biz
II Lịch sử hình thành công ty:
Người đưa ra ý tưởng thành lập công ty FAST là ông Nguyễn Thành Nam.Thành viên hội đồng quản trị:
Ông Nguyễn Thành Nam: Chủ tịch hội đồng quản trị
Ông Phan Quốc Khánh: Phó chủ tịch hội đồng quản trị, kiêm giám đốccông ty
Ông Phan Đức Chung: Phó chủ tịch hội đồng quản trị
Thời gian thành lập công ty là từ tháng 6 đến tháng 8 năm 1996
Ngày bắt đầu có trụ sở làm việc: 01/09/1996 tại 67c Thái Hà, Quận Đống
III Sơ đồ tổ chức của công ty
Sơ đồ tổ chức của công ty:
Trang 5Ban giám đốcHội đồng quản trị
Phòng nghiên cứu
& phát triển sản phẩm
Các văn phòng
Giám đốc chi nhánh
Sơ đồ tổ chức của các chi nhánh:
Trang 6Tổ chức các phòng ban của công ty:
2 Giám đốc công ty Điều hành các chiến lược đề ra
Phát triển kinh doanhXây dựng các quy định, chế độ, chính sáchchung của công ty về tổ chức nhân sự, lương
và tài chính kế toán Tham gia vào việc quyết định chiến lược củacông ty
4 Phòng nghiên cứu
và phát triển sản
phẩm
Nghiên cứu và phát triển sản phẩm mới
Hỗ trợ các bộ phận kinh doanh sửa đổi sảnphẩm theo các yêu cầu đặc thù
5 Các chi nhánh, bộ
phận kinh doanh
Bán hàng và dịch vụ khách hàng
IV Chức năng sản xuất kinh doanh:
FAST đăng ký kinh doanh trên các lĩnh vực sau:
- Sản xuất kinh doanh các phần mềm máy tính
- Buôn bán hàng tư liệu tiêu dùng (thiết bị điện tử tin học, máy tính)
- Dịch vụ thông tin khoa học và công nghệ
- Dịch vụ tư vấn chuyển giao công nghệ
Trang 7Trong đó lĩnh vực kinh doanh chủ yếu là sản xuất và kinh doanh các sảnphẩm phần mềm quản lý doanh nghiệp.
V Tình hình sản xuất kinh doanh của công ty:
1 Các công đoạn trong quy trình sản xuất kinh doanh
Quy trình sản xuất kinh doanh của công ty gồm có các công đoạn sau:
- Phần mềm kế toán Fast Accounting 2003.f trên Visual Foxpro
- Phần mềm kế toán Fast Accounting 2003.s trên SQL Server
- Phần mềm tổng hợp báo cáo toàn tổng công ty Fast Corporate Reporter2003.w trên nền web
- Phần mềm quản trị toàn diện doanh nghiệp ERIC ERP của JupiterSystems Inc
- Phần mềm kế toán và quản trị kinh doanh Fast Business 2004.s trên
SQL Server
2 Công ty cung cấp các dịch vụ sau:
- Khảo sát yêu cầu và tư vấn về xây dựng hệ thống thông tin tài chính kếtoán và quản trị kinh doanh
- Sửa đổi và phát triển chương trình theo yêu cầu đặc thù của khách hàng
- Triển khai ứng dụng, cài đặt và đào tạo sử dụng
Trang 8- Hỗ trợ sử dụng sau đào tạo, bảo hành và bảo trì hệ thống thông tin.
- Nâng cấp và mở rộng theo sự phát triển cuar khách hàng.
3 Các biện pháp kinh doanh và quản lý công ty
- Trong lĩnh vực kinh doanh Fast đề ra khẩu hiệu:Chuyên sâu tạo ra sựkhác bịêt
- Phương châm của Fast là xây dựng một đội ngũ nhân viên có nghềnghiệp, có thể làm ra các sản phẩm cụ thể với chất lượng cao cho kháchhàng Đi theo con đường “Nhất nghệ tinh”, chuyên sâu phát triển sảnphẩm và kinh doanh trong một lĩnh vực hẹp để có thể làm ra sản phẩm
- Để khuyến khích nhân viên và kích thích làm việc Fast có những biệnpháp như:
- Trả lương theo kết quả công việc: Lương và thu nhập của mỗi cá nhân
sẽ phụ thuộc vào doanh số và lợi nhuận Quỹ lương tháng của toàncông ty, của từng chi nhánh được tính dựa trên kết quả doanh thu củatháng Việc chia lương sẽ tuỳ từng trường hợp cụ thể có thể sẽ đượctính theo doanh thu của từng cá nhân, của nhóm/bộ phận làm việc hoặcthưo xưm xét đánh giá của cán bộ phụi trách cho từng tháng
Trang 9- Cạnh tranh nội bộ: Người đóng góp nhiều hơn sẽ được hưởng nhiềuhơn, áp dụng biện pháp trả lương có sự cách biệt rõ ràng giữa các “ngôisao” so với các nhân viên trung bình Các ngôi sao ở đây có thể là cácnhân viên( bán hàng, kỹ thuật, tư vấn….) giỏi hoặc cán bộ chủ chốt.
- Bán cổ phần cho nhân viên Nhằm kích thích làm việc thông qua lợinhuận kinh doanh cuối cùng của toàn công ty, hàng năm công ty sẽ bánvới giá ưu đ•i khoảng 5% cổ phần cho các nhân viên làm việc trongcông ty
- Ngoài các biện pháp nói trên chúng ta sẽ cùng nhau tìm tòi và áp dụngcác phương án khích lệ cao nhất đối với các nhân viên giỏi, khích lệcao nhất đối với sự làm việc hăng say, quên mình để đóng góp cho sựphát triển của công ty, cho x• hội
- Quản lý với phương châm:Luôn luôn đổi mới và hoàn thiện
- Lý do:
- Thế giới ngày nay liên tục biến đổi, những cái gì ta biết ngày hôm naythì chỉ vài tháng sau đ• lạc hậu Vì vậy sẽ không có giải pháp nào tối ưucuối cùng mà mọi giải pháp tối ưu của ngày hôm nay sẽ là cái tạm đượctrong vài tháng tới và là cái lỗi thời năm sau
- Thực tế thì trình độ và kinh nghiệm của chúng ta không phải là caonên để phân tích và tổng quát hoá bài toán một cách tương đối rõ ràng,phương án giải quyết và thực hiện triển khai một cách tương đối hoànhảo sẽ chiếm một thời gian dài và khi phát triển xong một sản phẩmhoàn hảo hoặc đề ra được một phương án quản lý tối ưu thì thế giới đ•thay đổi và sản phẩm đ• thành lạc hậu, phương án quản lý đ• không phùhợp
- Vì vậy:
- Fast sẽ phát triển sản phẩm thưo phương án “đỉnh tiếp đỉnh- Tối ưuhoá”, cùng nhịp bước với sự thay đổi và phát triển của công ty, củacông nghệ, của khách hàng Chu kỳ phát triển sản phẩm sẽ là ngắn,
Trang 10không vượt quá 1 năm Đối với các dự án có kế hoạch nghiên cứu vàphát triển dài hạn từ 2- 3 năm thì chúng sẽ được chia thành các giaiđoạn nhỏ dưới 1 năm sao cho mỗi năm phải cho ra đời các phiên bảnthương phẩm.
- Về quản lý công ty sẽ liên tục thử nghiệm, liên tục hoàn thiện và liêntục đổi mới cách thức điều hành mọi hoạt động trong công ty sao chophù hợp với sự phát triển của chính công ty và phù hợp với sự thay đổicủa môi trường xung quanh để sản xuất kinh doanh càng ngày cànghiệu quả hơn và liên tục phát triển
- Trong cạnh tranh: Luôn luôn, liên tục học tập, nâng cao trình độ củatừng cá nhân, của toàn công ty để vượt lên trên đối thủ
- Lý do: “người chiến thắng là người học nhanh hơn người khác”
- Fast là công ty hoạt động trog lĩch vực công nghệ cao( phần mềm) vàlĩnh vực dịch vụ tư vấn( tư vấn ứng dụng hệ thống thông tin) Cả hailĩnh vực hoạt động này của Fast đều nằm trong nền kinh tế mới- nềnkinh tế trí thức- nền kinh tế đòi hỏi phải có trình độ chuyên môn cao vàluôn luôn phải cập nhật các kiến thức mới Vì vậy chỉ có thể luôn luônhọc tập và nâng cao trình độ thì mới đáp ứng được yêu cầu ngày càngcao của khách hàng, của thị trường
- Chỉ với các sản phẩm, kiến thức tư vấn và dịch vụ chất lượng cao thì tavượt ra khỏi lĩnh vực cạnh tranh khốc liệt về giá cả trong mảng thịtrường sản phẩm và dịch vụ tư vấn cấp thấp Và điều này đòi hỏi mỗinhân viên phải luôn luôn, liên tục học tập và nâng cao trình độ của từng
cá nhân và của toàn công ty, xây dựng một công ty luôn tự học
4 Định hướng phát triển và mục tiêu của Fast
Định hướng phát triển:
- Đầu tư phát triển sản phẩm theo hướng mở rộng các phân hệ phục vụphòng kinh doanh, phòng vật tư, kho hàng và tổ chức nhân sự
Trang 11- Đa dạng hoá sản phẩm để phù hợp với nhiều nhóm khách hàng khácnhau- doanh nghiệp nhỏ, doanh nghiệp vừa và doanh nghiệp lớn.
Mục tiêu của Fast:
Đạt được và giữ vững vị trí số 1 trên thị trường Việt Nam trong lĩch vựccung cấp các giải pháp phần mềm tài chính kế toán và quản trị doanh nghiệp.Cùng khách hàng đi đến thành công là phương châm hành động của Fastnhằm đạt được mục tiêu đề ra Bằng nỗ lực và lòng tận tụy của từng cá nhân
và của toàn công ty, dựa trên cơ sở hiểu biết sâu sắc nhu cầu của khách hàng
và năng lực không ngừng nâng cao Fast sẽ triển khai các ứng dụng thànhcông, mang lại hiệu quả cho khách hàng
Hỗ trợ sử dụng sau đào tạo, bảo hành và bảo trì hệ thống thông tin
Nâng cấp và mở rộng theo sự phát triển của khách hang
Công nghệ:
Ngôn ngữ lập trình: VB.Net, Visual Foxpro, Java, ASP, PHP
Kiến trúc lập trình: Client/Server, File server, Web-based
Cơ sở dữ liệu: SQL Server, Foxpro
Định hướng phát triển:
Liên tục nâng cấp phần mềm quản lý toàn diện doanh nghiệp (ERP) FASTBUSINESS theo hướng mở rộng các nghiệp vụ mới, phát triển trên nền côngnghiệp hiện đại và nâng cao các tiện ích về sử dụng để đáp ứng đầy đủ nhấtcác yêu cầu quản lý ngày càng cao của các doanh nghiệp
Trang 12Chương II: Cơ Sở Phương Pháp Luận Của Bài Toán
Quản lý Nhân Lực
I Cơ sở lý luận của quản trị nhân lực:
Quản trị nhân lực là tất cả các hoạt động của một tổ chức để thu hút, xâydựng, phát triển, sử dụng, đánh giá, bảo toàn và gìn giữ một lực lượng laođộng phù hợp với yêu cầu của công việc của tổ chức cả về mặt số lượng vàchất lượng.Cũng như các môn khoa học khác Quản trị nhân lực cũng có đốitượng và mục tiêu của nó
1 Khái niệm, đối tượng, mục tiêu và tầm quan trọng của Quản trị nhân lực
Bất cứ một công ty, một tổ chức kinh tế hay phi kinh tế cũng đều được tạothành bởi các thành viên là con người và nguồn nhân lực của nó Do đó, cóthể nói nguồn nhân lực của một tổ chức bao gồm tất cả những người lao độnglàm việc trong tổ chức đó, còn nhân lực được hiểu là nguồn lực của mỗi conngười mà nguồn lực này gồm có thể lực và trí lực
Có nhiều cách hiểu về Quản trị nhân lực (còn gọi là Quản trị nhân sự,Quản lý nhân sự, Quản lý nguồn nhân lực) Khái niệm Quản trị nhân lực cóthể được trình bày ở nhiều giác độ khác nhau:
Với tư cách là một trong những chức năng cơ bản của quản trị tổ chức thìQuản trị nhân lực bao gồm việc hoạch định (kế hoạch hoá), tổ chức, chỉ huy
và kiểm soát các hoạt động nhằm thu hút, sử dụng và phát triển con người để
có thể đạt được các mục tiêu của tổ chức
Đi sâu vào việc làm của Quản trị nhân lực, người ta có thể hiểu Quản trịnhân lực là việc tuyển mộ, tuyển chọn, duy trì, phát triển, sử dụng, động viên
và cung cấp tiện nghi cho nhân lực thông qua tổ chức của nó
Song dù ở giác độ nào thì Quản trị nhân lực vẫn là tất cả các hoạt động củamột tổ chức để thu hút, xây dựng, phát triển, sử dụng, đánh giá, bảo toàn và
Trang 13giữ gìn một lực lượng lao động phù hợp với yêu cầu công việc của tổ chức cả
về mặt số lượng và chất lượng
Đối tượng của Quản trị nhân lực là người lao động với tư cách là những cánhân, cán bộ, công nhân viên trong tổ chức và các vấn đề có liên quan đến họnhư công việc và các quyền lợi, nghĩa vụ của họ trong tổ chức
Mục tiêu cơ bản của bất kỳ tổ chức nào cũng là sử dụng một cách có hiệusuất nguồn nhân lực để đạt được mục tiêu của tổ chức đó Quản trị nhân lựcnhằm củng cố và duy trì đầy đủ số lượng và chất lượng lao động cần thiết cho
tổ chức để đạt được mục tiêu đặt ra Quản trị nhân lực giúp tìm kiếm và pháttriển những hình thức, những phương pháp tốt nhất để người lao động có thểđóng góp nhiều sức lực cho việc đạt được các mục tiêu của tổ chức, đồng thờicũng tạo cơ hội để phát triển không ngừng chính bản than người lao động.Như vậy, Quản trị nhân lực đóng vai trò trung tâm trong việc thành lập tổchức và giúp các tổ chức tồn tại và phát triển Tầmm quan trọng của Quản trịnhân lực trong tổ chức xuất phát từ vai trò quan trọng của con người trong tổchức Con người là yếu tố cơ bản cấu thành nên tổ chức, vận hành tổ chức vàquyết định sự tồn tại của tổ chức Nguồn nhân lực là một trong những nguồnlực không thê thiêú được của các tổ chức nên Quản trị nhân lực là một lĩnhvực quan trọng của quản lý người trong mọi tổ chức Mặt khác, quản lý cácnguồn lực khác cũng sẽ không có hiệu quả nếu tổ chức không quản lý tốtnguồn nhân lực, vì vậy suy cho cùng thì mọi hoạt động quản lý đều thực hiệnbởi con người
Ngày nay, khi nền kinh tế ngày càng phát triển nhanh chóng, thì Quản trịnhân lực có tầm quan trọng ngày càng tăng trong các tổ chức Điều đó đượcthể hiện qua các nguyên nhân sau:
Do sự cạnh tranh ngày càng gay gắt trên thị trường nên các tổ chức muốntồn tại và phát triển buộc phải cải tổ tổ chức của mình theo hướng tinh giảm,gọn nhẹ, năng động trong đó yếu tố con người mang tính quyết định Bởi vậy
Trang 14việc tìm đúng người phù hợp với công việc, đúng cương vị đang cần là vấn đềrất quan tâm đối với mọi loại hình tổ chức hiện nay.
Sự tiến bộ của khoa học kỹ thuật cùng với sự phát triển của nền kinh tếbuộc các nhà quản trị phải biết thích ứng Do đó việc tuyển chọn, sắp xếp, đàotạo, điều động nhân sự trong tổ chức nhằm đạt hiệu quả tối ưu là vấn đề phảiđặt lên hàng đầu
Nghiên cứu về Quản trị nhân lực sẽ giúp cho các nhà quản trị học đượccách giao tiếp với người khác; biết cách đặt câu hỏi và biết cách lăng nghe,biết cách tìm ra ngôn ngữ chung với nhân viên của mình và biết cách nhạycảm với nhu cầu của nhân viên say mê với công việc và tránh được các sailầm trong việc tuyển chọn, sử dụng lao động để nâng cao chất lượng thực hiệncông việc và nâng cao hiệu quả của tổ chức
2 Các hoạt động chủ yếu của quản trị nhân lực
Hoạt động sản xuất kinh doanh ngày nay đặt ra cho quản trị nhân lực rấtnhiều vấn đề cần giải quyết Bao gồm từ việc đối phó với những thay đổi củamôi trường kinh doanh, những biến động không ngừng của thị trường laođộng hay những thay đổi của pháp luật về lao động…
Tuy nhiên có thể phân chia các hoạt động chủ yếu của Quản trị nhân lựctheo 3 nhóm chức năng chủ yếu sau đây:
Nhóm chức năng thu hút ( hình thành) nguồn nhân lực:
Nhóm này bao gồm các hoạt động bảo đảm cho tổ chức có đủ nhân viên về
số lượng cũng như chất lượng Muốn vậy tổ chức phải tiến hành: kế hoạchhoá nhân lực; phân tích, thiết kế công việc; biên chế nhân lực; tuyển mộ,tuyển chọn, bố trí nhân lực
Kế hoạch hoá nhân lực: là quá trình đánh giá nhu cầu của tổ chức vềnguồn nhân lực phù hợp với mục tiêu chiến lược, các kế hoạch cuat tổ chức
và xây dựng các giải pháp nhằm đáp ứng nhu cầu đó
Thiết kế và phân tích công việc: là quá trình xác định, xem xét, khảo sátnhững nhiệm vụ và những hành vi liên quan đến một công việc cụ thể Thiết
Trang 15kế và phân tích công việc thường được sử dụng để xây dựng chức năng nhiệm
vụ và yêu cầu về trình độ kỹ thuật của công việc làm cho cơ sở cho công táctuyển mộ, tuyển chọn, đào tạo, thù lao…
Biên chế nhân lực là quá trình thu hút người có trình độ vào tổ chức, lựachọn người có khả năng đáp ứng yêu cầu công việc trong những ứng viên xinviệc rồi sắp xếp hợp lý (đúng việc, đúng thời điểm) nhân viên vào các vị tríkhác nhau trong tổ chức
Nhóm chức năng đào tạo và phát triển nguồn lực: Nhóm chức năng nàychú trọng các hoạt động nhằm nâng cao năng lực của nhân viên, đảm bảo chonhân viên trong tổ chức có kỹ năng, trình độ lành nghề cần thiết để hoànthành công việc được giao và tạo điều kiện cho nhân viên phát triển được tối
đa các năng lực cá nhân Bên cạnh việc đào tạo mời còn có các hoạt động đàotạo lại nhân viên mỗi khi có sự thay đổi về nhu cầu sản xuất kinh doanh hayquy trình kỹ thuật, công nghệ đổi mới
Nhóm chức năng duy trì nguồn nhân lực: nhóm này chú trọng đến việcduy trì và sử dụng có hiệu quả nguồn nhân lực trong tổ chức Nhóm chứcnăng này bao gồm 3 hoạt động: đánh giá thực hiện công việc và thù lao laođộng cho nhân viên, duy trì và phát triển các mối quan hệ lao động tốt đẹptrong doanh nghiệp
Thông qua hệ thống thù lao lao động và phúc lợi một mặt thúc đẩy nhânviên làm việc hăng say, tận tình, có ý thức trách nhiệm Mặt khác, đây lànhững biện pháp hữu hiệu để thu hút và duy trì được đội ngũ lao động lànhnghề cho doanh nghiệp
Những công việc chủ yếu của hoạt động này là:
-Đánh giá sự thực hiện công việc của nhân viên
-Xây dựng và quản lý hệ thống thù lao lao động
-Thiết lập và áp dụng các chính sách, phúc lợi, phụ cấp, bảo hiểm
xã hội…
Trang 16Duy trì, phát triển các mối quan hệ lao động tốt đẹp vừa tạo ra bầu khôngkhí tâm lý xã hội tập thể lành mạnh vừa giúp cho nhân viên thoả mãn vớicông việc của mình.
Hoạt động này bao gồm các công việc:
-Ký kết hợp đồng lao động, thoả ước lao động tập thể
-Giải quyết các tranh chấp, bất bình trong lao động, giải quyết kỷluật lao động
-Cải thiện điều kiện làm việc
-Chăm sóc y tế, bảo hiểm và an toàn lao động
3.Triết lý quản trị nhân lực
Mỗi một tổ chức đối xử đối với người lao động theo một cách riêng củamình tuỳ thuộc vào triết lý được xây dựng và duy trì trong đó
Như vậy, chúng ta có thể hiểu: Triết lý Quản trị nhân lực là những tưtưởng, quan điểm của người lãnh đạo cấp cao về cách thức quản lý con ngườitrong tổ chức Từ đó mà tổ chức có các biện pháp, chính sách về Quản trịnhân lực và chính các biện pháp, phương pháp quản lý đó có tác dụng nhấtđịnh tới hiệu quả, tinh thần và thái độ làm việc của người lao động
4 Quản trị nhân lực là một khoa học và là một nghệ thuật
Quản trị nhân lực là một hệ thống các kiến thức, các nguyên tắc và cácphương pháp khoa học đã được đúc rút và kiểm nghiệm qua thực tế để thựchiện các chức năng quản lý con người, tạo động lực để thúc đẩy hoạt độngcủa họ, liên kết và phối hợp các hoạt động của con người Lãnh đạo và kiểmtra các hoạt động của con người để thực hiện được các chức năng quản lý conngười đó, người quản lý phải biết vận dụng linh hoạt các kiến thức, phươngpháp quản lý cho phù hợp với từng người lao động trong từng trường hợp.Quản trị nhân lực đã trải qua nhiều thế kỷ, được nhiều nhà quản lý, nhàkhoa học nghiên cứu, tìm hiểu đúc kết thành nhiều trường phái, được thựctiễn chấp nhận, áp dụng và ngày nay người ta đã viết thành sách giáo khoa để
Trang 17giảng dạy, hoặc chuyên đề đăng báo, chủ đề tuyên truyền, phổ biến và ápdụng phổ biến trong thực tế sản xuất, cũng như nhiều lĩnh vực khác.
Vì vậy Quản trị nhân lực thực sự đã trở thành một khoa học Những chứcnăng(nội dung) của nó liên quan với nhiều khoa học chung, cũng như khoahọc chuyên ngành (khoa học tự nhiên, khoa học xã hội, khoa học kỹ thuật,khoa học kinh tế, khoa học quản lý, khoa học tổ chức,,,)
Quản trị nhân lực liên quan đến con người, vì con người là đối tượng củaquản lý, mà trong quá khứ, hiện tại cũng như tương lai, con người luôn thayđổi, luôn luôn phát triển, con người có được kiến thức từ giáo dục, có kinhnghiệm từ hoạt động thực tế, hoặc từ quan sát thực tế Con người có văn hóa,
có kiến thức, có kinh nghiệm thực tế đó không chịu đứng yên để nhìn điềukiên hoạt động, kết quả hoạt động của mình lắp đặt như cũ hoặc xấu đi, màluôn luôn phấn đấu vươn lên những điều kiện tốt đẹp hơn Con người khôngngừng cải tiến kỹ thuật, công nghệ tiên tiến, đấu tranh cho những quan hệ tự
do bình đẳng giữa con người để làm cho sản xuất ngày càng hiệu quả, đờisống ngày càng được nâng cao Người quản lý tiên tiến phải tính đến nhữngbiến đổi về chất của đối tượng quản lý, đồng thời cũng tính đến những điềukiện khách quan, bắng trí tưởng tượng sáng tạo, có dự đoán chính xác đúc kếtthành lý luận, kinh nghiệm để áp dụng kiến thức đó Mọi biến đổi của cácđiều kiện, yếu tố nói trên đòi hỏi người quản l ý phải có thay đổi trong tư duy,tìm những hình thức, phương pháp, cơ chế quản lý mới, nhằm đem lại hiệuquả cao trong Quản trị nhân lực Tất cả điều đó không chỉ là một khoa học,
Trang 18Storage: Lưu trữ dữ liệu trên đĩa và có thể chuyển đổi dữ liệu từ cơ sở dữliệu này sang cơ sở dữ liệu khác, trong thực tế có nhiều loại cơ sở dữ liệudạng sử dụng, nếu bạn sử dụng cho mô hình có quy mô nhỏ, bạn có thể chọn
cơ sở dữ liệu nhỏ như: Microsoft Excel, Microsoft Access, MySQL,… Nếuứng dụng có quy mô lớn, bạn có thể chọn cơ sở dữ liệu có quy mô lớn nhưOrcacle, SQL Server,…
Accessibility: Truy cập dữ liệu phụ thuộc vào mục đích và yêu cầu củangười sử dụng, ở mức độ mang tính cục bộ, truy cập dữ liệu ngay trong cơ sở
dữ liệu với nhau, nhằm trao đổi hay xử lý dữ liệu bên trong của chính nó,nhưng do mục đích và yêu cầu của người dung vượt ra ngoài cơ sở dữ liệu,bạn cũng cần có các phương thức truy cập dữ liệu giữa các cơ sở dữ liệu vớinhau như: Microsoft Access với SQL Server, hay SQL Server và cơ sở dữliệu Oracle,…
Organization: Khi đề cập đến tổ chức cơ sở dữ liệu, chúng phụ thuộc vào
mô hình cơ sở dữ liệu, phân tích và thiết kế cơ sở dữ liệu, điều này có nghĩarằng tổ chức cơ sở dữ liệu phụ thuộc vào đặc điểm riêng của từng ứng dụng.Tuy nhiên, khi tổ chức cơ sở dữ liệu, bạn cần phải tuân theo một số tiêu chuẩncủa hệ thống cơ sở dữ liệu, nhằm tăng tính tối ưu khi truy cập và xử lý
Manipulation: Trong nhiều trường hợp bạn cần tính toán và truy vấn dữliệu với các mục đích khác nhau, bạn cần phải sử dụng các phát biểu truy vấncùng các phép toán, phát biểu của cơ sở dữ liệu để kết xuất ra kết qua rnhưyêu cầu của mình Thực tế, để thao tác hay xử lý dữ liệu bên trong chính cơ
sở dữ liệu hay sử dụng ngôn ngữ lập trình giao tiếp như các ngôn ngữ lậptrình: PHP, C++, Java, Visual Basic, C Sharp,…
2 Giới thiệu về cơ sở dữ liệu MySQL
MySQL, cơ sở dữ liệu SQL mã nguồn mở thông dụng nhất , được cungcấp bởi MySQL AB MySQL AB là một công ty thương mại thực hiện việctạo ra các dịch vụ cung cấp cho doanh nghiệp đó xung quanh cơ sở dữ liệuMySQL
Trang 192.1 MySQL là một hệ quản trị CSDL.
Một CSDL là một tập hợp cấu trúc của dữ liệu Nó có thể là bất kỳ một cái
gì từ một danh sách bán hàng đơn giản cho tới gallery ảnh hoặc số lượng lớncác thông tin trong một mạng doanh nghiệp Để thêm, truy nhập và xử lý dữliệu được lưu trữ trong một CSDL máy tính, ta cần một hệ quản trị CSDL nhưMySQL Từ khi các máy tính thực hiện tốt việc xử lý lượng lớn dữ liệu, quảntrị CSDL đóng một vai trò chính yếu trong việc tính toán, như là các công cụđơn lẻ, hoặc một phần của các ứng dụng khác
2.2 MySQL là một hệ quản trị CSDL quan hệ.
Một CSDL quan hệ lưu trữ dữ liệu trong trong một số bảng chuyên biệt tốthơn là việc đặt toàn bộ dữ liệu trong một nơi lưu trữ lớn Điều này làm tăngthêm tốc độ và sự linh hoạt Các bảng được liên kết với nhau bằng cách địnhnghĩa các quan hệ tạo cho nó khả năng kết nối dữ liệu từ một vài bảng khácnhau theo yêu cầu SQL là một phần của MySQL trong “Structured QueryLanguage”- ngôn ngữ chuẩn thông dụng nhất được dùng để truy nhập cácCSDL
2.3 MySQL là một phần mềm mã nguồn mở
Mã nguồn mở có nghĩa là nó có thể được sử dụng bởi bất kỳ ai cho mụcđích sử dụng hoặc thay đổi nào Bất kỳ ai cũng có thể download MySQL từinternet và sử dụng nó mà không phải trả bất kỳ một thứ gì Bất kỳ ai có ýthích cũng có thể nghiên cứu mã nguồn và thay đổi chúng theo yêu cầu củariêng mình MySQL dùng GPL (GNU General Public License) ‘http://www.gnu Org’, để định ra ta có thể được làm gì và không được làm gì vớiphần mềm trong các hoàn cảnh khác nhau Nếu ta cảm thấy khó chịu với GPLhoặc muốn nhúng MySQL trong một ứng dụng thương mại thì ta có thể muamột bản quyền thương mại từ các nhà cung cấp
2.4 Lý do dùng MySQL
MySQL rất nhanh, đáng tin cậy và dễ dàng để sử dụng Nếu điều đó là cái
mà bạn đang mong muốn, bạn có thể dùng thử nó MySQL cũng có một tập
Trang 20các đặc điểm rất thiết thực được phát triển trong một sự hợp tác rất chặt chẽvới người sử dụng Bạn có thể đem so sánh một cách công phu giữa MySQL
và một số hệ quản trị CSDL khác trong trang web chấm điểm của nhà cungcấp
MySQL đã được phát triển một cách sáng tạo để nắm bắt các CSDL rấtlớn và nhanh hơn rất nhiều các giải pháp hiện tại và đã thành công trong việcđược sử dụng trong các môi trường sản xuất đòi hỏi cao trong vài năm Thôngqua quá trình phát triển không ngừng, ngày nay, MySQL cung cấp một tậpcác hàm rất hữu ích và dồi dào Sự kết nối, tốc độ và sự bảo mật đã làm choMySQL trở nên thích ứng cao cho việc truy cập các CSDL trên internet
2.5 Các đặcđiểm về mặt kỹ thuật của MySQL
MySQL là một hệ thống client/server bao gồm một SQL server đa luồngcho phép hỗ trợ nhiều thiết bị đầu cuối khác nhau, một vài chương trình clientkhác nhau và các thư viện, các công cụ quản trị và một vài giao diện lập trình.Các nhà cung cấp cũng cung cấp MySQL như là một thư viện đa luồng mà
ta có thể kết nối trong ứng dụng của ta để đạt tới một sản phẩm nhỏ hơn,nhanh hơn, dễ dàng quản lý hơn
MySQL có nhiều các phần mềm được phân phối có sẵn
Điều này thật sự thuận tiện cho ta trong việc tìm ứng dụng yêu thích của tahoặc ngôn ngữ hỗ trợ MySQL
B Giới thiệu chung về PHP (Hypertext Preprocessor )
Trang 21Điều nhận ra PHP từ những gì giống Javascript bên phía Client là mãchương trình được thực hiện bên phía server Nếu ta đã có một script giốngnhư trên bên phía server của ta, client sẽ nhận các kết quả từ việc chạy script
đó, mà không còn cách nào để xác định điều gì bên dưới mã lệnh Thậm chí ta
có thể cấu hình webserver của ta để xử lý tất cả các file HTML của ta vớiPHP, và vì vậy không còn cách nào mà những người sử dụng có thể biết điều
gì ta lên kế hoạch
2 Lịch sử ra đời của PHP
PHP đã được nghĩ đến trong khoảng cuối năm 1994 bởi Rasmus Lerdorf.Các phiên bản không phát hành trước đó đã được dùng trên chính trang chủcủa anh ta để theo dõi ai đang tìm bản lý lịch trực tuyến của anh ta Phiên bảnđầu tiên được dùng bởi những người khác đã có sẵn trong khoảng thời giantrước năm 1995 và đã được biết đến như là các công cụ trang chủ cá nhân Nóbao gồm một bộ máy phân tích từ loại một cách đơn giản mà chỉ được hiểu làmột số ít các macro đặc biệt và một số các tiện ích mà được dùng một cáchthông dụng trên các trang chủ trước đó Bộ phân tích từ loại đã được viết lạivào giữa năm 1995 và có tên là PHP/FI phiên bản 2 FI có được lạ do từ một
Trang 22gói khác của Rasmus đã được viết lại được biên dịch định dạng dữ liệuHTML Anh ta đã kết hợp các script các công cụ trang chủ cá nhân với trìnhbiên dịch form và thêm vào hỗ trợ mSQL và PHP/FI đã ra đời PHP/FI đãphát triển lên một cách đáng kinh ngạc và mọi người đã bắt đầu đóng góp mãcho nó.
Để thống kê một cách nghiêm khắc là một điều phức tạp, nhưng ước lượngkhoảng cuối năm 1996 PHP/FI đã được dùng trên ít nhất 15000 trang webtrên khắp thế giới Khoảng giữa năm 1997 con số này đã tăng lên trên 50000trang web Giữa năm 1997 cũng đã thấy một sự thay đổi trong việc phát triểnPHP Nó thay đổi từ việc sở hữu dự án cưng của Rasmus rằng một nhómngười đã đóng góp vào, để có thêm nhiều sự thống nhất có trật tự của nhómsao cho đạt hiệu quả cao
Bộ phân tích từ loại đã được viết lại một cách hỗn tạp bởi Zeev Suraski vàAndi Gutmans và bộ phân tích từ loại mới này đã định hình nền tảng chophiên bản 3 của PHP Nhiều mã tiện ích từ PHP/FI đã được dùng cho PHP3
và nhiều trong số đó đã được viết lại một cách hoàn toàn
Phiên bản PHP4 dùng bộ máy scripting Zend để phân phối sự thực hiệncao cấp hơn, hỗ trợ một mảng các thư viện và các mở rộng của các hãng thứ 3rộng rãi hơn và chạy như là một module server địa phương với toàn bộ cácweb server được ưa chuộng
Ngày nay, PHP 3 hoặc PHP 4 hiện tại chuyên chở một số lượng các sảnphẩm thương mại như web server Red Hat’s Stronghold Ngày nay, theo ướclượng thì PHP được dùng trong khoảng 5.1 triệu trang trên toàn thế giới vàhơn cả IIS server của Microsoft ( khoảng 5.03 triệu trang)
3 CÁC KIỂU DỮ LIỆU
3.1 Kiểu số nguyên
Các số nguyên có thể được chỉ ra bằng cách sử dụng bất kỳ các cú phápsau:
$a = 1234; # số thập phân
Trang 23$a = -123; # Một số âm
$a = 0123; # số hệ cơ số 8 (tương đương số 83 hệ thập phân)
$a = 0x12; # số hệ 16 (tương đương số 18 hệ thập phân)
Kích cỡ của một số nguyên phụ thuộc vào nền, mặc dù một giá trị lớn nhấtkhoảng 2 tỷ cũng là một giá trị thông thường (đó là 32 bit đã được đánh trị)
3.3 Các chuỗi
Các chuỗi có thể được chỉ ra bằng cách dùng một trong hai tập phân định.Nếu chuỗi được đóng lại trong dấu nháy kép(“), số lượng bên trong chuỗi
sẽ được mở rộng ra (phụ thuộc vào một số hạn chế của từ loại) Cũng như C
và Perl, dấu xổ ngược (“\”) có thể được sử dụng trong việc chỉ ra các ký tựđặc biệt:
Trang 24Thứ tự Ý nghĩa
{1,2} là một ký tự trong hệ cơ số 16
Nếu ta cố gắng để đưa ra bất kỳ một ký tự nào khác , cả dấu xổ trái và ký
tự sẽ là đầu ra Trong PHP3, một lời cảnh báo sẽ được phát ra tại mứcE_NOTICE khi điều này xảy ra Trong PHP4, không một lời cảnh báo nàođược đưa ra
Cách thứ hai để đưa ra một chuỗi sử dụng dấu nháy đơn(“ ‘ “).Khi mộtchuỗi được bao bởi dấu nháy đơn, chỉ có những bỏ qua sẽ được hiểu là “\\” và
“\”.Điều này nhằm mục đích tạo sự thuận lợi, bởi vậy ta có thể dùng dấu nháyđơn hoặc dấu xổ ngược trong một chuỗi trích dẫn đơn Số lượng sẽ khôngđược trải rộng ra trong một chuỗi trích dẫn đơn
$str = $str " with some more text";
/* Another way to append, includes an escaped newline */
$str = " and a newline at the end.\n";
/* This string will end up being '<p>Number: 9</p>' */
$num = 9;
$str = "<p>Number: $num</p>";
Trang 25/* This one will be '<p>Number: $num</p>' */
/* Get the last character of a string */
$str = 'This is still a test.';
$last = $str[strlen($str)-1];
?>
Sự chuyển đổi chuỗi
Khi một chuỗi được xác định là một giá trị số, giá trị kết quả và kiểu được
mô tả như sau:
Chuỗi sẽ ước lượng như là một số double nếu nó chứa bất kỳ một trong sốcác ký tự ‘.’,’e’, or ‘E’ Trong trường hợp khác, nó sẽ ước lượng là một sốnguyên
Giá trị được xác định bởi phần ban đầu của chuỗi Nếu chuỗi bắt đầu với
số liệu là số, nó sẽ là giá trị được dùng Trong trường hợp khác, giá trị sẽ là
0 Số liệu dạng số là một dấu hiệu tuỳ chọn, được theo sau bởi một hoặcnhiều con số( tuỳ chọn chứa một dấu chấm thâp phân), được theo sau bởi mộttuỳ chọn số mũ Số mũ là một ký tự’e’ hoặc ‘E’ đượctheo sau bởi một hoặcnhiều số
Khi biểu thức đầu tiên là một chuối, dạng cảu biến sẽ phụ thuộc vào biểuthức thứ hai
$foo = 1 + "10.5"; // $foo is double (11.5)
$foo = 1 + "-1.3e3"; // $foo is double (-1299)
Trang 26$foo = 1 + "bob-1.3e3"; // $foo is integer (1)
$foo = 1 + "bob3"; // $foo is integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is integer (11)
$foo = 1 + "10 Little Piggies"; // $foo is integer (11)
$foo = "10.0 pigs " + 1; // $foo is integer (11)
$foo = "10.0 pigs " + 1.0; // $foo is double (11)
Để có thêm thông tin về sự chuyển đổi này, sem thêm trang Unix manualcho strod(3)
Nếu bạn muốn kiểm tra bất kỳ mọt ví dụ nào trong phần này, bạn cố thểcắt và dán các vị dụ và chèn dòng sau để xem điều gì sẽ xảy ra:
echo "\$foo==$foo; type is " gettype ($foo) "<br>\n";
3.4 Các mảng
Các mảng thật sự vừa giống các bảng hỗn tạp ( Các mảng có liên kết vớinhau) vừa giống các mảng chỉ số( các vector)
3.4.1 Mảng một chiều
PHP hỗ trợ cả mảng vô hướng và mảng có hướng Trong thực tế, không có
gì khác biệt giữa chúng Ta có thể tạo một mảng sử dụng các hàm list() hoặcarray(), hoặc ta có thể thiết lập các giá trị của các phần tử của mảng một cách
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world"
Các mảng có thể được sắp xếp bằng cách dùng các hàm asort() , arsort() ,ksort() , sort() , uasort() , usort() , và uksort()
Trang 27Ta có thể đếm số các phần tử trong một mảng bằng cách dùng hàmcount().
Ta có thể duyệt qua một mảng bằng cách dùng các hàm next() và prev().Một cách thông thường khác để duyệt qua các phần tử của mảng là dùng hàmeach()
3.4.2 Các mảng đa chiều
Các mảng nhiều chiều thật sự khá đơn giản Cho mỗi chiều của mảng, ta
có thể thêm giá trị khác[khoá] vào cuối:
$a[1] = $f; # one dimensional examples
$a["foo"] = $f;
$a[1][0] = $f; # two dimensional
$a["foo"][2] = $f; # (you can mix numeric and associative indices)
$a[3]["bar"] = $f; # (you can mix numeric and associative indices)
$a["foo"][4]["bar"][0] = $f; # four dimensional!
Trong PHP 3 không cho phép tham chiếu các mảng đa chiều trực tiếptrong các chuỗi Ví dụ sau đây sẽ không cho kết quả mong muốn:
$a[3]['bar'] = 'Bob';
echo "This won't work: $a[3][bar]";
Trong PHP 3, ở trên sẽ cho đầu ra là: This won't work: Array[bar]
Ta có thể làm lại như sau:
$a[3]['bar'] = 'Bob';
echo "This will work: " $a[3][bar];
Tuy nhiên, trong PHP 4, tất cả các vấn đề có thể được dùng mẹo bằng cáchđóng tham chiếu mảng( bên trong chuỗi) trong dấu ngoặc nhọn:
$a[3]['bar'] = 'Bob';
echo "This will work: {$a[3][bar]}";
Trang 28
Ta có thể điền đầy các mảng đa chiều bằng nhiều cách, nhưng một điềuphức tạp để hiểu là bằng cách nào để dùng lệnh array() để cho các mảng kếthợp
Hàm array() có thể được lồng vào nhau để cho ra các mảng nhiều chiều:
Khởi tạo đối tượng
Để khởi tạo một đối tượng, ta dùng câu lệnh new để đưa đối tượng tới mộtbiến
Trang 29Trong PHP3 các biến luôn luôn được gán bởi các giá trị Điều đó có nghĩa
là khi ta gán một biểu thức cho một biến thì toàn bộ giá trị của biểu thứcnguồn sẽ được sao chép đến biến đích Điều này có nghĩa là ,ví dụ như saukhi gán một giá trị của một biến cho biến kia, sự thay đổi của một trong sốnhững biến này sẽ không ảnh hưởng đến biến kia
PHP4 cung cấp một cách khác để gán các giá trị cho các biến gán bằngcách tham chiếu Điều này có nghĩa là biến mới dễ dàng tham chiếu (hay nóicách khác là’trở thành một biệt hiệu ’ hoặc ‘trỏ tới’) biến gốc Những sự thayđổi này của biến mới làm ảnh hưởng đến biến gốc và ngược lại Điều nàycũng có nghĩa là sẽ không có một sự sao chép nào cả ,do vậy sự gán trị xảy ra
Trang 30rất nhanh Tuy nhiên bất cứ sự tăng tốc nào cũng có thể được lưu ý là chỉtrong những vòng lặp kín hoặc khi gán những mảng lớn cho các đối tượng.
Để gán trị bằng cách tham chiếu ,một cách đơn giản hãy để một dấu &trước biến mà đang được gán (biến nguồn )
Cần lưu ý một điều quan trọng là chỉ có tên của các biến mới có thể đượcgán bởi tham chiếu
6 CÁC HẰNG SỐ
PHP định nghĩa một số hằng số và cung cấp một cơ chế cho việc địnhnghĩa nhiều hơn tại thời gian chạy Các hằng số cũng khá giống các biến số,các hằng phải được định nghĩa bằng việc sử dụng hàm define(), và chúngkhông thể được định nghĩa lại sau này tới giá trị khác
7 CÁC BIỂU THỨC
Các biểu thức là các nền tảng quan trọng nhất của PHP.Trong PHP, hầunhư cái gì ta viết đều là biểu thức Cách đơn giản và chính xác nhất để địnhnghĩa một biểu thức là “ bất kỳ cái gì đều có một giá trị”
Những kiểu cách đơn giản nhất của các biểu thức là các hàm và các biến.Khi ta gõ “$a=5”, ta đang gán ‘5’ cho $a Có thể thấy ‘5’có giá trị 5, hoặc nóicách khác ‘5’ là một biểu thức với giá trị của 5 ( trong trường hợp này, ‘5’ làmột hằng số nguyên)
Sau sự gán này, ta thấy rằng giá trị của $a sẽ là 5, bởi vậy nếu ta viết
$b=$a, ta sẽ cho rằng kết qủa cũng tương tự như khi ta viết $b=5 Nói cáchkhác, $a là một biểu thức với giá trị của 5 Nếu mọi việc đều đúng, điều này làchính xác điều gì sẽ xảy ra
Các ví dụ hơi phức tạp hơn một chút của các biểu thức là các hàm Ví dụ,
ta hãy xem ví dụ sau:
function foo () {
return 5;
}
Trang 31Cho rằng bạn đã biết qua về khái niệm của các hàm, bạn sẽ cho rằng khi
gõ $c=foo() thì cũng giống như viết $c=5, và bạn cũng đã đúng Các hàm làcác biểu thức với giá trị là giá trị được trả về của chúng Khi foo() trả về giátrị 5, giá trị của biểu thức ‘foo()’ là 5 Thông thường không chỉ trả về một giátrị tĩnh ngoài ra còn tính toán một thứ gì đó
Dĩ nhiên là các giá trị trong PHP không phải là các số nguyên PHP hỗ trợ
3 kiểu giá trị vô hướng: các giá trị số nguyên,các giá trị con trỏ động và cácgiá trị chuỗi (Các giá trị vô hướng là các giá trị mà ta không thể “bẻ” thànhcác các thành phần nhỏ hơn, không như các mảng) PHP cũng hỗ trợ hai kiểuphức: các mảng và các đối tượng Một trong các kiểu giá trị này có thể đượcgán vào trong các biến hoặc được trả về từ các hàm
Trước đó, người sử dụng của PHP/FI 2 sẽ không cảm nhận được bất kỳthay đổi nào Tuy vậy, PHP đạt được các biểu hiện nhiều hơn trong cùng mộtcách mà nhiều ngôn ngữ khác đã làm PHP là một ngôn ngữ hướng biểu thức,trong sự cảm nhận rằng mọi thứ đều là biểu thức Hãy để ý đến ví dụ trướcđây, ‘$a=5’ Thật dễ dàng để thấy rằng có hai giá trị được gọi lên từ đây, giátrị của hằng số nguyên ‘5’, và giá trị của $a mà đang được cập nhật tới 5.Nhưng sự thật là chỉ có một giá trị thêm vào được gọi ra ở đây, và đó là giá trịcủa sự gán trị của chính bản thân nó Sự gán trị kiểu này ước lượng tới giá trịđược gán, trong trường hợp này là 5 Trong thực tiễn, nó có ý nghĩa là ‘$a=5’,không chú ý đến gì nó thực hiện, là một biểu thức với giá trị 5 Do đó, viếtmột thứ gì đó như ‘$b=($a=5)’ cũng giống như viết ‘$a=5;$b=5;’) (một dấuhai chấm đánh dấu sự kết thúc của một câu lệnh) Ta cũng có thể thực hiệnviệc gán trị như sau:’$b=$a=5’
8 CÁC CẤU TRÚC ĐIỀU KHIỂN
Trang 32Ví dụ sau sẽ hiển thị a is big than b nếu $a lớn hơn $b:
if ($a > $b)
print "a is bigger than b";
Thông thường ta muốn có nhiều hơn một câu lệnh để được thực hiện mộtcách có điều kiện Dĩ nhiên, không cần bao bọc mỗi câu lệnh với một mệnh
đề if Thay vào đó, ta có thể nhóm một vài câu lệnh vào trong một nhóm câu
lệnh Ví dụ, đoạn mã sau sẽ hiển thị a is bigger than b nếu $a lớn hơn $b, và
sẽ gán giá trị của biến $a sang cho biến $b:
Trang 338.2 Cấu trúc Else
Thông thường ta muốn thực hịên một câu lệnh nếu gặp phải một điều kiệnchắc chắn nào đó,và một câu lệnh khác nếu điều kiện này là sai Điều này cần
dùng đến else else mở rộng một câu lệnh if để thực hiện một câu lệnh trong
trường hợp biểu thức trong câu lệnh if có giá trị là FALSE Ví dụ, đoạn mã
sau sẽ hiển thị a is bigger than b nếu $a lớn hơn $b và a is not bigger than b
trong trường hợp ngược lại
Elseif, như tên của nó đã gợi ý, là một sự kết nối của if và else Giống như
else, nó mở rộng một câu lệnh if để thực hiện một câu lệnh khác trong trườnghợp biểu thức if thông thường nhận giá trị FALSE Tuy nhiên, không giốngnhư else, nó sẽ chỉ thực hiện biểu thức loại trừ lẫn nhau nếu biểu thức điều
kiện elseif nhận giá trị TRUE Ví dụ, đoạn mã sau đây sẽ hiển thị a is bigger than b, a equal to b hoặc a is smaller than b:
Trang 34Câu lệnh elseif chỉ được thực hiện nếu biểu thức if trước đó và bất kỳ cácbiểu thức elseif nhận giá trị FALSE, và biểu thức elseif hiện tại nhận giá trịTRUE.
8.4Cấu trúc while
Các vòng lặp while là một dạng lặp đơn giản nhất trong PHP Chúng giốnghệt trong C Dạng cơ bản của câu lệnh while là:
while (expr) statement
Ý nghĩa của câu lệnh while thật đơn giản Nó nói cho PHP thực hiện cáccâu lệnh lặp đi lặp lại lồng nhau, khi biểu thức while nhận giá trị TRUE Giátrị của của biểu thức được kiểm tra mỗi lần tại đầu vòng lặp, bởi vậy nếu giátrị này thay đổi trong quá trình thực hiện các câu lệnh, quá trình thực hiện sẽkhông dừng cho đến khi kết thúc sự lặp lại ( mỗi lần PHP chạy các câu lệnhtrong vòng lặp là một sự lặp lại) Thỉnh thoảng nếu biểu thức while nhận giátrị FALSE từ khi bắt đầu, các câu lệnh bên trong sẽ không được thực hiện
Trang 35Giống như câu lệnh if, ta có thể nhóm nhiểu câu lệnh trong cùng một vònglặp while bằng cách bao nhóm các câu lệnh trong các dấu móc, hoặc bằng cúpháp lựa chọn:
while (expr): statement endwhile;
8.5 do while
Các vòng lặp do while cũng rất giống với các vòng lặp while, trừ việckiểm tra điều kiện đúng tại lúc kết thúc mỗi vòng lặp thay vì ngay ban đầu Sựkhác biệt chính với các vòng lặp while thông thường là sự lặp lại đầu tiên củamột vòng lặp do while được bảo đảm thực hiện (điều kiện đúng chỉ đượcchỉ ra tại cuối vòng lặp), trong khi nó có thể sẽ không được thực hiện trongvòng lặp while nếu ngay từ đầu điều kiện kiểm tra là FALSE
mã dưới đây mô tả điều này:
Trang 36Cú pháp của một vòng lặp for là:
for (expr1; expr2; expr3) statement
Biểu thức thứ nhất (expr1 ) được định giá (được thực hịên) một lần vô điềukiện khi bắt đầu vòng lặp
Trong lúc bắt đầu của mỗi lần lặp, expr2 được định giá Nếu nó định giá làTRUE, vòng lặp được tiếp tục và các câu lệnh bên trong vòng lặp sẽ đượcthực hiện Nếu nó định giá là FALSE, sự thực thi của vòng lặp sẽ kết thúc.Tại cuối mỗi lần lặp, expr3 được định giá (được thực hiện)
Mỗi một biểu thức có thể trống rỗng expr2 đang trống có nghĩa là vònglặp sẽ được chạy vô hạn định( PHP hoàn toàn xem nó là TRUE, giống nhưC) Điều này có thể không vô dụng như ta nghĩ, trước đây thông thường tamuốn kết thúc vòng lặp bằng cách dùng câu lệnh điều kiện break thay vì sửdụng biểu thức đúng đắn for
PHP cũng cung cấp cú pháp hai chấm đan xen nhau cho các vòng lặp for:for (expr1; expr2; expr3): statement; ; endfor;
Trang 37Các ngôn ngữ khác có một câu lệnh foreach để duyệt một danh sách hoặcmột mớ lộn xộn PHP3 không có cấu trúc này, PHP4 thì có Trong PHP3, ta
có thể nối while với các hàm list() và each() để lấy ra kết qủa tương tự
8.7 Cấu trúc Foreach
PHP4 ( không phải PHP3) bao gồm một cấu trúc foreach, khá giống vớiperl và một số ngôn ngữ khác Cấu trúc này đơn giản tạo ra một cách dễ dàng
để duyệt qua các mảng Có hai cú pháp; cú pháp thứ hai là thứ yếu nhưng là
sự mở rộng một cách hữu ích của cấu trúc thứ nhất:
foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement
Dạng đầu tiên của các vòng lặp trên mảng được đưa ra bởiarray_expression Trên mỗi vòng lặp, giá trị của các phần tử hiện tại được gáncho $value và con trỏ mảng cục bộ được tăng lên một( bởi vậy trong vòng lặpsau, ta sẽ thấy phần tử tiếp theo)
Dạng thứ hai cũng thực hiện việc tương tự, trừ khoá của phần tử hiện tại sẽđược gán tới biến $key trên mỗi vòng lặp
Chú ý: Khi foreach lần đầu tiên bắt đầu thực hiện, con trỏ cục bộ tự độngđược điều chỉnh lại tới phần tử đầu tiên của mảng Điều này có nghĩa là takhông cần gọi hàm reset() trước mỗi vòng lặp foreach
Chú ý: chú ý rằng foreach thao tác trên một bản sao chép của mảng đượcchỉ ra, không phải là chính mảng đó Do vậy, con trỏ mảng không bị thay đổigiống như mỗi cấu trúc
$arr = array ('one', 'two', 'three', 'four', 'stop', 'five');
while (list (, $val) = each ($arr)) {
Trang 38while (list ($key, $value) = each ($arr)) {
if (!($key % 2)) { // skip odd members
Điều quan trọng để hiểu bằng cách nào câu lệnh switch được thực hiệntheo trình tự để tránh lỗi Câu lệnh switch thực hiện từng dòng một ( thực ra
là từng câu lệnh một) Trong lúc bắt đầu, không đoạn mã nào được thựchiện.Chỉ khi một câu lệnh case được tìm thấy với giá trị thích hợp với giá trịcủa biểu thức switch làm cho PHP bắt đầu thực hịên các câu lệnh PHP tiếptục thực hiện các câu lệnh cho đến khi kết thúc khối câu lệnh switch, hoặc lầnđầu tiên nó gặp câu lệnh break Nếu ta không viết một câu lệnh break tại cuối
Trang 39danh sách các câu lệnh case, PHP sẽ tiếp tục thực hiện các câu lệnh của casedưới đó
Trong một câu lệnh switch, điều kiện chỉ được xác định một lần và kết quảđược so sánh cho mỗi câu lệnh case Trong một câu lệnh elseif, điều kiệnđược xác định lại Nếu điều kiện của ta phức tạp hơn một điều kiện so sánhđơn giản và/hoặc trong một vòng lặp kín, một switch có thể nhanh hơn
Danh sách câu lệnh cho một case cũng có thể được bỏ trống, nó đơn giảncho qua điều khiển trong danh sách câu lệnh cho case tiếp theo
Điều quan trọng cần chú ý về việc bằng cách nào điều này thực hiện là khimột file được include() hoặc require(), bỏ qua chế độ cú pháp PHP và chuyểnsang chế độ HTML tại lúc bắt đầu của file đích, và bắt đầu lại chế độ PHPmột lần nữa khi kết thúc Nguyên nhân do chính lý do này là, bất kỳ mã nàobên trong file nguồn mà sẽ được thực hiện như mã PHP phải được đóng kíntrong các tag bắt đầu và kết thúc chính xác của PHP
Require() không phải là một hàm thực sự trong PHP; đúng hơn, nó là mộtcấu trúc ngôn ngữ Nó là một chủ đề của một số nguyên tắc khác nhau hơn làcác hàm Trong trường hợp cá biệt, require() không đưa ra bất kỳ cấu trúcđiều khiển chứa nào Trong trường hợp khác, nó không trả về bất kỳ một giátrị nào;cố gắng đọc một giá trị trả về từ một lời gọi require()đưa đến một cúpháp lỗi
Không giống include(), require() sẽ luôn luôn đọc trong file đối tượng,ngay cả nếu nếu dòng nó không bao giờ thực hiện Nếu ta muốn bao gồm mộtfile có điều kiện, sử dụng include() Câu lệnh điều kiện sẽ không ảnh hưởng