KẾT QUẢ THỰC HIỆN:

Một phần của tài liệu Xây dựng website rao vặt dành cho sinh viên Đại học Đà Nẵng. (Trang 59 - 84)

CHƯƠNG 4 : KẾT QUẢ THỰC HIỆN VÀ BÌNH LUẬN

4.2. KẾT QUẢ THỰC HIỆN:

4.2.1. Giao diện người dùng: 4.2.1.1. Trang chủ:

Giao diện trang chủ được thiết kế bao gồm: Banner rao vặt sinh viên, header menu, phần nội dung, phần footer, trong đó phần nội dung gồm ba phần, phần silde các tin quan trọng, các tin tức mới nhất và phần nội dung bên phải. Phần nội dung bên phải cũng chia làm nhiều nội dung khác nhau, gồm: Mục tìm kiếm, các nội dung chính của website, các tin quảng cáo, video giới thiệu các trường đại học và tư vấn trực tuyến của người quản trị với người dùng.

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 50

Hình 15: Giao diện trang chủ.

Giao diện trang chủ và một số trang khác có chứa kĩ thuật phân trang cho tin tức. Đầu tiên, để làm được chức năng này chúng ta cần khai báo số lượng tin trong một trang là bao nhiêu:

$baitren_mottrang= 9;

Nếu chưa chọn trang để xem thì ta mặc định người dùng xem trang số 0. If(!$_GET[‘page’]){

$page =0; }

Sau đó xác định số lượng tin có trong cơ sở dữ liệu là bao nhiêu bằng câu lệnh: mysql_num_rows

Thực hiện cách chia như sau:

$sotrang = $sodu_lieu/$baitren_mottrang; $batdau = $page*$baitren_mottrang;

Và thực hiện vòng lặp như sau:

for ( $page = 0; $page < $sotrang; $page ++ ){ $a=$page+1; echo "<span> <a style='text-decoration:none;' href='mainlayer.php?page={$page}'>{$a} </a> </span>"; }

4.2.1.2. Giao diện đăng nhập thành viện:

Giao diện đăng nhập thành viên được thiết kế dựa trên kĩ thuật flightbox, làm mờ màn hình chính và đưa ra một form đăng nhập u cầu nhập email và password. Trường hợp người dùng qn mật khẩu có thể click vào dịng chữ “quên mật khẩu” để xin mật

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 51 khẩu. Đồng thời có liên kết đến trang đăng ký thành viên trong trường hợp người dùng chưa có tài khoản.

Hình 16: Giao diện đăng nhập thành viên.

4.2.1.3. Giao diện đăng ký thành viên:

Giao diện đăng ký thành viên được thiết kế gồm hai phần: Phần một là phần mô tả các chức năng của hệ thống, phần thứ hai là phần thông tin bắt buộc khi đăng ký thành viên.

Hình17: Giao diện đăng ký thành viên

4.2.1.4. Giao diện góc học tập:

Giao diện góc học tập được thiết kế gồm các mục menu trái là các nội dung về tài liệu, các danh mục tài liệu thuộc về các chuyên ngành khách nhau. Các tin tức mới về tài liệu cũng được đưa lên rõ ràng và bắt mắt nhất. Và đặc biệt là mục bên phải cũng được

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 52 thiết kế gồm mục tìm kiếm, các nội dung chính liên quan đến học tập, tiếp đến là các tin quảng cáo và video giới thiệu các trường đại học.

Hình 18: Giao diện góc học tập.

4.2.1.5. Giao diện theo dõi tin:

Giao diện theo dõi tin được thiết kế là một liên kết các đến tin cần theo dõi tại trang chủ. Một tin được theo dõi sẽ được lưu trong thư mục theo dõi.

Hình 19: Giao diện theo dõi tin.

Để làm được chức năng này đâu tiên ta cần phải xác định tin nào cần theo dõi, mỗi tin tức đều có một mã tin tức riêng. Do đó ta có thể truyền mã tin tức lên địa chỉ url bằng câu lệnh như sau:

href="noteNews.php?news=<?php echo $id_news ?>" Sau đó gọi biến news về bằng phương thức GET:

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 53 Tiếp tục tạo một session và lưu mã tin tức vào một mảng với mã tin tức thay đổi. Chức năng này hoàn toàn giống với việc chúng ta đi xây dựng giỏ hàng nhưng có một điểm mà khác với giỏ hàng đó là nó khơng quan trọng về số lượt theo dõi một tin là bao nhiêu. Nói dễ hiểu hơn là khi chúng ta chọn theo dõi tin A, sau đó tiếp tục chọn theo dõi tiếp tin A thì số lượng cập nhật về tin A vẫn là 1 chứ khơng tính là 2 tin. Sau đây là đoạn code minh họa:

if(isset($_SESSION['theodoi'][$id])) { $qty=$_SESSION['theodoi'][$id]; } else { $qty=1; } $_SESSION['theodoi'][$id]=$qty; header("location:theodoitm-normal.php"); exit();

Như vậy tại trang theo dõi tin, ta cũng cần cho người dùng biết rằng trong thư mục theo dõi của họ hiện đang có bao nhiêu tin tức đang theo dõi. Hoặc nếu chưa có tin nào, ta cũng phải báo cho họ biết về việc đó.

Vậy khi nào thì thư mục theo dõi rỗng ? Đó là khi session của thư mụckhơng tồn tại mã tin tức nào cả. Cụ thể $_SESSION['theodoi']. Khi mã tin tức không tồn tại trong session này thì cũng là lúc thư mục theo dõi không tồn tại.

Vậy trước khi cho hiển thị thư mục theo dõi, ta cần kiểm tra xem có tồn tại mã tin tức nào trong thư mục hay khơng. Và vì mã tin tức lưu ở dạng mảng đa chiều, nên ta cần dùng vòng lặp duyệt mảng foreach.

foreach($_SESSION[‘theodoi'] as $key=>$value)

SVTH: Đoàn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 54 Với $key có ý nghĩa tương đương mã tin tức và $value tương đương là số lượng của tin trong thư mục. Vậy nếu tồn tại biến $key, thì có nghĩa là trong thư mục có tin tức theo dõi. Khi đó ta sử dụng một biến để báo hiệu rằng tin có tồn tại trong thư mục hay khơng.

$ok=1;

if(isset($_SESSION['theodoi']))//kiem tra co muc theo doi hay k

{

foreach($_SESSION['theodoi'] as $key => $value) { if(isset($key)) { $ok=2; } } }

Sau khi đã thêm tin tức vào thư mục theo dõi ta cần xử lý để hiển thị thông tin về tin tức đó ra, lúc này ta sử dụng session để lưu mã tin tức. Vậy lúc này ta khởi tạo session và sử dụng vòng lặp duyệt mảng foreach để lặp toàn bộ mã tin tức đang lưu trong session và sau đó lại chuyển sang dạng chuỗi bằng hàm implode().Thay vì sử dụng SELECT * FROM tên_bảng WHERE id= ??. Thì để tối ưu hơn, tôi sẽ sử dụng phép IN trong SQL

foreach($_SESSION['theodoi'] as $key=>$value) {

$news[]=$key; }

$str=implode(",",$news);

$q="SELECT * FROM tbl_news WHERE id_news IN ($str)"; $r=mysql_query($q);

SVTH: Đoàn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 55 Việc hiển thơng tin sẽ thực hiện như sau:

<table width="565" border="0" class='gh'> <form method="post">

<thead>

<tr class="ghnd">

<th width="40">STT</th>

<th width="90">TIN CẦN THEO DÕI </th> <th width="90">NGÀY ĐĂNG </th> <th width="90">GIÁ</th> <th width="30">XÓA</th> </tr> </thead> <tbody> <?php

while($gh = mysql_fetch_array($r, MYSQLI_ASSOC)) { $ngaydang = $gh['ngaydang']; echo " <tr align='center'> <td style='font: 12px/18px tahoma,arial;'>$i</td> <td><a href='chitiet-

tindang.php?id_news={$gh['id_news']}' title='Xem tin

này'>{$gh['tieude']}</a></td>

<td style='font: 12px/18px tahoma,arial;'><span style='color: #333; font: italic 12px Verdana;'>";?><?php

echo date('d/m/Y',strtotime($ngaydang));?><?php echo

"</span></td>

<td style='font: 12px/18px

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 56

<td><input type='checkbox' name='xoa[]'

value='$gh[id_news]'</td> </tr> "; $i+=1; } ?> </tbody> </table>

Để thực hiện xóa các tin đã lưu trong thư mục ta thực hiện theo đoạn code đây: if($_SERVER['REQUEST_METHOD'] == 'POST'){ if(isset($_POST['xoamonhang'])){ if(isset($_POST['xoa'])) { $xoa=$_POST['xoa']; $xoacount=count($_POST['xoa']); if($xoacount != 0) { for ($j=0;$j<$xoacount;$j++) { $cart=$_SESSION['theodoi']; $id=$xoa[$j]; if( count($_SESSION['theodoi'])==1) { unset($_SESSION['theodoi']); } else {

SVTH: Đoàn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 57 unset($_SESSION['theodoi'][$id]);

}}}} else {

echo "<script>alert('Chưa chọn tin cần xóa');</script>"; }

}

// Xóa tất cả các tin được lưu trong session. if(isset($_POST['xoagiohang'])){

unset($_SESSION['theodoi']); }}

Như vậy việc hình thành nên chức năng theo dõi tin tức đã hoàn thành

4.2.1.6. Giao diện trợ giúp:

Người dùng có thể làm theo các hướng dẫn trong trang trợ giúp, các hình vẽ và phần bình luận chi tiết được nêu ra rõ ràng.

Hình 20: Trợ giúp người dùng

4.2.1.7. Giao diện liên hệ:

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 58

Hình 21: Giao diện liên hệ

4.2.1.8. Giao diện chi tiết đăng tin với người xem là khách vãng lai:

Giao diện chi tiết tin đăng bao gồm hình ảnh, thơng tin chi tiết về một tin đăng và chức năng bình luận tin dựa vào chức năng development của facebook. Các tin đăng cùng mục cũng được đưa lên để người dùng có thể tiện xem tin.

SVTH: Đoàn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 59

Hình 23: Xem hình ảnh phóng to.

Hình 24: Các tin đăng cùng thư mục

4.2.1.9. Giao diện trang cá nhân của thành viên

Để vào cá nhân của mình, thành viên click vào dòng chữ “trang cá nhân” sau đó trang cá nhân của thành viên đó sẽ hiện ra, cách làm như hình ảnh sau đây:

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 60

Hình 25: Giao diện vào trang cá nhân thành viên

Mỗi trang cá nhân bao gồm thông tin cá nhân, cập nhật tin đăng và thay đổi password. Người dùng có thể thay đổi thông tin cá nhân, cập nhật lại thông tin tin đăng mà họ đã đăng.

Hình 26: Giao diện trang cá nhân thành viên

Sau đây là chương trình thay đổi thông tin cá nhân. if(isset($_POST["btn_save"])){

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 61 $l_name = $_POST["l_name"]; $new_email = $_POST["email"]; $bday = $_POST["bday"]; $bmonth = $_POST["bmonth"]; $byear = $_POST["byear"]; $gender = $_POST["gender"]; $phone = $_POST["phone"]; $address = $_POST["address"]; if($check_email == $email){ User::update_User($id_user,$f_name,$l_name,$email,$gen der,$bday,$bmonth,$byear,$phone,$address); header('Location: hoso.php'); }}

Để thay đổi thông tin của một tin đăng của một cá nhân nào đó, chức năng đó sẽ hoạt động theo đoạn chương trình sau:

if(isset($_POST["btn_save"])){ $tieude = $_POST["tieude"]; $id_danhmuc = $_POST["id_danhmuc"]; $id_quan = $_POST["id_quan"]; $id_nhucau = $_POST["id_nhucau"]; $gia = $_POST["gia"]; $noidung = $_POST["noidung"];

News::updatenews_User($id_news, $tieude, $id_danhmuc,

$id_quan, $id_nhucau, $gia, $noidung); header('Location: quanlydangtin.php'); }

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 62 if(isset($_POST["btn_save"])){ $old_password = $_POST["oldpass"]; $new_password = $_POST["newpass"]; $renew_password = $_POST["re-pass"]; $password = User::cryptPasswd($old_password); $newpass = User::cryptPasswd($new_password); if(strlen($old_password)>0){ $check_oldpwd = TRUE; } else{ $check_oldpwd = FALSE;

$oldpassword_message = '<span class="alert">Nhập mật khẩu cũ!</span>';

}

//Check new password

if(strlen($new_password)>0){

if(strlen($new_password)>=6) $check_newpwd = TRUE; else{

$check_newpwd = FALSE;

$newpassword_message = '<span class="alert">Mật khẩu phải có tối thiểu 6 ký tự!</span>';

}} else{

$check_newpwd = FALSE;

$newpassword_message = '<span class="alert">Nhập mật khẩu mới!</span>';

}

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 63 if(strlen($renew_password)>0){ $check_renewpwd = TRUE; } else{ $check_renewpwd = FALSE;

$renewpassword_message = '<span class="alert">Nhập lại mật khẩu mới!</span>';

}

//Check newpwd and renewpwd

if(strlen($new_password)>0 &&

strlen($renew_password)>0){

if($_POST["newpass"] != $_POST["re-pass"]){ $check_renewpwd = FALSE;

$renewpassword_message = '<span

class="alert">Mật khẩu không giống nhau!</span>'; }

}

if($check_oldpwd && $check_newpwd && $check_renewpwd){ if($pass == $password){

User::changeUserPassword($id_user,$newpass); header('Location: ChangePassword.php');

$message = '<span class="alert">Đổi mật khẩu thành công!</span>'; echo $message; } else header('Location: ChangePassword.php'); }}

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 64 Thành viên điền đầy đủ thông tin về một tin đăng, bao gồm 4 bước thực hiện: Tạo tin, kiểm tra lại, đăng ảnh và thông báo từ website đến người dùng. Người dùng sau khi đăng tin và nhận được thông báo đăng tin thành cơng thì cần phải chờ sự chấp nhận của ban quản lý hệ thống, khi đưa tin lên tin của người dùng sẽ ở trạng thái “pending” (trạng thái chờ). Sau khi được duyệt tin thì tin đó sẽ chuyển thành trạng thái “active” và được lên webste.

Hình 27: Giao diện đăng tin

4.2.1.10. Giao diện tìm kiếm thơng tin

Đây được xem là chức năng quan trọngnhất và điểm mạnh của website rao vặt sinh viên. Thông tin được đưa lên với nội dung khá rộng và khơng chi tiết, cụ thể nên việc tìm kiếm thơng tin cần phải hết sức chọn lọc và tiện ích cho người dùng. Với 4 phần: Phần tìm kiếm theo cách gõ text, phần tìm kiếm theo danh mục, phần tìm theo địa chỉ các quận huyện và tìm kiếm theo nhu cầu. Cái khó ở đây là làm sao ta có thể tìm kiếm các thơng tin mà không bỏ qua bất cứ chi tiết nào liên quan đến tin tức đó và khi chỉ cần một phần hoặc hai phần để tìm kiếm tin mà vẫn có thể tìm được tin nhưng rõ ràng tin tức đó khơng cụ thể bằng việc ta sử dụng 3 phần hoặc 4 phần để tìm kiếm.

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 65

Hình 28: Giao diện tìm kiếm thơng tin

Để làm được điều đó, chúng ta nên sử dụng kĩ thuật Ajax để tìm kiếm một cách nhanh nhất, thơng tin sẽ được đưa về tại chính trang đó mà khơng cần phải sang một trang khác hoặc phải tải lại trang.

Sau đây là qúa trình sử dụng Ajax để tìm kiếm và thuật tốn tìm kiếm thơng minh:

Hình 29: Sơ đồ hoạt động kí thuật ajax trong chức năng tìm kiếm.

Đầu tiên các thơng tin tìm kiếm được người dùng gửi yêu cầu lên server bằng thuộc tính onclick, các thơng tin sẽ được lấy đi dựa vào mã id của chúng và giá trị đó sẽ được lấy thơng qua phương thức:

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 66 $a = document.getElementByID(“$b”).value;

Khởi taoj ajax:

xmlHttp = GetXmlHttpObject();

Sau đó các thơng tin đó sẽ được đưa đến phần điều khiển (controller) thông qua địa chỉ url.

url="../../controller/controller_timkiemnc.php?action=add &page=0&search="+search+"&candang="+candang+"&danhmuc="+d anhmuc+"&quan="+quan;

Tại trang controller các thông tin sẽ được lấy xuống buộc phương thức $_REQUEST. Qúa trình xử lý như sau:

$search = $_REQUEST['search']; $nhucau = $_REQUEST['candang']; $danhmuc = $_REQUEST['danhmuc']; $quan = $_REQUEST['quan']; if($danhmuc != "Chon"){ $danhmuc_cond = "tbl_news.id_danhmuc=$danhmuc"; }else $danhmuc_cond = TRUE; if($quan != "Chon"){ $quan_cond = "tbl_news.id_quan=$quan"; }else $quan_cond = TRUE; if($nhucau != "Chon"){ $nhucau_cond = "tbl_news.id_nhucau=$nhucau"; }else $nhucau_cond = TRUE; $check = true;

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 67 if($check == true){

News::searchNews($danhmuc_cond,$quan_cond, $nhucau_cond, $search);

}

Câu lệnh sql sẽ được tổ chức như sau:

SELECT tbl_news.id_news, photo, name_danhmuc, name_quan, phone, daidien,tieude, noidung

FROM tbl_news JOIN tbl_danhmuc ON tbl_news.id_danhmuc = tbl_danhmuc.id_danhmuc

JOIN tbl_quan ON tbl_news.id_quan = tbl_quan.id_quan

JOIN tbl_user ON tbl_news.email = tbl_user.email

JOIN tbl_photo ON tbl_news.id_news = tbl_photo.id_news

WHERE tbl_news.status = 'accept' AND tbl_photo.daidien ='yes' AND $danhmuc_cond

AND $quan_cond AND $nhucau_cond

AND tbl_news.status ='accept' AND (noidung LIKE '%$key%' OR tieude LIKE '%$key%')";

Sử dụng từ khóa like “% %” với mục đích lấy tất cả các thơng tin có từ khóa là $key.

4.2.2. Giao diện dành cho admin: 4.2.2.1. Giao diện trang chủ:

Admin sẽ quản lý 7 phần trong hệ thống, bao gồm: Thành viên, tin đăng, chức năng tìm kiếm, quảng cáo, tài liệu, bình luận và thơng tin cá nhân.

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 68 Ở trang này hệ thống sẽ thống kê số lượng các phần, các thông tin thống kê này đều liên quan đến mỗi phần khác nhau. Mục đích giúp cho người quản lý có thể kiếm sốt được hệ thống một cách tổng quát nhất.

Hình 30: Giao diện admin.

4.2.2.2. Giao diện danh sách thành viên:

Hình 31: Giao diện danh sách thành viên.

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 69

Hình 32: Giao diện tin mới đăng

4.2.2.4. Giao diện tìm kiếm thơng tin:

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 70

4.2.2.5. Giao diện thêm một chuyên mục mới:

i

Hình 34: Giao diện thêm một chuyên mục mới.

4.2.2.6. Giao diện duyệt tin đăng:

SVTH: Đồn Trung Hiếu – GVHD: Ngơ Đình Thưởng. Trang 71

KẾT LUẬN A. ĐÁNH GIÁ KẾT QUẢ

Hiện tại hầu như chưa có website rao vặt nào dành riêng cho sinh viên. Ý tưởng em đưa ra có thể nói là mới và có khả năng ứng dụng trong thực tế. Tuy nhiên bên cạnh những ưu điểm, thì cũng khơng thể tránh khỏi những khuyết điểm cịn tồn tại. Dưới đây, chúng ta cùng nhìn lại những kết quả cũng như nhựng hạn chế cịn tồn tại trong q trình làm đề tài.

Kết quả đạt được

 Về kiến thức:

+ Biết được cách xây dựng một website.

+ Tìm hiểu được ngơn ngữ lập trình PHP, MySQL, CSS, jQuery.

 Về mặt thực tiễn:

+ Xây dựng được website rao vặt dành cho sinh viên Đại học Đà Nẵng.

+ Xây dựng được cơ sở dữ liệu đáp ứng các yêu cầu truy cập dữ liệu.

Hạn chế

Tuy đã đạt được những kết quả nhất định, nhưng vẫn có những hạn chế:

 Vấn đề bảo mật còn hạn chế.

 Hướng phân tích cần rõ ràng và rộng lớn hơn cho các nội dung khác liên quan

đến đời sống của sinh viên.

B. HƯỚNG PHÁT TRIỂN:

 Xây hệ thống với quy mô rộng lớn hơn, tin đăng không chỉ đơn thuần là tin học

tập, tài liệu mà có thể là bất cứ tin nào khác mà người dùng muốn đăng.

Một phần của tài liệu Xây dựng website rao vặt dành cho sinh viên Đại học Đà Nẵng. (Trang 59 - 84)

Tải bản đầy đủ (PDF)

(84 trang)