Bài giảng Mã nguồn mở: Chương 6

18 7 0
Bài giảng Mã nguồn mở: Chương 6

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

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

Thông tin tài liệu

Chương 6 PHP & MySQL thuộc bài giảng Mã nguồn mở. Cùng nắm kiến thức trong chương này thông qua việc tìm hiểu các nội dung sau: kết nối database server, truy cập CSDL và thực thi câu lệnh, xử lý tiếng việt trong MySQL & PHP, phân trang dữ liệu.

Chương : PHP & MYSQL GIẢNG VIÊN : THS NGUYỄN MINH THÀNH EMAIL : THANHNM@ITC.EDU.VN Môn Các Hệ Thống Mã Nguồn Mở NỘI DUNG KẾT NỐI DATABASE SERVER TRUY CẬP CSDL VÀ THỰC THI CÂU LỆNH XỬ LÝ TIẾNG VIỆT TRONG MYSQL & PHP PHÂN TRANG DỮ LIỆU Môn Các Hệ Thống Mã Nguồn Mở KẾT NỐI DATABASE SERVER 1- Cú pháp mysql_connect(server_name,username,password); Đối với localhost, dù webserver có PORT 81 không ghi thêm port, port mặc định database server MySQL 3306 Các phong cách sử dụng : 1- $con=mysql_connect(svn,usr,pss) or die(“Error :”.mysql_error()); 2- $con=mysql_connect(svn,usr,pss); if(!$con) {die(“Error :”.mysql_error(); //có thể thay đổi message} else{ // truy cập database } Ví dụ : $con=mysql_connect(“localhost”,”root”,””) or die(“Error :”.mysql_error()); Các Hệ Thống Mã Nguồn Mở hàm die() sử dụng if…else đây! Lưu ý: Môn Hãy nhận xét THỰC THI CÂU LỆNH SQL 1- Truy cập CSDL mysql_select_db(“database name", $con); với $con trả mysql_connect() thành cơng trước 2- Thực thi câu lệnh SQL mysql_query(“SQL_Statement”); Tùy theo câu lệnh SQL mà ta có kết trả hàm mysql_query() mà ta có mã PHP xử lý tương ứng + Câu lệnh Select : trả mảng record + Các câu lệnh khác : true/false tùy theo thành công hay không a)Câu lệnh SQL : Select… $strSQL=“Select * from table_name”; //nếu câu lệnh SQL dài, phức tạp $result = mysql_quer($strSQL); if($result) { trích xuất liệu mảng $result;} // !? else {echo “Records not found!”;} Môn Các Hệ Thống Mã Nguồn Mở THỰC THI CÂU LỆNH SQL (TT) b) Câu lệnh SQL : Create Database $result=mysql_query("CREATE DATABASE database_name",$con ); if($result) {echo “Database created!”;} else {echo “Could’nt create database,” mysql_error();} Tuy nhiên, để đảm bảo field kiểu char liệu theo mã UTF-8 cần thay đổi câu lệnh SQL: $strSQL="CREATE DATABASE VD2”; $strSQL+= “DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"; $result=mysql_query($strSQL,$con ); if($result) {echo “Database created!”;} else {echo “Could’nt create database,”.mysql_error();} - Ta thường tạo CSDL thông qua cơng cụ riêng, sử dụng câu lệnh Tuy nhiên, tạo table lại hay sử dụng - Collate: đối chiếu, kiểm tra thứ tự (trang) Môn Các Hệ Thống Mã Nguồn Mở c- Câu lệnh SQL: Create table $sql = "CREATE TABLE table_name ( field_name data_type[(length)] constraint,… ) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci"; Ví dụ : $sql=“Create table SV (Ma varchar(11) NOT NULL ,”; $sql+=HoTen varchar(30) not null , primary key(Ma)”; $sql+=“) engine = MyISAM” ; $result = mysql_query($sql,$con); if(!$result) {echo “Error”.mysql_error();} else { // mã PHP phù hợp} Môn Các Hệ Thống Mã Nguồn Mở d- Câu lệnh Insert, Update $sql=“Insert into table_name(field_list) values(value_list); $result=mysql_query($sql); if(!$result) {echo mysql_error(); // xử lý tiếp;} else { //xử lý …} Việc sử dụng câu lệnh Upadte tương tự Lỗi xảy vi phạm ràng buộc toàn vẹn liệu -Sử dụng hàm die() cách hợp lý -Sử dụng transaction để điều khiển mạch chương trình Xem đọc thêm PHP trang web giảng viên Môn Các Hệ Thống Mã Nguồn Mở e- Câu lệnh SQL: Select… $sql = “Select … ”; $result = mysql_query($sql); if(!$result) { echo “Record not found!”; } else { while($row = mysql_fetch_array($result)){    echo $row[‘firstField'] " " $row[‘secondField'];    echo ""; } } // else mysql_close($con); // đóng kết nối Câu lệnh Select … from … where … limit start, total MySQL Trong start: record số start (>=0), Record thứ tự Total : tổng số record hiển thị Đây đặc điểm riêng MySQL fetch : nạp vào, tìm nạp vào, $row mảng với key fieldname Chúng ta phương pháp khác duyệt “tập record”, xem trang sau Môn Các Hệ Thống Mã Nguồn Mở Hàm mysql_fetch_array Cú pháp: mysql_fetch_array(data [, array_type]); Array_type là: MySQL_Assoc : mảng kết hợp, key mảng field_name MySQL_Num : key mảng số MySQL_Both : hai khả trên, kiểu mặc định Vì khơng khai báo array_type, tức MySQL_Both, (1) có thể: while($row = mysql_fetch_array($result)){    echo $row[0] " " $row[1];    echo ""; } Môn Các Hệ Thống Mã Nguồn Mở TIẾNG VIỆT TRONG PHP - Phần không sử dụng CSDL MySQL, phải đảm bảo: Lưu tệp với mã UTF-8 (*) Khai báo phần head - Phần sử dụng CSDL MySQL, phải đảm bảo: Khai báo câu lệnh mysql_query(“SET NAMES ‘utf8’”) trước câu lệnh mysql_query($sql) với $sql câu lệnh Select Ví dụ: $sql = “Select … ”; mysql_query(“SET NAMES ‘utf8’”); (*) $result = mysql_query($sql); if(!$result) { echo “Record not found!”; } else { while($row = mysql_fetch_array($result)){    echo $row[‘firstField'] " " $row[‘secondField'].””;} Môn Các Hệ Thống Mã Nguồn Mở 10 } MỘT SỐ HÀM HỮU ÍCH - Kiểm tra kết trả mysql_connect mysql_query: $con=mysql_connect(server, user, password) $rs =mysql_query($sql, $con) Cách 1: dùng if($con) hay if($rs) trả giá trị logic Cách 2: dùng if(is_resource($con)) hay if(is_resource($rs)) trả giá trị logic - Bản chất $rs trả nguồn liệu, recordset ADO Microsoft - Trong câu lệnh: while($row = mysql_fetch_array($rs)){    echo $row[‘FieldName'] Để kiểm tra $row dùng hàm is_array() - Để ngăn thông báo lỗi sử dụng mysql_connect, mysql_query cần sử dụng toán tử error: @ Môn Các Hệ Thống Mã Nguồn Mở 11 PHÂN TRANG DỮ LIỆU  Kỹ thuật dựa câu lệnh Select … limit start, total Mỗi trang hiển thị total records, reocord thứ start Record có thứ tự  Có nhiều phương pháp xây dựng link để điều khiển trang Pre Next Giả sử test.php trang PHP có chức hiển thị trang thứ $I với số record $PageSize, tùy theo $i mà xác định $start để xây dựng câu lệnh Select cho lựa chọn Phương pháp ưa thích lựa chọn sử dụng : $start : vị trí record bắt đầu trang $prev : vị trí bắt đầu cho trang liền trước trang (link PREV) $next : vị trí bắt đầu cho trang liền sau trang (link NEXT) 12 Môn Các Hệ Thống Mã Nguồn Mở PHÂN TRANG DỮ LIỆU (TT) Trong ứng dụng này, ta có module:  Connect.inc có chức kết nối đến CSDL, sử dụng hàm: mysql_connect() msql_select_db() Trong lập trình CSDL, module cần thiết kế tốt lưu file inc riêng, trang cần include vào  Init.inc có chức khởi tạo biến chung để điều khiển link  Test.php trang chính, có chức hiển thị nội dung trang với record $start đến ($start+$pagesize-1), bao gồm Connect.inc, Init.inc Link.inc  Link.inc có chức tạo liên kết dạng Prev Next Trong nhiều chương trình, LTV xây dựng hẵn Class để truy cập CSDL Sinh viên xem phần Bài đọc thêm PHP website giảng viên nội dung Môn Các Hệ Thống Mã Nguồn Mở 13 PHÂN TRANG DỮ LIỆU (TT) Tệp Connect.inc Môn Các Hệ Thống Mã Nguồn Mở TệpPHÂN Init.inc TRANG DỮ LIỆU (TT) PHÂN TRANG DỮ LIỆU (TT) Tệp Test.php

Ngày đăng: 11/05/2021, 04:40

Mục lục

  • Slide 1

  • Nội Dung

  • Kết nối database server

  • Thực Thi Câu Lệnh SQL

  • Thực Thi Câu Lệnh SQL (tt)

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Tiếng Việt trong PHP

  • Một Số Hàm Hữu Ích

  • Phân Trang Dữ Liệu

  • Phân Trang Dữ Liệu (tt)

  • Phân Trang Dữ Liệu (tt)

  • Phân Trang Dữ Liệu (tt)

  • Phân Trang Dữ Liệu (tt)

  • Phân Trang Dữ Liệu (tt)

  • Slide 18

Tài liệu cùng người dùng

Tài liệu liên quan