1. Đăng ký
- Mỗi người quản trị và biên tập viên phải đăng ký thông tin cá nhân bao gồm: Tên đăng nhập, mật khẩu, email, nhóm. Người quản trị sẽ kích hoạt và phân nhóm cho biên tập viên đó.
2. Xem, Sửa, Viết bài mới
- Mỗi một nhà biên tập khi đăng bài mới đòi hỏi phải cung cấp đầy đủ thông tin liên quan cho bài viết như: Hình đại diện, tiêu đề, tóm tắt nội dung, nội dung, danh mục tin. Mỗi bài viết sẽ được sắp xếp theo thứ tự bài mới nhất. Những bài viết nào chưa được duyệt sẽ được đánh dấu lại.
3. Xem , Sửa, Thêm mới menu
- Mỗi một nhà biên tập khi muốn thêm 1 module mới đòi hỏi phải cung cấp đầy đủ thông tin liên quan cho module như: link, tiêu đề.
Xem, Sửa, Thêm liên kết
- Mỗi một admin khi muốn thêm liên kết mới đòi hỏi phải cung cấp đầy đủ thông tin liên quan cho liên kết như: Đường dẫn hình ảnh, liên kết, tiêu đề.
51 trang |
Chia sẻ: lylyngoc | Lượt xem: 2930 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng website tin tức của công ty lss, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Luận văn
Xây dựng website tin tức của công ty lss MỤC LỤC
LỜI NÓI ĐẦU
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trong những yếu tố mang tính quyết định trong hoạt động của chính phủ, tổ chức, cũng như các công ty. Nó đóng vai trò hết sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ. Một trong số các ứng dụng nổi bật nhất của công nghệ thông tin đó là Internet, Internet là một kho tài nguyên vô cùng phong phú và đa dạng. Các dịch vụ của nó giúp cho con người ở khắp các châu lục trên thế giới có thể trao đổi, cập nhật thông tin một cách nhanh chóng, chính xác và dễ dàng. Các website trở thành một người bạn đáng tin cậy của những người sử dụng mạng.
Làm thế nào để người đọc nắm bắt được thông tin về điện thoại, máy tính, xe… Internet sẽ là đáp án có hiệu quả cao nhất để người đọc có thể tìm hiểu về những thông tin công nghệ trong nước hay nước ngoài.
Thông tin công nghệ là một thông tin vô cùng quan trọng đối với người yêu thích công nghệ. Nhưng muốn thu hút người đọc nhiều hơn nữa đến với công nghệ chúng ta cần xây dựng một website giới thiệu về điện thoại, máy tính, xe… Bắt nguồn từ ý tưởng này em đã chọn đề tài “Xây dựng website tin tức của công ty lss” nhằm giới thiệu, quảng bá tới người đọc một cái nhìn sâu, chi tiết hơn về các thông tin mới nhất về công nghệ trong và ngoài nước.
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Mô hình 3 lớp trong lập trình website.
Khái niệm
Mô hình 3 lớp MVC (mô hình 3 lớp thực thụ) là viết tắc của: Model – View – controller.
3 thành phần tách biệt: Model – View – Controller. Mỗi thành phần này hoạt đông tách biệt với 1 nhiệm vụ duy nhất và không bị phụ thuộc vào các thành phần khác. Những thay đổi trong mỗi thành phần sẽ không ảnh hưởng hoặc ảnh hưởng rất ít đến các thành phần khác. Nhiệm vụ của mỗi thành phần như sau:
Model: Model được phân nhiệm vụ truy xuất, xác nhận và lưu trữ dữ liệu vào CSDL của ứng dụng. Tất cả những nhiệm vụ logic đều được thực thi ở model
View: View được phân nhiệm vụ hiển thị dữ liệu và nhận dự liệu từ phía người dùng thông qua các điều khiển để tương tác với model.
Controller. Có thể nói đây là tầng quan trọng nhất trong 3 tầng, controller là tầng xử lý trung gian giữa View và Model. Mọi yêu cầu từ phía người dùng được nhận thông qua View (qua FORM HTML hoặc URL) và chuyển sang tầng Controller xử lý. Tại đây nó tương tác với tầng model để thực hiện các yêu cầu về dữ liệu (như việc gọi các thuộc tính, các phương thức xử lý dữ liệu) sau đó nhận lại các thông tin, dữ liệu được trả về từ model và hiển thị cho người dùng thông qua View.
Ưu điểm
Phát triển phần mềm: Có tính chuyên nghiệp hóa, có thể chia cho nhiều nhóm được đào tạo nhiều kỹ năng khác nhau, từ thiết kế mỹ thuật cho đến lập trình đến tổ chức database. Giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp,…
Bảo trì: với các lớp được phân chia theo như đã nói, thì các thành phần cảu một hệ thông dễ được thay đổi, nhưng sự thay đổi có thể được cô lập trong từng lớp, hoặc chỉ ảnh hưởng đến lớp ngay kề của nó, chứ không phát tán náo loạn trong cả chương trình.
Mở rộng: Với các lớp được chia theo 3 lớp như đã nói, việc thêm chức năng vào cho từng lớp sẽ dễ dàng hơn là phân chia theo cách khác.
Nhược điểm
Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trong quá trình phát triển.
Tốn thời gian trung chuyển dữ liệu của các tầng.
Nguyên tắc hoạt động của website.
Từ máy client gõ địa chỉ URL của trang web vào thanh địa chỉ của web browser, khi đó web browser sẽ dựa vào tên domain để tìm kiếm ip của web server (bằng cách dò trên DNS Server)
Khi có ip, web browser sẽ gửi yêu cầu đến web server để lấy nội dung trang web
Web server sẽ xử lý yêu cầu của client: lấy nội dung của website mà client yêu cầu để gửi client.
Khi nhận được nội dung trang web thì web browser sẽ hiển thị lên cho người dùng
Trình duyệt web sẽ tách địa chỉ website ra làm ba phần:
Giao thức (http)
Máy chủ tên miền (www.webname.com)
Tên tệp (file.htm)
Trình duyệt web liên hệ với máy chủ tên miền (DNS server) để phân giải tên miền “www.webname.com” thành địa chỉ ip của web server
Trình duyệt sẽ gửi tiếp 1 kết nối tới máy chủ địa chỉ ip tương ứng cổng 80.
Dựa trên giao thức HTTP, trình duyệt gửi yêu cầu đến máy chủ, yêu cầu tệp:
Máy chủ sẽ gửi đoạn text dạng html đến trình duyệt của web client. Trình duyệt đọc các thẻ html, định dạng trang web và kết xuất ra màn hình.
Website tĩnh.
Trang web tĩnh thường được xây dựng bằng các ngôn ngữ HTML, DHTML,…
Trang web tĩnh thường được dùng để thiết kế các trang web có nội dung ít cần thay đổi và cập nhật.
Website tĩnh là website chỉ bao gồm các trang web tĩnh và không có cơ sở dữ liệu đi kèm.
Website tĩnh thích hợp với cá nhân, tổ chức, doanh nghiệp vừa và nhỏ mới làm quen với môi trường internet.
Trang web tĩnh và website tĩnh các các ưu và nhược điểm cơ bản dưới đây.
Ưu điểm cơ bản
Thiết kế đồ họa đẹp : trang web tĩnh thường được trình báy ấn tượng và cuốn hút hơn web động về phần mỹ thuật đồ họa vì chúng ta có thể hoàn toàn tự do trình bày các ý tưởng về đồ họa và mỹ thuật trên toàn diện tích từng trang web tĩnh.
Tốc độ truy cập nhanh: tốc độ truy cập của người dùng vào các trang web tĩnh nhanh hơn các trang web động vì không mất thời gian trong việc truy vấn cơ sở dữ liệu như web động.
Thân thiện hơn với các máy tìm kiếm: bởi vì địa chỉ url của các .html, .htm,.. trong trang web tĩnh không chứa dấu chấm hỏi như trong web động.
Chi phí đầu tư thấp: chi phí xây dựng website tĩnh thấp hơn nhiều so với website động vì không phải xây dựng các CSDL, lập trình phần mềm cho web và chi phí cho việc thuê chỗ cho CSDL, chi phí yêu cầu hệ điều hành tương thích.
Nhược điểm cơ bản
Khó khăn trong việc thay đổi và cập nhật thông tin.
Thông tin không có tính linh hoạt, không thân thiện với người dùng.
Khó tích hợp, nâng cấp, mở rộng: khi muốn mở rộng, nâng cấp 1 website tĩnh hầu như là phải làm mới lại website.
Website động.
Web động là thuật ngữ được dùng để chỉ những website có cơ sở dữ liệu và được hỗ trợ bởi các phần mềm phát triển web.
Với web động, thông tin hiển thị được gọi ra từ một cơ sở dữ liệu khi người dùng truy vấn tới một trang web. Trang web được gửi tới trình duyệt gồm những câu chữ, hình ảnh, âm thanh hay những dữ liệu số hoặc ở dạng bảng hoặc ở nhiều hình thức khác nữa.
Chẳng hạn ứng dụng cơ sở của bạn có chức năng như một công cụ thương mại điện tử (một cửa hàng trực tuyến) trưng bày catalogue sản phẩm trên website hay theo dõi kho hàng, khi một mặt hàng được giao, ngay lập tức những trang có liên quan đến sản phẩm đó phản ánh sự thay đổi này. Những website cơ sở dữ liệu còn có thể thực hiện những chức năng truyền và xử lý thông tin giữa doanh nghiệp – doanh nghiệp.
Web động thường được phát triển bằng các ngôn ngữ lập trình tiên tiến như PHP, ASP, ASP.NET, Java, CGI, Perl, và sử dụng các cơ sở dữ liệu quan hệ mạnh như Access, My SQL, MS SQL, Oracle, DB2,
Thông tin trên web động luôn luôn mới vì nó dễ dàng được bạn thường xuyên cập nhật thông qua việc Bạn sử dụng các công cụ cập nhật của các phần mềm quản trị web . Thông tin luôn được cập nhật trong một cơ sở dữ liệu và người dùng Internet có thể xem những chỉnh sửa đó ngay lập tức. Vì vậy website được hỗ trợ bởi cơ sở dữ liệu là phương tiện trao đổi thông tin nhanh nhất với người dùng Internet. Điều dễ nhận thấy là những website thường xuyên được cập nhật sẽ thu hút nhiều khách hàng tới thăm hơn những web site ít có sự thay đổi về thông tin.
Web động có tính tương tác với người sử dụng cao. Với web động, Bạn hoàn toàn có thể dễ dàng quản trị nội dung và điều hành website của mình thông qua các phần mềm hỗ trợ mà không nhất thiết Bạn cần phải có kiến thức nhất định về ngôn ngữ html, lập trình web,Bạn cũng có thể nhìn nhận vấn đề theo khía cạnh khác: chẳng hạn bạn đã có sẵn những cơ sở dữ liệu như cơ sở dữ liệu sản phẩm, nhân sự, khách hàng hay bất kỳ cơ sở dữ liệu nào đó mà bạn muốn đưa thêm giao diện web vào để người dùng nội bộ hay người dùng Internet đều có thể sử dụng chương trình chỉ với trình duyệt web của mình.
Tất cả các website Thương mại điện tử, các mạng thương mại, các mạng thông tin lớn, các website của các tổ chức, doanh nghiệp hoạt động chuyên nghiệp trên Net đều sử dụng công nghệ web động. Có thể nói web động là website của giới chuyên nghiệp hoạt động trên môi trường Internet.
Mô hình hướng đối tượng.
Mô hình hướng đối tượng
“Lập trình hướng đối tượng là 1 phương pháp viết mã cho phép các lập trình viên nhóm các action tượng tự nhau vào các class”. Điều này giúp mã lệnh giữ vững được nguyên lý DRY “don’t repeat yourself” (không lặp lại chính nó) và dễ dàng để bảo trì.
Một lợi ích to lớn của nguyên lý lập trình DRY là: nếu một phần thông tin nào đó được thay đổi trong chương trình của bạn, thì thông thường chỉ cần có duy nhất 1 thay đổi để cập nhật lại mã lệnh. Một trong những ác mộng lớn nhất đối với các lập trình viên là bảo trì mã lệnh, nơi dữ liệu được khai báo đi khai báo lại nhiều lần, họ phải tìm kiếm, làm việc trên các dữ liệu và chức năng trùng lặp.
Thật ra Lập Trình Hướng Đối Tượng trở nên đáng sợ đối với rất nhiều lập trình viên bởi nó mang đến các cú pháp khá mới mẻ và cầu kỳ , do vậy nó nhanh chóng trở nên phức tạp hơn rất nhiều so với lập trình hướng thủ tục. Tuy nhiên, nếu các bạn nhìn nhận vấn đề 1 cách kỹ lưỡng hơn, Lập Trình Hướng Đối Tượng thực ra lại là 1 phương pháp rất đơn giản, giúp cho việc lập trình đơn giản hóa đi rất nhiều.Hiểu Về Đối Tượng (Objects) Và Lớp (Class)
Trước khi bạn có thể đi sâu vào cái tinh túy của Lập Trình Hướng Đối Tượng, một cái nhìn căn bản về sự khác nhau giữa object và class là rất cần thiết. Phần này chúng ta sẽ đi vào việc xây dựng từng phần của class, khả năng khác nhau và một số công dụng của chúng.Nhận thức sự khác nhau giữa Object và Class
Đôi khi có một số quan niệm nhầm lẫn trong hướng đối tượng: nhiều lập trình viên có kinh nghiệm cho rằng hai khái niệm object và class có thể thay thế cho nhau. Tuy vậy, đây không phải là vấn đề đáng quan tâm, mặc dù sự khác nhau giữa object và class có thể sẽ rất phức tạp khiến bạn phải bù đầu để tìm hiểu khi mới tiếp xúc với chúng.
Nhìn vào hình ví dụ phía trên, một class cũng giống như một bản thiết kế của một ngôi nhà. Nó định nghĩa hình dạng của ngôi nhà trên giấy, với các mối quan hệ giữa những phần khác nhau của ngôi nhà được xác định rõ và lên kế hoạch cụ thể, mặc dù ngôi nhà chưa thực sự tồn tại.
Một object sau đó, cũng giống như một ngôi nhà thực tế được xây dựng dựa trên bản thiết kế này. Dữ liệu trong object ở đây có thể được xem như là gỗ, dây điện, và bê tông để tạo nên ngôi nhà hoàn chỉnh: mà không hề có chi tiết cách tạo ra chúng trong bản thiết kế. Tuy nhiên, khi kết hợp tất cả lại với nhau, nó sẽ trở thành một ngôi nhà hoàn chỉnh đến từng chi tiết.
Các Class xử lý cấu trúc dữ liệu và các action, đồng thời sử dụng các thông tin đó để xây dựng các object. Có thể có nhiều hơn một object được xây dựng từ cùng một class tại cùng một thời điểm, mỗi object này đều là 1 cá thể độc lập và không phụ thuộc lẫn nhau. Trở lại vấn đề xây dựng, điều này cũng giống như một quần thể các lô nhà có thể được xây dựng trên cùng một bản thiết kế: 150 ngôi nhà khác nhau đều có hình dạng giống nhau, nhưng có các hộ gia đình và nội thất bên trong đều khác nhau.
Cấu trúc Class
Cú pháp để tạo ra một class khá đơn giản: để khai báo một class ta sử dụng từ khóa class, theo sau từ khóa là tên của class và một cặp ngoặc nhọn ({ }):
1
<?php
2
class MyClass {
3
// Class properties and methods go here
4
}
5
?>
Sau tạo ra class, bạn có thể khởi tạo và lưu trữ chúng trong một biến bằng cách sử dụng từ khóa new:
1
<?php
2
$obj = new MyClass;
3
?>
Để xem nội dung của class, bạn sử dụng hàm var_dump():
1
<?php
2
var_dump($obj);
3
?>
Hãy thử lại quá trình này bằng cách đặt toàn bộ các mã lệnh phía trên vào tập tin có tên là test.php và đặt nó vào trong locahost của bạn:
1
<?php
2
class MyClass {
3
// Class properties and methods go here
4
}
5
$obj = new MyClass;
6
var_dump($obj);
7
?>
Mở trình duyệt của bạn và chạy , bạn sẽ nhìn thấy như sau:
object(MyClass)#1 (0) { }
Vậy là xong, bạn đã vừa hoàn thành script hướng đối tượng (OOP) đầu tiên của bạn dưới hình thức đơn giản nhất.
Định nghĩa thuộc tính của ClassĐể thêm dữ liệu vào một class, người ta sử dụng thuộc tính, hoặc một biến riêng biệt nào đó. Chúng hoạt động tương tự như các biến thông thường, chỉ khác một điều là chúng đang liên kết với object và vì thế để có thể truy cập và sử dụng được chúng ta phải thông qua object hay nói cách khác là sử dụng object.Để thêm một thuộc tính vào MyClass, bạn thêm đoạn mã sau vào script của bạn:
01
<?php
02
03
class MyClass
04
{
05
public $prop1 = "I'm a class property!";
06
}
07
08
$obj = new MyClass;
09
10
var_dump($obj);
11
12
?>
Từ khóa public xác định tầm vực của thuộc tính. Tiếp đó, tên của thuộc tính được đặt đúng theo chuẩn cú pháp đặt tên cho biến, và một giá trị đã được gán cho nó (mặc dù thuộc tính của class không nhất thiết phải có giá trị ban đầu). Tuy nhiên chúng ta sẽ tìm hiểu về chúng ở các phần sau.Để đọc thuộc tính này và xuất chúng ra trình duyệt, chúng ta sẽ phải tham chiếu chúng thông qua các object:
1
<?php
2
echo $obj->prop1;
3
?>
Nếu chúng ta không khai báo object, chương trình sẽ không thể xác định được thuộc tính đó thuộc object nào (vì hiểu 1 cách đơn giản object là đại diện cho class). Sử dụng dấu mũi tên (->) là một cấu trúc của Hướng Đối Tượng, để một object có thể truy cập được nội dung của thuộc tính và phương thức trong class.Sửa lại mã lệnh file test.php như sau:
01
<?php
02
03
class MyClass
04
{
05
public $prop1 = "I'm a class property!";
06
}
07
08
$obj = new MyClass;
09
10
echo $obj->prop1; // Xuất thuộc tính ra trình duyệt
11
12
?>
Và bây giờ Reload lại trình duyệt của để được kết quả như sau:
I'm a class property!
Định nghĩa Phương thức của ClassPhương thức là các hàm riêng biệt của class. Các action riêng lẻ, mà một object sẽ thực thi, thì được định nghĩa bên trong class như là các phương thức.Ví dụ, để tạo ra các phương thức có khả năng thiết lập và trả về giá trị của thuộc tính$prop1, ta thêm đoạn mã như sau:
01
<?php
02
03
class MyClass
04
{
05
public $prop1 = "I'm a class property!";
06
07
public function setProperty($newval)
08
{
09
$this->prop1 = $newval;
10
}
11
12
public function getProperty()
13
{
14
return $this->prop1 . "";
15
}
16
}
17
18
$obj = new MyClass;
19
20
echo $obj->prop1;
21
22
?>
Chú ý: Hướng Đối Tượng cho phép các object tự tham chiếu chính nó (tham chiếu bên trong class) bằng cách sử dụng biến $this. Khi làm việc bên trong 1 phương thức, sử dụng $this cũng giống như cách bạn sử dụng object name bên ngoài class.Để sử dụng các phương thức này, việc gọi chúng cũng tương tự như sử dụng các hàm thông thường, nhưng chúng ta phải thông qua object để tham chiếu đến chúng. Echo thuộc tính từMyClass, thay đổi giá trị của nó, và echo nó một lần nữa để xem sự thay đổi:
01
<?php
02
03
class MyClass
04
{
05
public $prop1 = "I'm a class property!";
06
07
public function setProperty($newval)
08
{
09
$this->prop1 = $newval;
10
}
11
12
public function getProperty()
13
{
14
return $this->prop1 . "";
15
}
16
}
17
18
$obj = new MyClass;
19
20
echo $obj->getProperty(); // echo giá trị của thuộc tính
21
22
$obj->setProperty("I'm a new property value!"); // Thiết lập giá trị mới
23
24
echo $obj->getProperty(); // echo nó lại 1 lần nữa để xem sự thay đổi
25
26
?>
Reload lại trình duyệt, và bạn sẽ nhìn thấy như sau:
I'm a class property!I'm a new property value!
“Sức mạnh của Hướng Đối Tượng càng bộc lộ rõ khi chúng ta sử dụng cùng một class cho nhiều trượng hợp”
01
<?php
02
03
class MyClass
04
{
05
public $prop1 = "I'm a class property!";
06
07
public function setProperty($newval)
08
{
09
$this->prop1 = $newval;
10
}
11
12
public function getProperty()
13
{
14
return $this->prop1 . "";
15
}
16
}
17
18
// Tạo hai objects
19
$obj = new MyClass;
20
$obj2 = new MyClass;
21
22
// Echo giá trị của $prop1 từ hai object
23
echo $obj->getProperty();
24
echo $obj2->getProperty();
25
26
// Thiết lập giá trị mới cho thuộc tính $prop1 của từng object
27
$obj->setProperty("I'm a new property value!");
28
$obj2->setProperty("I belong to the second instance!");
29
30
// Echo lại giá trị của $prop1 từ hai object để xem sự thay đổi
31
echo $obj->getProperty();
32
echo $obj2->getProperty();
33
34
?>
Tổng quan về cơ sở dữ liệu quan hệ
Định nghĩa cơ sở dữ liệu quan hệ
Cơ sở dữ liệu quan hệ là loại cơ sở dữ liệu có cấu trúc bao gồm các bảng dữ liệu, mỗi bảng dữ liệu có quan hệ với các bảng khác theo một trong ba loại mối quan hệ. Ngoài ra chúng có thể quan hệ trực tiếp với nhau, nhưng cũng có thể quan hệ gián tiếp thông qua các bảng khác.
Các thành phần trong cơ sở dữ liệu quan hệ
Bảng dữ liệu: bảng là thực thể có cấu trúc dạng ma trận, dùng để chứa các thông tin quan hệ trong một hệ thống có thứ tự. Cấu trúc của bảng được tạo thành từ các trường (field) hay còn gọi là cột (column) và mẩu thông tin được nhóm lại theo từng hàng (rows).
Cột dữ liệu: Cột là một khối dữ liệu trong bảng, mỗi cột trong bảng có cấu trúc như một cột thông tin chi tiết có cùng loại dữ liệu, chúng có thể có quan hệ trực tiếp hay gián tiếp đến các cột khác trong bảng dữ liệu có quan hệ.
Hàng (rows): Là một thành phần của bảng, chứa thông tin của nhiều cột dữ liệu trong bảng.
Giá trị null: Là giá trị rỗng hay không được gán.
Các loại quan hệ.
Quan hệ hay còn gọi là Relationship, thể hiện mối quan hệ giữa các bảng thông qua các đối tượng nhận dạng (khoá). Có 3 kiểu quan hệ thường gặp đó là:
+ Quan hệ 1-1: Hai kiểu thực thể A và B có mối liên kết 1-1 với nhau, nếu mỗi đối tượng thuộc A có tương ứng một đối tượng thuộc B và ngược lại.
+ Quan hệ 1 – nhiều (1-n): Hai kiểu thực thể A và B có mối liên kết 1 – n với nhau nếu mỗi đối tượng thuộc A có tương ứng ít nhất một đối tượng thuộc B va mỗi đối tượng thuộc B có tương ứng một đối tượng thuộc A.
+ Quan hệ n - n (nhiều- nhiều): Hai kiểu thực thể A và B có mối quan hệ n-n với nhau nêu mỗi đối tượng thuộc A có tương ứng n đối tượng thuộc B và ngược lại.
Thuộc tính khoá và thuộc tính liên kết
Thuộc tính khoá của một kiểu thực thể là thuộc tính cho phép xác định mỗi thực thể và phân biệt với mỗi thực thể khác nhau.
Có hai loại khoá: Khoá chính (primary-key) và khoá quan hệ (Foreign - Key).
Khoá chính: Khoá chính của một bảng luôn có giá trị duy nhất, điều đó có nghĩa là không tồn tại hai mẩu tin có giá trị trên cột được thiết kế là khoá chính trùng nhau. Ngoài ra, khoá không tồn tại giá trị null hay rỗng.
Khoá quan hệ (khoá ngoại): Là khoá được thiết kế ràng buộc với khoá chính của một bảng khác ở bên ngoài bảng đó.
Thuộc tính liên kết: Mỗi thuộc tính được gọi là thuộc tính liên kết giữa các thực thể nếu nó không phải là khoá của kiểu thực thể này nhưng lại là khoá của thực thể khác.
Chuẩn hoá quan hệ
Chuẩn hoá quan hệ nhằm tối ưu dữ liệu tránh dư thừa, tránh nhập nhằng thông tin...
Các dạng chuẩn hoá:
+ Dạng chuẩn 1 (1NF): Tất cả các thuộc tính phải là nguyên tố.
+ Dạng chuẩn 2 (2NF): Các thuộc tính không khoá phụ thuộc đầy đủ vào khoá.
+ Dạng chuẩn 3 (3NF): Các thuộc tính không khoá phụ thuộc trực tiếp vào khoá.
Chuẩn hoá dữ liệu:
+ Dạng chuẩn 1NF ta tách các thuộc tính không lặp.
+ Từ 1NF-2NF: Tách các thuộc tính phụ thuộc bộ phận vào khoá.
+ Từ 2NF-3NF: Tách các thuộc tính không phụ thuộc vào khoá.
Giới thiệu MySQL
5.1 MySQL là gì ?
MySQL là một cơ sở dữ liệu server nhỏ.
MySQL là một trong những lựa chọn cho các ứng dụng vừa và nhỏ.
MySQL hỗ trợ SQL chuẩn.
MySQL được biên dịch dựa trên nhiều nền khác nhau, như Linux, Windows.
MySQL miễn phí trong download và sử dụng .
5.2. Tại sao ta sử dụng hệ cơ sở dữ liệu MySQL?
Sự kết hợp giữa PHP và MySQL tạo nên một nền tảng tốt cho trang web. Số lượng người sử dụng ngôn ngữ này ngày càng cao trong cộng động lập trình web, PHP và MySQL trở nên rất thông dụng.
Các đặc điểm nổi bật:
Nhanh và mạnh: MySQL không có đầy đủ những cơ sở vật chất cho một Hệ Quản trị cơ sở dữ liệu. Nếu công việc của bạn là lưu trữ dữ liệu trên web hoặc làm một trang Thương mại điện tử thì MySQL có đủ những thứ bạn cần. Đối với những cơ sở dữ liệu cỡ trung bình thì MySQL hỗ trợ tuyệt vời về tốc độ.
Cải tiến liên tục: MySQL được cải thiện liên tục với một tần số không ngờ. Các nhà phát triển nó cập nhật thường xuyên, ngoài ra còn bổ sung các tính năng hữu ích cho nó.
5.3. Các kiểu dữ liệu trong MySQL
üLoại dữ liệu numeric: bao gồm kiểu số nguyên và kiểu số chấm động.
Bảng dữ liệu số nguyên
Loại
Range
Byte
Diễn giải
Tinyint
-127->128 hay 0.. 255
1
Số nguyên rất nhỏ.
Smallint
-32768->32767 hay 0.. 65535
2
Số nguyên nhỏ.
Mediumint
-8388608->838860 hay 0.. 6777215
3
Số nguyên vừa.
Int
-231 ->231 hay 0.. 232 – 1
4
Số nguyên.
Bigint
-263 ->263 – 1 hay 0.. 264 -1
8
Số nguyên lớn.
Bảng dữ liệu số chấm động
Loại
Range
Byte
Diễn giải
Float
Phụ thuộc số thập phân
Số thập phân dạng single hay double.
Float(M, D)
±1.175494351E – 98
±3.40282346638
4
Số thập phân dạng single.
Double(M, D)
±1.7976931348623157308
±2.2250738585072014E – 308
8
Số thập phân dạng double.
Float(M[,D])
Số chấm động
dưới dạng char.
Số dữ liệu Date and Time: cho phép nhập liệu dưới dạng chuỗi ngày tháng hay dạng số.
Loại
Range
Diễn giải
Date
1000 – 01 – 01
Date trình bày dưới dạng yyyy-mm-dd.
Time
00 : 00 : 00
23 : 59 : 59
Time trình bày dưới dạng hh : mm : ss.
DateTime
1000-01-01
00 : 00 : 00
9999-12-31
23 : 59 : 59
Date và Time trình bày dưới dạng yyyymm-dd hh : mm : ss.
TimeStamp [(M)]
1970-01-01
00 : 00 : 00
Trình bày dưới dạng yyyy-mm-dd hh :
mm : ss.
Year [(2/4)]
1970-2069
1901-2155
Trình bày dưới dạng 2 số và 4 số.
Loại dữ liệu String: chia làm 3 loại.
Char- chiều dài cố định, varchar- chiều dài biến thiên. Char cho phép bạn nhập liệu dưới dạng chuỗi với chiều dài lớn nhất bằng chiều dài bạn đã định nghĩa.
Text hay Blob: Text cho phép lưu chuỗi rất lớn, Blob cho phép lưu đối tượng nhị phân.
Enum và Set.
Loại
Range (characters)
Diễn giải
Char
1-255
Chiều dài của chuỗi lớn nhất 255 kí tự.
Varchar
1-255
Chiều dài của chuỗi lớn nhất 255 kí tự.
Tinyblob
28 – 1
Khai báo cho Field chứa kiểu đối tượng nhị
phân cỡ 255 kí tự.
Tinytext
28 – 1
Khai báo cho Field chứa kiểu chuỗi cỡ 255 kí tự.
Blob
216 – 1
Khai báo cho Field chứa kiểu blob cỡ 65535 kí tự.
Text
216 – 1
Khai báo cho Field chứa kiểu chuỗi dạng văn bản cỡ 65535 kí tự.
Mediumblob
224 - 1
Khai báo cho Field chứa kiểu blob vừa khoảng 16777215 kí tự.
Mediumtext
224 - 1
Khai báo cho Field chứa kiểu chuỗi dạng văn bản vừa khoảng 16777215 kí tự.
Longblob
232 – 1
Khai báo cho Field chứa kiểu blob lớn khoảng 4294967295 kí tự.
Longtext
232 – 1
Khai báo cho Field chứa kiểu chuỗi dạng văn bản lớn khoảng 4294967295 kí tự.
Giới thiệu về PHP
1. PHP là gì ?
PHP là chữ viết tắt của "Personal Home Page", sau thì chuyển thành "PHP Hypertext Preprocessor" (ngôn ngữ tiền xử lý các siêu văn bản). PHP có phần mở rộng chính là *.php. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến. Khi client gửi yêu cầu "cần tải trang này về" đến web server, đầu tiên web server (server bắt buộc phải hỗ trợ PHP) sẽ phân tích và thi hành các mã lệnh được nhúng trong trang yêu cầu, sau đó trả về một trang web kết quả đã được xử lý cho client. PHP là một ngôn ngữ lập trình được kết nối chặt chẽ với máy chủ. Nói một cách đơn giản không theo thuật ngữ khoa học thì một quá trình xử lý PHP được thực hiện trên máy chủ ( Windowns hoặc Unix ). Khi một trang Web muốn dùng PHP thì phải đáp ứng được tất cả các quá trình xử lý thông tin trong trang web đó, sau đó đưa ra kết quả như ngôn ngữ HTML. Vì quá trình xử lý này diễn ra trên máy chủ nên trang Web được viết bằng PHP sẽ dễ nhìn hơn ở bất kì hệ điều hành nào.
Cũng giống như hầu hết các ngôn ngữ lập trình khác, PHP có thể nối trực tiếp với HTML. Mã PHP tách biệt với HTML bằng các thực thể đầu và cuối. Khi một tài liệu được đưa ra phân tích, quá trình xử lý PHP chỉ được thực hiện ở những điểm quan trọng, rồi sau đó đưa ra kết quả .
Nhưng PHP cũng có khả năng tách biệt mã hoàn toàn với HTML. Nói rộng hơn, việc đưa ra sự kết hợp này rất chi là lý tưởng bởi vì nó cho phép các nhà thiết kế có thể làm việc trên trang Web đã được bố trí theo kế hoạch mà không bị cản trở bởi các mã.
Lịch sử ra đời của PHP
PHP được giới thiệu năm 1994 như một bộ sưu tập của một ngôn ngữ lập trình chưa chặt chẽ và dựa vào Perl và các dụng cụ của trang chủ. Tác giả của cuốn ngôn ngữ lập trình này là ông R.Lerdoft.
Tới năm 1998 việc công bố phiên bản 3 thì PHP mới chính thức phát triển theo hướng tách riêng của mình. Giống như C và Perl, PHP là một ngôn ngữ lập trình có cấu trúc và tính năng đa dạng. Chính vì những điểm giống nhau này đã khuyến khích các nhà thiết kế Web chuyên nghiệp chuyển qua sử dụng PHP. Với phiên bản 3 này PHP cũng cung cấp một số lượng cơ sở dữ liệu khá đồ sộ gồm cả MySQL, SQL, OPBC và Oracle. Nó cũng có thể làm việc với các hình ảnh các file dữ liệu, FTP, XML và host của các kĩ thuật ứng dụng khác.
Đến nay PHP vẫn là một dịch vụ hàng đầu miễn phí. Tuy nhiên không giống như một số ngôn ngữ khác càng ngày nó càng trở thành một xu hướng vì rất nhiều các trang Web hiện nay được làm bằng PHP.
üTại sao nên dùng PHP ?
Không còn xa lạ gì khi có rất nhiều sự lựa chọn các ngôn ngữ lập trình khác ngoài PHP như ASP, Perl... và một số loại khác. Trong mỗi ngôn ngữ lập trình này đều có cấu hình và tính năng khác nhau thì chúng vẫn có thể đưa ra một kết quả giống nhau.
Rất đơn giản đối với những người còn xa lạ với chương trình này đây là sự lôi cuốn mạnh mẽ nhất. Thậm chí là rất ít hoặc không có một chương trình nào có thể tạo ra một tốc độ đáng kinh ngạc trong việc phát triển bành trướng như PHP. Bởi vì nó được thiết kế đặc biệt trong các ứng dụng Web, PHP xây dựng được rất nhiều tính năng để đáp ứng những nhu cầu chung nhất.
PHP là một mã nguồn thông tin mở: Bởi vì mã nguồn của PHP sẵn có nên cộng đồng các nhà phát triển web luôn có ý thức cải tiến nó, nâng cao để khắc phục các lỗi trong chương trình này.
PHP rất ổn định và tương hợp, mới đây PHP đã vận hành khá ổn định trên các hệ điều hành gồm cả Unix, Windows... Đồng thời nó cũng nối với một số máy chủ như IIS hay Apache.
2. Mô hình hoạt động và các đối tượng trong PHP
Phư
*
Nhân
$var * $var2
Nhân 2 giá trị với nhau
/
Chia
$var/$var2
Chia giá trị 1 cho giá trị 2
%
Tính %
$var%$var2
Tính % ( Ít dùng)
Phương thức vận hành tăng giảm
Operand
Name
Sample
Description
++
Tăng sau
$var++;
Trở về $var, sau đó tăng thêm 1 đơn vị
++
Tăng trước
++$var;
Tăng $var thêm 1, sau đó trở về như cũ.
--
Giảm sau
$var--;
Trở về $var, sau đó tăng thêm 1.
--
Giảm trước
--$var;
Giảm $var đi 1, sau đó trở về như cũ.
Phương thức so sánh
Phương pháp Logic
Operand
Name
Sample
Description
Phương thức vận hành
Ðây là một trong những cách vận hành phổ biến mà bạn sẽ được biết đến trong những bài viết về PHP, nó cho phép bạn có thể sửa đổi. Bạn có thể sửa đổi các số nguyên, các xâu và thậm chí là các kết quả.
Phương thức vận hành tương thích
Chức năng này cho phép bạn có thể sửa đổi từ cái này sang cái khác. Bạn có thể sửa đổi các chuỗi, các thay đổi khác và thậm chí là kết quả.
Vận hành theo phương thức toán học
Operand
Name
Sample
Description
+
Cộng
$var + $var2
Cộng hai giá trị với nhau
-
Trừ
$var - $var2
Trừ giá trị 1 cho giá trị hai
AND
And
$var AND $var2
Is true if both values are true.
OR
Or
$var OR $var2
Is true if either value is true.
XOR
Xor
$var XOR $var2
Is true if either value is true, but not both.
&&
And
$var && $var2
Is true if both values are true.
||
Or
$var || $var2
Is true if either value is true.
!
Not
!$var
Is true if the value is not true (ex. if the variable doesn t exist).
Phương thức ưu tiên
Thứ tự ưu tiên cao nhất
* / %
+ - .
>=
&&
||
And
Xor
Thứ tự ưu tiên thấp nhất
or
Tạo một trang PHP
Tạo 1 trang hello.php với nội dung sau: PHP
PHP Test
Hello World'; ?>
Trang Output sẽ là như thế này:
CODE
PHP Test
Hello World
3. Cách kết nối PHP và MySQL
3.1. Tạo kết nối, liên kết và truy xuất dữ liệu
Để connect tới 1 cơ sở dữ liệu trên MySQL server chỉ cần dùng hàm mysql_connect(host, user, password) để mở 1 kết nối tới MYSQL server với kết quả là giá trị trả về của hàm (Giả sử là biến $db). Sau đó, dùng hàm mysql_select_db (database_name, link_id) để chọn cơ sở dữ liệu bạn muốn kết nối.
Để thực hiện một câu lệnh truy vấn, dùng hàm mysql_query (query, link_ID). Giá trị trả lại của hàm là kết quả của câu truy vấn. Nếu bỏ qua link_ID thì kết nối cuối cùng tới MySQL server sẽ được thực hiện. Ngoài cách dùng hàm mysql_result() để lấy kết quả thực hiện có thể dùng các hàm khác: mysql_fetch_row(), mysql_fetch_array(), and mysql_fetch_object().
VD:
<?php
$db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db)
;
printf("First Name: %s\n", mysql_result($result,
0,"first"));
printf("Last Name: %s\n", mysql_result($result,0 ,"last"));
?>
mysql_fetch_row($result): trả về một mảng các dữ liệu lấy từ 1 dòng trong cơ sở dữ liệu. Nếu đã ở cuối cơ sở dữ liệu, giá trị trả về là false. Bạn phải dùng chỉ số của các trường trong cơ sở dữ liệu nếu muốn lấy dữ liệu từ các bảng.
mysql_fetch_array (int result [, int result_type]): trả về một mảng chứa dữ liệu lấy từ 1 dòng trong cơ sở dữ liệu.
Tương tự như mysql_fetch_row() nhưng bạn có thể lấy trực tiếp tên trường để lấy dữ liệu.
mysql_fetch_object: chuyển kết quả thành một đối tượng khác với các trường là các trường cụ thể đã có trong cơ sở dữ liệu trên.
4. Giới thiệu về Xampp
Xampp là gì?
Một trong những khó khăn ban đầu của người mới làm Web đó là cài đặt Web Server. Đa phần cảm thấy rất khó khăn trong việc cài đặt Apache (Web Server) + MySQL (Database Server) + PHP và cấu hình sao cho chúng làm việc tốt với nhau.
Tuy nhiên có một giải pháp khá đơn giản và tiện lợi. Đó là gói cài đặt tích hợp gồm
Apache + MySQL + PHP + PHPMyAdmin (một công cụ quản trị sơ sở dữ liệu).
Mọi việc cần làm chỉ còn là download bản cài đặt và tiến hành cài đặt từng bước theo chỉ dẫn.
Có 3 sản phẩm rất nổi tiếng là XAMPP, WAMP và Appserv. Tuy nhiên với mục đích cài đặt trên localhost để chạy thử thì XAMPP chính là lựa chọn đầu tiên và dễ dàng.
Xampp: Một gói phần mềm Web Server tất cả trong một (All-in-One) gồm:
Apache, MySQL, PHP chạy trên nền Windows.
Có thể cài đặt XAMPP dễ dàng.
Được cập nhật đều đặn.
Rất tốt cho việc tạo máy chủ Web để chạy thử, thiết kế Website bằng PHP.
Chạy tốt cho Joomla 1.0.x, Joomla 1.5.
Hỗ trợ PHP5.
Miễn phí.
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Mô tả CSDL Website tin tức.
Một website tin tức của công ty sẽ đăng những tin tức mới nhất và nổi bật cho độc giả, website cũng quản lý việc upload bài viết , duyệt bài viết đó của các biên tập viên và các mục quảng cáo trên website. Sau đây là phần mô tả dữ liệu của website:
Website gồm nhiều trang, mỗi trang có một chủ đề và chức năng riêng. Mỗi Chủ đề phải có đường dẫn đến từng trang, có tên và chủ đề, nội dung của từng trang. Trang chủ sẽ tóm tắt nội dung của toàn bộ website bao gồm các tin tức mới nhất, tin tức tổng hợp của từng chủ đề, các mục quảng cáo và thông tin của công ty. Trang chủ đề sẽ đăng những tin tức thuộc chủ đề đó. Và trang đăng nhập để admin và biên tập viên đăng nhập tác nghiệp.
Mỗi chủ đề phải khác nhau và phân biệt với các chủ đề khác. Biên tập của công ty sẽ quản lý được số chủ đề hiện có của website và tên của từng chủ đề. Mỗi chủ đề sẽ có 1 từ khóa để nhận biết các chủ đề.
Mục quảng cáo sẽ do người quản trị quản lý, mỗi mục quảng cáo phải phân biệt với nhau. Người quản trị website sẽ quản lý số lượng các quảng cáo trong website. Việc quản lý quảng cáo sao cho người quản trị có thể biết nội dung quảng cáo, đường dẫn liên kết trên các mục quảng cáo đó, ngày đăng quảng cáo và số lượng bạn đọc click vào quảng cáo đó.
Mỗi chủ đề sẽ có nhiều mục tin tức. Mỗi tin tức phải phân biệt và thuộc 1 chủ đề nào đó. Mỗi một tin tức sẽ gồm có tiêu đề tin tức, nội dung tin tức, phần tóm tắt tin tức đó, đường dẫn liên kết đến hình ảnh liên quan đến tin tức. Ngày đăng tin tức, người đăng, ngày duyệt, người duyệt cũng phải được lưu trữ lại. Mỗi tin tức phải có nội dung chi tiết, và cập nhật số lần đọc qua tin tức đó của độc giả. Các tin tức sẽ có 1 từ khóa để có thể dễ quản lý.
Đăng ký
Mỗi người quản trị và biên tập viên phải đăng ký thông tin cá nhân bao gồm: Tên đăng nhập, mật khẩu, email, nhóm. Người quản trị sẽ kích hoạt và phân nhóm cho biên tập viên đó.
Xem, Sửa, Viết bài mới
Mỗi một nhà biên tập khi đăng bài mới đòi hỏi phải cung cấp đầy đủ thông tin liên quan cho bài viết như: Hình đại diện, tiêu đề, tóm tắt nội dung, nội dung, danh mục tin. Mỗi bài viết sẽ được sắp xếp theo thứ tự bài mới nhất. Những bài viết nào chưa được duyệt sẽ được đánh dấu lại.
Xem , Sửa, Thêm mới menu
Mỗi một nhà biên tập khi muốn thêm 1 module mới đòi hỏi phải cung cấp đầy đủ thông tin liên quan cho module như: link, tiêu đề.
Xem, Sửa, Thêm liên kết
Mỗi một admin khi muốn thêm liên kết mới đòi hỏi phải cung cấp đầy đủ thông tin liên quan cho liên kết như: Đường dẫn hình ảnh, liên kết, tiêu đề.
Khảo sát hiện trạng và nhu cầu.
Hiện trạng
Trong hoàn cảnh đất nước hội nhập kinh tế quốc tế và nhu cầu tìm hiểu thông tin về công nghệ thông tin cao, nhu cầu quảng bá hình ảnh công ty là hết sức cần thiết
Nhu cầu
Về giao diện
Chương trình phải hoàn toàn bằng tiếng việt.
Giao diện dễ hiểu, thân thiên với người dùng.
Dễ sử dụng, những người không biết về tin học có thể sử dụng được chương trình
Ít thao tác.
Về chức năng
Ban quản trị:
Mỗi thành viên trong ban quản trị có một tài khoản riêng khi đăng nhập vào có thể theo dõi chỉnh sửa tin tức của trang website.
Có tất cả các chức năng thêm, xóa, sửa thay đổi toàn bộ giao diện của trang webstie.
Người đọc:
Xem được các tin tức có trên trang webste.
Các bảng trong CSDL
Categories:
id : Mã categories.
name : Tên categries.
News
id: Mã tin
images: Ảnh tin
tieude: Tiêu đề của tin
tomtatnoidung: Tóm tắm nội dung
noidung: Nội dung tin
thoigian: Thời gian đăng tin
tacgia: Tác giả đăng
luotxem: Lượt xem
danhmuctin: Danh mục tin
trangthai: Trạng thái
Users
id: Mã user
username: Tên đăng nhập
password: Mật khẩu đăng nhập
email: Email
group: Nhóm
Chi tiết các thuộc tính trong CSDL
Categories
Categories
Field
Type
Null
Defauld
Comment
Id
Int(11)
No
Khóa Chính
Name
Varchar(200)
Yes
NULL
News
News
Field
Type
Null
Defauld
Comment
id
Int(11)
No
Khóa Chính
image
Varchar(250)
No
tieude
Varchar(250)
Yes
NULL
tomtatnoidung
Text
No
noidung
Text
Yes
NULL
thoigian
Datetime
No
tacgia
Varchar(100)
No
luotxem
Int(11)
No
danhmuctin
Varchar(200)
No
trangthai
Varchar(100)
no
Users
User
Field
Type
Null
Defauld
Comment
Id
Int(11)
No
Khóa Chính
Username
Varchar(100)
Yes
NULL
Password
Varchar(30)
Yes
NULL
Email
Varchar(100)
No
Group
Varchar(100)
No
CHƯƠNG 3: THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH
Trang chủ
Module điện thoại
Module máy tính
Module xe
Module admin
Module thêm mới bài viết
Module quản lý các liên kết
Module thêm mới 1 liên kết
Module xem liên kết
Module thêm mới liên kết
Module danh sách quản trị viên
Module thêm mới quản trị
TÀI LIỆU THAM KHẢO
[1]. PGS, TS.Nguyễn Văn Ba, Phân tích và thiết kế hệ thống, Nxb Đại học Quốc gia - Hà Nội, 2003.
[2]. PGS, TS. Phạm Hữu Khang, Xây dựng ứng dụng web bằng PHP & MySQL, Nxb Mũi Cà Mau.
[3]. Jesus Castagnetto, Harish Rawat, Sascha Schumann, Chris Scollo, Deepak Veliath; Professional PHP Programming, Nxb Wrox.
Các file đính kèm theo tài liệu này:
- btlcsdlweb_6116.doc