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 trong 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 là một 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'].”
”;}
}
- Kiểm tra kết quả trả về của mysql_connect và mysql_query:
$con=mysql_connect(server, user, password)
$rs =mysql_query($sql, $con)
Cách 1: dùng if($con) hay if($rs) trả về giá trị logic
Cách 2: dùng if(is_resource($con)) hay if(is_resource($rs)) trả về giá trị logic
- Bản chất $rs trả về là một nguồn dữ liệu, là recordset như trong ADO của 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 khi sử dụng mysql_connect, mysql_query cần sử dụng toán tử error: @
18 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 525 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Bài giảng Mã nguồn mở - Chương 6: PHP và MYSQL - Nguyễn Minh Thành, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
PHP & MYSQLGiảng viên : ThS. Nguyễn Minh ThànhEmail : thanhnm@itc.edu.vnMôn Các Hệ Thống Mã Nguồn Mở1Chương 6 : Nội DungKết nối database serverTruy cập CSDL và thực thi câu lệnhXử lý tiếng việt trong MySQL & PHPPhân trang dữ liệuMôn Các Hệ Thống Mã Nguồn Mở2Kết nối database serverMôn Các Hệ Thống Mã Nguồn Mở31- Cú phápmysql_connect(server_name,username,password);Đối với localhost, dù webserver có PORT là 81 vẫn không ghi thêm port, port mặc định của database server MySQL là 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());Lưu ý: Hãy nhận xét về hàm die() và các sử dụng ifelse ở đây!Thực Thi Câu Lệnh SQLMôn Các Hệ Thống Mã Nguồn Mở41- Truy cập CSDL mysql_select_db(“database name", $con);với $con được trả về trong mysql_connect() đã thành công trước đó.2- Thực thi câu lệnh SQLmysql_query(“SQL_Statement”);Tùy theo câu lệnh SQL mà ta có kết quả trả về của hàm mysql_query()mà ta có mã PHP xử lý tương ứng.+ Câu lệnh Select : trả về mảng các record+ Các câu lệnh khác : true/false tùy theo sự thành công hay khônga)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 dữ liệu trong mảng $result;} // !?else {echo “Records not found!”;} Thực Thi Câu Lệnh SQL (tt)Môn Các Hệ Thống Mã Nguồn Mở5b) 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 các field kiểu char có thể dữ liệu theo mã UTF-8 thì 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 một công cụ riêng, ít khi sử dụng câu lệnh như trên. 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ở6c- 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ở7d- 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 cũng tương tựLỗi xảy ra nếu vi phạm một trong các ràng buộc toàn vẹn dữ liệu.Sử dụng hàm die() một cách hợp lýSử dụng transaction để điều khiển mạch chương trình. Xem bài đọc thêm PHP trên trang web của giảng viênMôn Các Hệ Thống Mã Nguồn Mở8e- 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 "";}} // elsemysql_close($con); // đóng kết nốiCâu lệnh Select from where limit start, total trong MySQLTrong đó start: là bắt đầu từ record số start (>=0), Record đầu tiên thứ tự là 0Total : là tổng số record được hiển thị. Đây là đặc điểm riêng của MySQLfetch : nạp vào, tìm và nạp vào, $row là một mảng với key là fieldnameChúng ta còn phương pháp khác duyệt “tập các record”, xem trang sau. Môn Các Hệ Thống Mã Nguồn Mở9Hàm mysql_fetch_arrayCú pháp: mysql_fetch_array(data [, array_type]);Array_type có thể là:MySQL_Assoc : mảng kết hợp, key của mảng là field_nameMySQL_Num : key của mảng là chỉ sốMySQL_Both : cả hai khả năng trên, đây là kiểu mặc định.Vì không khai báo array_type, tức là MySQL_Both, do vậy (1) có thể:while($row = mysql_fetch_array($result)){ echo $row[0] . " " . $row[1]; echo "";}Tiếng Việt trong PHPMôn Các Hệ Thống Mã Nguồn Mở10 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 trong 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ệnhmysql_query($sql) với $sql là một 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ột Số Hàm Hữu ÍchMôn Các Hệ Thống Mã Nguồn Mở11- Kiểm tra kết quả trả về của mysql_connect và mysql_query:$con=mysql_connect(server, user, password)$rs =mysql_query($sql, $con)Cách 1: dùng if($con) hay if($rs) trả về giá trị logicCách 2: dùng if(is_resource($con)) hay if(is_resource($rs)) trả về giá trị logic- Bản chất $rs trả về là một nguồn dữ liệu, là recordset như trong ADO của 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 khi sử dụng mysql_connect, mysql_query cần sử dụng toán tử error: @Phân Trang Dữ Liệu Môn Các Hệ Thống Mã Nguồn Mở12 Kỹ thuật cơ bản dựa trên câu lệnh Select limit start, totalMỗi trang sẽ hiển thị total records, bắt đầu từ reocord thứ startRecord đầu tiên có thứ tự là 0. Có nhiều phương pháp xây dựng các link để điều khiển trang Pre 1 2 3 4 5 NextGiả sử test.php là trang PHP có chức năng hiển thị trang thứ $I với số record là $PageSize, tùy theo $i mà xác định $start để xây dựng câulệnh Select cho từng lựa chọnPhương pháp ưa thích được lựa chọn là sử dụng :$start : vị trí record bắt đầu của trang hiện tại $prev : vị trí bắt đầu cho trang liền trước trang hiện tại (link PREV)$next : vị trí bắt đầu cho trang liền sau trang hiện tại (link NEXT)Phân Trang Dữ Liệu (tt) Môn Các Hệ Thống Mã Nguồn Mở13Trong ứng dụng này, ta có 4 module: Connect.inc có chức năng kết nối đến CSDL, sử dụng các hàm:mysql_connect() và msql_select_db()Trong lập trình CSDL, module này cần thiết kế tốt và lưu dưới một file .inc riêng, trang nào cần thì include vào Init.inc có chức năng khởi tạo các biến chung để điều khiển link Test.php là trang chính, có chức năng hiển thị nội dung trang với các record bắt đầu từ $start đến ($start+$pagesize-1), bao gồm Connect.inc, Init.inc và Link.inc Link.inc có chức năng tạo ra các liên kết dạng Prev 1 2 3 4 NextTrong nhiều chương trình, LTV xây dựng hẵn một Class để truy cập CSDL. Sinh viên xem trong phần Bài đọc thêm PHP trên website của giảng viên về nội dung này.Phân Trang Dữ Liệu (tt) Môn Các Hệ Thống Mã Nguồn Mở14Tệp Connect.incPhân Trang Dữ Liệu (tt) Môn Các Hệ Thống Mã Nguồn Mở15Tệp Init.inc($start-0)=0;$back = $start - $pagesize; $next = $start + $pagesize; $query="select * from Student";$result=mysql_query($query);$totalRecords=mysql_num_rows($result); // Total records of recordsetecho "Total records $totalRecords ";?>Phân Trang Dữ Liệu (tt) Môn Các Hệ Thống Mã Nguồn Mở16Tệp Test.php"; $i++;}include("link.inc");mysql_close($link);?>Phân Trang Dữ Liệu (tt) Môn Các Hệ Thống Mã Nguồn Mở17Tệp Link.inc";if($totalRecords > $pagesize ){ if($back >=0) {echo "Prev"; } $i=0; // theo dõi số thứ tự các record $j=1; // theo số thứ tự của trang để tạo liên kết for($i=0;$i $start){echo " $j "; } else { echo $j;} $j=$j+1; } if($next Next";} } ?>Hỏi Đáp ?Môn Các Hệ Thống Mã Nguồn Mở18
Các file đính kèm theo tài liệu này:
- bai_giang_ma_nguon_mo_chuong_6_php_va_mysql_nguyen_minh_than.pptx