Để truy vấn được với dữ liệu trong database, trước tiên ta phải thực hiện kết nối với CSDL như sau:
Bước 1: Tạo kết nối
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); Trong đó:
$conn: biến kết nối.
DB_HOST: tên server.
DB_USER: tên user đăng nhập vào MySQL.
DB_PASS: mật khẩu đăng nhập vào MySQL.
DB_NAME: tên database.
Ví dụ: Tạo kết nối tới database tên ‘tdc_web_1’, sử dụng wampserver.
Tạo thư mục app đặt cùng cấp với file index.php Trong thư mục app, tạo 2 file:
+ config.php: định nghĩa 4 hằng số kết nối: DB_HOST, DB_USER, DB_PASS, DB_NAME như sau:
<?php
define(‘DB_HOST’,’localhost’); define(‘DB_USER’,’root’); define(‘DB_PASS’,’’);
define(‘DB_NAME’,’tdc_web_1’);
+ db.php: Tạo class db chứa biến, hàm kết nối, ngắt kết nối và các thao tác với database như sau:
//Tạo biến $conn kết nối public static $conn;
//Tạo kết nối trong hàm __construct() public function __construct(){
self::$conn = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME); //Hiển thị tiếng việt
self::$conn->set_charset('utf8'); //Hàm trả về kiểu mảng từ một object public function getData($obj){
$arr = array(); while($row = $obj->fetch_assoc()){ $arr[] = $row; } return $arr; }
//Ngắt kết nối trong hàm __destruct() public function __destruct(){
self::$conn->close(); }
}
Bước 2: Viết và thực thi câu lệnh truy vấn
Sử dụng hàm query() để thực thi một câu lệnh SQL, ví dụ viết hàm lấy ra cột name, email và phone trong bảng users.
public function getUser(){
//Thực thi câu truy vấn return $conn->query($sql); }
Lưu ý: Hàm này sẽ trả về kiểu object.
Bước 3: Xử lý kết quả sau khi thực thi câu truy vấn. Tại trang index.php, gọi hàm và hiển thị kết quả như sau:
require “./app/config.php”; require “./app/db.php”; //Tạo đối tượng db từ lớp db $db = new db(); //Gọi hàm getUser() $user = $db->getUser(); echo $user->num_rows; echo “<br>”; echo $user->num_fields; echo “<br>”; while($row = $user->fetch_assoc()){ echo $row.”<br>”; } Kết quả: 2 3
Name: John Doe – Email: john@example.com Name: Mary Moe – Email: mary@example.com Trong đó:
- Hàm num_rows trả về số lượng dòng dữ liệu sau khi thực thi câu lệnh SELECT.
- Hàm num_fields trả về số lượng cột sau khi thực thi câu lệnh SELECT.
- Hàm fetch_assoc() duyệt object và trả về 1 dòng dữ liệu kiểu mảng associative,
mà theo đó key là tên cột, value là gía trị cột tương ứng. Sau khi duyệt hết 1 dòng, con trỏ của hàm này sẽ nhảy sang dòng tiếp theo. Do đó, ta phải dùng vòng lặp để duyệt tất cả dịng trong dữ liệu như ví dụ trên.
5.4 BÀI TẬP
Bài 1: Xây dựng CSDL mobile gồm các bảng:
a. Bảng products, lưu trữ thong tin sản phẩm, gồm các cột: ID, name, price, image, description, manu_ID, type_ID.
Trong đó:
ID: mã sản phẩm, kiểu int, khố chính, tự động tang.
name: tên sản phẩm, kiểu chuỗi tối đa 100 ký tự, khơng được để trống.
image: hình sản phẩm, kiểu chuỗi tối đa 150 ký tự, không được trống.
description: mô tả sản phẩm, kiểu text.
manu_ID: mã hãng sản xuất của sản phẩm, kiểu int, không được trống.
type_ID: mã loại sản phẩm, kiểu int, không được trống.
b. Bảng manufactures, lưu trữ các hãng sản xuất (Apple, Oppo, Samsung,..), gồm các cột: manu_ID, manu_name, manu_img.
Trong đó:
manu_ID: mã hãng, kiểu int, khố chính, tự động tang.
manu_name: tên hãng, kiểu chuỗi tối đa 100 ký tự, khơng được trống.
manu_img: hình ảnh hang.
c. Bảng protypes, lưu trữ loại sản phẩm (điện thoại, laptop, loa,..), gồm các cột: type_ID, type_name, type_img.
type_ID: mã loại, kiểu int, khố chính, tự động tang.
type_name: tên loại, kiểu chuỗi tối đa 100 ký tự, không được trống.
type_img: hình ảnh loại sản phẩm.
Bài 2: Thêm dữ liệu cho từng bảng
Thêm 5 hãng sản xuất trong bảng manufactures.
Thêm 5 loại sản phẩm trong bảng protypes.
Thêm 20 sản phẩm trong bảng products, sao cho có 5 sản phẩm mỗi hãng và
5 sản phẩm mỗi loại.
Bài 3: Kết nối và hiển thị dữ liệu
Xây dựng trang index.php để hiển thị ra 4 sản phẩm mới nhất (dựa vào id
sản phẩm), và tạo liên kết xem thêm bên dưới 4 sản phẩm để khi người dùng click vào sẽ hiển thị tất cả sản phẩm trong CSDL.
Xây dựng trang chitiet.php để xem chi tiết một sản phẩm khi người dùng
TÌM KIẾM VÀ PHÂN TRANG CHƯƠNG 6:
Đây là chương rất quan trọng nhằm giúp sinh viên có khả năng:
- Trình bày được các bước để xây dựng chức năng
tìm kiếm thơng tin một cách đầy đủ, chính xác.
- Trình bày được các bước thực hiện phân trang đầy
đủ, chính xác.
Qua đó, sinh viên có thể áp dụng kỹ thuật tìm kiếm và phân trang vào bài tập cũng như đồ án một cách lịnh hoạt và chính xác.
6.1 TÌM KIẾM
Tìm kiếm là kỹ thuật rất hay được sử dụng trong lập trình web. Giúp người dùng tiết kiệm được thời gian duyệt tất cả bài viết trong một website để tìm một bài viết như mong muốn.
Kỹ thuật tìm kiếm đơn giản nhất là sử dụng từ khóa LIKE để so khớp từ khóa của người dùng với dữ liệu trong CSDL, sau đó lọc ra những dữ liệu gần với từ khóa nhất để hiển thị cho người dùng.
Dưới đây là các bước cơ bản để xây dựng một chức năng tìm kiếm cho website đã có CSDL: