Nội dung kiến thức phần này gồm:
– Đường dẫn.
– Các hàm PHP (isset, empty, header, date, md5, mysql_query, mysql_fetch_assoc).
Trong thư mục admin/user, tạo mới file edit.php để viết mã lệnh trang chỉnh sửa thành viên.
Nội dung file admin/user/edit.php như sau:
<?php
//Khởi động session
session_start();
//Kiểm tra nếu chưa đăng nhập thì quay về trang đăng nhập
if(!isset($_SESSION[‘user’])){
header(‘location:login.php’);
}
//Require các file cần thiết
require ‘../../configs/config.php’;
require ‘../../libraries/connect.php’;
require ‘../../models/user.php’;
//Lấy user_id từ URL
$user_id = $_GET[‘user_id’];
//Nếu có POST dữ liệu lên thì xử lý cập nhật
if($_POST){
//Nhận dữ liệu từ form và gán vào một mãng
$data = array(
‘username’ => $_POST[‘username’],
‘password’ => empty($_POST[‘password’]) ? null : md5($_POST[‘password’]),
‘fullname’ => $_POST[‘fullname’],
’email’ => $_POST[’email’],
‘status’ => isset($_POST[‘status’]) ? 1 : 0,
‘modified’ => date(‘Y-m-d H:i:s’)
);
//Cập nhật
if(edit_user($data, $user_id)){
//Tạo session để lưu cờ thông báo thành công
$_SESSION[‘success’] = true;
//Tải lại trang (Mục đích là để tải lại thông tin mới)
header(‘location:edit.php?user_id=’ . $user_id);
}
}
//Lấy thông tin thành viên để trình bày trên form
$user = get_user_by_id($user_id);
//Require file giao diện (View)
require ‘../../views/admin/user/edit.tpl.php’;
?>
Mở file models/user.php và thêm vào khối lệnh mới dưới đây:
function get_user_by_id($user_id){
//SQL
$sql = “SELECT * FROM tbl_user WHERE user_id = $user_id”;
//Query
$query = mysql_query($sql);
//Fetch và return
return mysql_fetch_assoc($query);
}
function edit_user($data, $user_id){
//SQL
$sql = “UPDATE tbl_user SET username = ‘{$data[‘username’]}’, fullname = ‘{$data[‘fullname’]}’, email = ‘{$data[’email’]}’, status = {$data[‘status’]}, modified = ‘{$data[‘modified’]}’”;
//Nếu có cập nhật mật khẩu
if($data[‘password’] != null){
$sql .= “, password = ‘{$data[‘password’]}’”;
}
//Điều kiện
$sql .= ” WHERE user_id = $user_id”;
//Query và return
return mysql_query($sql);
}
Trong thư mục views/admin/user, tạo mới file edit.tpl.php để trình bày giao diện trang chỉnh sửa thành viên.
Nội dung file views/admin/user/edit.tpl.php như sau:
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Quản trị – Thành viên – Chỉnh sửa</title>
</head>
<body>
<form name=”edit” method=”POST” action=””>
<?php if(isset($_SESSION[‘success’])): ?>
<p style=”color:green;”>Thành viên đã được chỉnh sửa thành công!</p>
<?php unset($_SESSION[‘success’]); ?>
<?php endif; ?>
<p>
<label>Tài khoản:</label>
<input type=”text” name=”username” value=”<?php echo $user[‘username’]; ?>” />
</p>
<p>
<label>Mật khẩu:</label>
<input type=”password” name=”password” value=”” />
</p>
<p>
<label>Họ tên:</label>
<input type=”text” name=”fullname” value=”<?php echo $user[‘fullname’]; ?>” />
</p>
<p>
<label>Email:</label>
<input type=”text” name=”email” value=”<?php echo $user[’email’]; ?>” />
</p>
<p>
<label>Trạng thái:</label>
<input type=”checkbox” name=”status” value=”1″ <?php echo ($user[‘status’] == 1) ? ‘checked=”checked”‘ : ”; ?> />
</p>
<p>
<input type=”submit” value=”Chỉnh sửa” />
</p>
</form>
</body>
</html>
Các bạn truy cập trang danh sách thành viên và nhấp vào tài khoản để truy cập tới trang chỉnh sửa thành viên (Lưu ý tới liên kết của trang chỉnh sửa thành viên).
* Đường dẫn:
Trong các trang, các bạn đều require các file configs/config.php, libraries/connect.php và một số file khác. Khi require các bạn phải chỉ đúng đường dẫn tới file cần require và để thực hiện được thì PHP cung cấp một số “ký hiệu” giúp bạn thực hiện điều đó một cách linh hoạt. Và đường dẫn theo hướng dẫn dưới đây được gọi là đường dẫn tương đối.
Một số “ký hiệu” bạn cần biết như sau:
– Đứng tại vị trí thư mục hiện hành: ./
– Ra ngoài một cấp thư mục: ../
– Ra thư mục gốc (Web root): /
Ví dụ với cấu trúc thư mục như sau:
admin
—–user
———-edit.php
configs
—–config.php
libraries
—–connect.php
Với cấu trúc thư mục như trên nếu:
– Đứng ở vị trí file edit.php để viết lệnh và require file config.php thì đường dẫn sẽ là:
../../configs/config.php
– Đứng ở vị trí file connect.php để viết lệnh và require file config.php thì đường dẫn sẽ là:
../configs/config.php
Ngoài ra, các bạn còn có thể sử dụng một số hàm do PHP cung cấp để lấy chính xác đường dẫn tới file.
* Các hàm PHP (isset, empty, header, date, md5, mysql_query, mysql_fetch_assoc):
– isset: Kiểm tra sự tồn tại của một biến. Nếu biến tồn tại thì trả về true, ngược lại trả về false.
– empty: Kiểm tra chuỗi dữ liệu có rỗng hay không. Nếu chuỗi rỗng thì trả về true, ngược lại trả về false.
– header: Chuyển hướng trang sang một trang mới.
– date: Định dạng ngày giờ.
– md5: Mã hóa một chuỗi theo thuật toán MD5.
– mysql_query: Thực thi (Truy vấn) câu SQL.
– mysql_fetch_assoc: Trả về một dòng dữ liệu từ recordset dưới dạng một mãng.
Tất cả các hàm trên các bạn có thể vào trang
http://php.net/docs.php và sử dụng chức năng tìm kiếm để tìm hàm cần tìm hiểu.