Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
1,01 MB
Nội dung
6/11/16 MÃ NGUỒN MỞ PHẦN III – XÂY DỰNG VÀ PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ PHAN TRỌNG TIẾN BM Công nghệ phần mềm Khoa Công nghệ thông tin, VNUA Email: phantien84@gmail.com Website: http://timoday.edu.vn Phần III - Xây dựng phát triển PMNM Nội dung 1. 2. Giới thiệu Lập trình PHP Giới thiệu Hệ quản trị sở liệu MySQL Phần III - Xây dựng phát triển PMNM 6/11/16 PHP Personal Home Page Lịch sử đời PHP q 1994, Rasmus Lerdorf tạo ngôn ngữ PHP tiếp tục phát triển nhiều người khác q Thường sử dụng PHP xây dựng ứng dụng thương mại điện tử q 2001 có triệu tên miền sử dụng PHP q PHP Open Source, bạn làm việc mã nguồn, thêm, sửa, sử dụng phân phối chúng Phần III - Xây dựng phát triển PMNM 6/11/16 Nhúng PHP HTML q Khóa PHP đầy đủ q Khóa PHP rút gọn Phần III - Xây dựng phát triển PMNM Lệnh thích q Lập trình PHP phải tn theo chuẩn q Mỗi lệnh phải kết thúc dấu ; (trừ lệnh cuối trước khóa ?>) q Khối (nhiều) lệnh đặt cặp { } q Có ba cách ghi thích: 1. // thích có giá trị đến cuối dịng 2. # thích có giá trị đến cuối dịng 3. /* thích nhiều dịng */ Phần III - Xây dựng phát triển PMNM 6/11/16 Ví dụ Phần III - Xây dựng phát triển PMNM Các kiểu liệu Kiểu Ví dụ Mơ tả integer 99 Số ngun double 25.76 Số thực string ”hello” ’xin chào’ Phần III - Xây dựng phát triển PMNM 16 6/11/16 Biến $GLOBAL q Một cách khác để dùng biến toàn cục hàm ta dùng mảng $GLOBAL PHP q Ví dụ Phần III - Xây dựng phát triển PMNM 17 Biến $REQUEST q Lấy giá trị GET, POST, COOKIE … theo thứ tự EGPCS (Enviroment,Get, Post, Cookie, Server) q Tuy nhiên , phần tử mảng REQUEST hoàn toàn độc lập với phần tử mảng GET , POST vvv Bạn thay giá trị khác với mảng REQUEST giá trị GET,POST khơng đổi q Ví dụ: Phần III - Xây dựng phát triển PMNM 18 6/11/16 Hằng q Định nghĩa: q define (‘tên_hằng’, giá trị) q Giá trị dùng kiểu liệu q Bắt buộc định nghĩa trước dùng q Quy ước cách đặt tên: q Giống cách đặt tên biến q Không sử dụng ký hiệu $ q Thường đặt tên chữ in hoa Phần III - Xây dựng phát triển PMNM 19 Phần III - Xây dựng phát triển PMNM 20 Ví dụ 10 6/11/16 Các lệnh thông dụng MySQL ALTER TABLE tablename ( ADD column datatype [NULL|NOT NULL] [CONSTRAINTS], CHANGE column columns datatype [NULL|NOT NULL] [CONSTRAINTS], DROP column, ); Phần III - Xây dựng phát triển PMNM 131 Các lệnh thông dụng MySQL SELECT columnname, FROM tablename, [WHERE ] [UNION ] [GROUP BY ] [HAVING ] [ORDER BY ]; Phần III - Xây dựng phát triển PMNM 132 66 6/11/16 Các lệnh thông dụng MySQL DELETE FROM tablename [WHERE ]; Phần III - Xây dựng phát triển PMNM 133 Các lệnh thông dụng MySQL DESCRIBE tablename [columnname | wild] Phần III - Xây dựng phát triển PMNM 134 67 6/11/16 Các lệnh thông dụng MySQL INSERT INTO tablename [(columns, )] VALUES(values, ); INSERT INTO tablename [(columns, )] SELECT columns, FROM tablename, [WHERE ]; Phần III - Xây dựng phát triển PMNM 135 Các lệnh thông dụng MySQL UPDATE tablename SET columname = value, [WHERE ]; Phần III - Xây dựng phát triển PMNM 136 68 6/11/16 Các lệnh thông dụng MySQL DROP DATABASE|INDEX|PROCEDURE| TABLE|TRIGGER|USER|VIEW itemname; Phần III - Xây dựng phát triển PMNM 137 Giao tiếp dòng lệnh q Kết nối mysql server mysql [-h hostname] [-P portnumber] -u username -p mysql [-h hostname] [-P portnumber] user=user -password=pass Nhập lệnh sau dấu nhắc lệnh mysql> Mỗi lệnh SQL kết thúc dấu ; Phần III - Xây dựng phát triển PMNM 138 69 6/11/16 Giao tiếp đồ họa q Một số công cụ thông dụng MySQL Query Browser phpMyAdmin MySQL Maestro Navicat MySQL Manager 139 Phần III - Xây dựng phát triển PMNM Kết nối MySQL từ PHP PHP script Thư viện chuẩn Thư viện cải tiến mysql mysqli Sử dụng hàm mysql Sử dụng lớp n mysqli n mysqli_stmt n mysqli_result Phần III - Xây dựng phát triển PMNM Sử dụng hàm mysqli 140 70 6/11/16 Thư viện mysql cải tiến PHP5 q Thiết lập php.ini extension=php_mysqli.dll q Ưu điểm Hỗ trợ lập trình hướng đối tượng q Hỗ trợ nhân phân tán CSDL q Nén mã hóa liệu kết nối q Tối ưu hiệu mã q Phần III - Xây dựng phát triển PMNM 141 Quy trình kết nối vào MySQL 1. Mở kết nối đến CSDL 2. Chọn CSDL 3. Chọn bảng mã (nếu cần) 4. Xử lý CSDL 5. Dọn dẹp 6. Đóng kết nối Phần III - Xây dựng phát triển PMNM 142 71 6/11/16 Bước 1: Mở kết nối đến CSDL // OOP mysqli $mysqli = new mysqli('hostname', 'username', 'password', 'dbname'); // mysqli $link = mysqli_connect('hostname', 'username', 'password', 'dbname'); // mysql $link = mysql_connect('hostname', 'username’, 'password'); Phần III - Xây dựng phát triển PMNM 143 Bước 2: Chọn CSDL // OOP mysqli $mysqli->select_db('dbname'); // mysqli mysqli_select_db($link, 'dbname'); // mysql mysql_select_db(‘dbname', $link); Phần III - Xây dựng phát triển PMNM 144 72 6/11/16 Bước 3: Chọn bảng mã (nếu cần) // OOP mysqli $mysqli->query("SET NAMES ‘character set’") // mysqli mysqli_query($link, "SET NAMES ‘character set’") // mysql mysql_query("SET NAMES ‘character set’“, $link) Phần III - Xây dựng phát triển PMNM 145 Bước 4: Xử lý CSDL q Truy vấn // OOP mysqli $result = $mysqli->query(“query") // mysqli $result = mysqli_query($link, “query") // mysql $result = mysql_query(“query“, $link) Phần III - Xây dựng phát triển PMNM 146 73 6/11/16 Bước 4: Xử lý CSDL (tt) q Lấy liệu từ truy vấn // OOP mysqli $row = $result->fetch_row() $row = $result->fetch_assoc() $row = $result->fetch_array(result_type) // mysqli $row = mysqli_fetch_row($result) $row = mysqli_fetch_assoc($result) $row = mysqli_fetch_array($result, result_type) // mysql $row = mysql_fetch_row($result) $row = mysql_fetch_assoc($result) $row = mysql_fetch_array($result, result_type) Phần III - Xây dựng phát triển PMNM 147 Bước 5: Dọn dẹp // OOP mysqli $result->close() // mysqli mysqli_free_result($result) // mysql mysql_free_result($result) Phần III - Xây dựng phát triển PMNM 148 74 6/11/16 Bước 6: Đóng kết nối // OOP mysqli $mysqli->close() // mysqli mysqli_close($link) // mysql mysql_close($link) Phần III - Xây dựng phát triển PMNM 149 Ví dụ 1: đọc ghi Phần III - Xây dựng phát triển PMNM 150 75 6/11/16 Ví dụ 2: Đọc tồn liệu sử dụng hàm mysql_fetch_row Phần III - Xây dựng phát triển PMNM 151 Ví dụ 3: Đọc tồn liệu sử dụng hàm mysql_fetch_array Phần III - Xây dựng phát triển PMNM 152 76 6/11/16 Tương tác web browser web server Phần III - Xây dựng phát triển PMNM 153 HTML Form Đường dẫn đến file script phải đường dẫn tương đối q Trường hợp script nằm file với FORM khai báo action=”” q Có hai cách gửi liệu GET POST q Phần III - Xây dựng phát triển PMNM 154 77 6/11/16 HTML FORM: Các thành phần INPUT q INPUT Text q INPUT Checkbox q INPUT Radio q INPUT Submit Phần III - Xây dựng phát triển PMNM 155 HTML FORM: Các thành phần INPUT q List Box chuỗi hiển thị 1 … chuỗi hiển thị n q Multiline List Box chuỗi hiển thị 1 … chuỗi hiển thị n Phần III - Xây dựng phát triển PMNM 156 78 6/11/16 Chuyển liệu với GET POST Nếu thiết lập register_globals = ON file cấu hình php.ini tất liệu thành phần input form trở thành biến tồn cục có tên truy xuất trực tiếp khơng cần thơng qua mảng siêu tồn cục Kể từ phiên PHP 4.2.0, register_globals mặc định thiết lập OFF số lý bảo mật Trường hợp không quan tâm đến cách chuyển liệu dùng biến mảng siêu tồn cục $_REQUEST hai trường hợp dùng GET POST Phần III - Xây dựng phát triển PMNM 157 Chuyển liệu với GET POST GET • • • • • POST Dữ liệu gắn thêm vào URL gọi script Các liệu đưa vào biến mảng siêu tồn cục $_GET với khóa tương ứng với tên thành phần input form Nên dùng trường hợp liệu dùng để truy vấn, khơng địi hỏi bảo mật Khơng hỗ trợ uploading file Chỉ hỗ trợ bảng mã ASCII chuẩn • • • • • Dữ liệu nhúng vào HTTP request gởi đến server Các liệu đưa vào biến mảng siêu tồn cục $_POST với khóa tương ứng với tên thành phần input form An toàn so với dùng GET nên dùng phổ biến Hỗ trợ uploading file Hỗ trợ nhiều bảng mã Phần III - Xây dựng phát triển PMNM 158 79 6/11/16 Chuyển hướng người dùng header("Location: http://www.example.com/"); header('Location: http://' $_SERVER['HTTP_HOST'] rtrim(dirname($_SERVER['PHP_SELF']), '/\\') "/" $relative_url); (Visual page) start.html (Visual page) process.php Phần III - Xây dựng phát triển PMNM redirect.php 159 Bài tập Viết script thực công việc sau: q q q q Yêu cầu người dùng nhập vào số nguyên Đem so sánh số vừa nhập với số nguyên cho trước Nếu xuất câu chúc mừng người dùng đốn số bí mật Ngược lại thì thơng báo kết số vừa nhập lớn hay bé số bí mật yêu cầu nhập lại nhập Phần III - Xây dựng phát triển PMNM 160 80