Tạo - Mở hoặc tạo 1 trang PHP không thể tạo recordset trong trang html - Vào menu Window chọn Databases - Nhắp nút + trong panel Bindings chọn Recordset - Name: Tên recordset - Conne
Trang 1LẬP TRÌNH DÙNG TOOL
1 Connection:
Trong website, nếu cần lấy dữ liệu từ database thì bạn cần phải tạo 1
connection trước Một connection là 1 kết nối đến 1 database và có tầm vực
trong toàn bộ website của bạn
Connection chỉ có thể tạo trong 1 website động Một website có thể tạo nhiều connection (để kết nối đến nhiều database)
a Tạo
- Vào menu Window chọn Databases
- Nhắp nút + trong panel Databases chọn MySql Connection
- Connection name: Tên
connection
- MySql Server: địa chỉ Mysql
Server
- User name: username kết nối
đến database server
- Password: mật khẩu
- Database: Tên database muốn
kết nối đến
OK xong, bạn sẽ thấy xuất hiện
folder connections
b Chỉnh
- Nhắp đúp folder connections
- Nhắp đúp file connection trong đó
Bạn sẽ thấy đoạn code do Dreamweaver tạo ra để kết nối đến datavase
Ở đây có thể sửa địa chỉ server, tên database, username, password nếu cần thiết
- Để tiếng việt hiện được ngoài trang web, hãy thêm lệnh
mysql_query("set names 'utf8'") như sau :
c Kiểm tra kết nối và xem dữ liệu
Trang 2hiện dữ liệu trong database ra trang web, bạn phải tạo recordset.
a Tạo
- Mở hoặc tạo 1 trang PHP (không thể tạo recordset trong trang html)
- Vào menu Window chọn Databases
- Nhắp nút + trong panel Bindings chọn Recordset
- Name: Tên recordset
- Connection: chọn connection
đã tạo
- Table: chọn bảng cần lấy dữ
liệu
- Columns: Chọn các field cần
dùng
- Sort: Chọn field sắp xếp dữ
liệu (nếu muốn)
- Filter : chỉ định cách lọc dữ
liệu (nếu cần)
- Nút Advanced: chuyển qua
chế độ Advanced để xem câu lệnh SQL do dreamweaver phát sinh cho bạn (xem hình dưới)
- Nút Simple: Trở lại chế độ Simple
- Xong nhắp OK
Ví dụ: Tạo recordset có tên là loaitin, lấy dữ liệu từ 2 field idLT, Ten
trong bảng loaitin, chỉ chọn các loại tin có AnHien=1, sắp xếp tăng dần theo ThuTu
Ví dụ: Tạo recordset tên là theloai, lấy dữ liệu từ 2 field idTL, TenTL
trong bảng theloai, lọc theo AnHien=1, sắp xếp field ThuTu tăng dần
b Chỉnh recordset
Muốn chỉnh 1 recordset đã có, hãy nhắp đúp tên recordset trong panel Bindings, cửa sổ recordset hiện lên để bạn hiệu chỉnh
Trang 3c Xem code tạo recordet
Khi tạo xong recordset , Dreamweaver sẽ phát sinh 1 đoạn code để lấy dữ liệu giúp, muốn xem đoạn này thì qua chế độ code bạn sẽ thấy
Hình ảnh sau đây là đoạn code tạo recordset loaitin như yêu cầu ở trên:
- Dòng đầu (trong hình trên) là lệnh chọn database
- Dòng 2 là câu lệnh SQL
- Dòng 3 là tạo recordset
- Dòng 4 lấy record đầu tiên trong recordset đưa vào thành array có tên là $row_TênRecordset
- Dòng 5: Số record trong recordset
d Xóa recordset
- Muốn xóa recordset, nhắp tên recordset trong panel Bindings rồi gõ Delete
3 Hiển thị 1 field:
- Nhắp vị trí cần hiện rồi qua chế độ Code
- Gõ theo cú pháp sau
<? echo $row_TenRecordset['TenField']; ?>
- Ví dụ: Nếu cần hiện field Ten trong recordset tên loaitin thì gõ như sau:
<? echo $row_loaitin['Ten']; ?>
- Kéo field cần hiện từ cửa sổ Bindings vào vị trí cần hiện
4 Tạo vùng lặp:
Tạo vùng lặp để hiện hết các record trong 1 recordset
- B1: Chuẩn bị nơi chứa field (chèn div, chèn table… nếu cần) và kéo field vào
- B2: Chọn tag cần lặp rồi vào Server Behavior nhắp nút + chọn
Repeat Region
- B3: Chọn recordset và số record muốn lặp (All record hoặc 1 số
record nào đó)
Chú ý:
Với 1 recordset, bạn chỉ lặp 1 lần, muốn lặp lại với tag khác, hãy xóa vùng lặp bằng cách vào Server Behavior, nhắp Repeat region cần xóa rồi gõ Delete
b Ví dụ 1: Hiện hết dữ liệu trong recordset theloai, tên mỗi thể loại trong tag p:
- Tạo recordet như sau
Trang 4- B1: Kéo field TenTL vào trang web rồi nhắp sau field TenTL Enter xuống hàng (để tạo tag p quanh field TenTL)
- B2: Chọn tag p chứa field TenTL rồi vào Server Behavior, nhắp nút + , chọn Repeat Region
- B3: Chọn recordset theloai và All record OK
(Qua code bạn sẽ thấy tag p nằm trong vòng lặp do)
c Ví dụ 2: Hiện hết dữ liệu trong recordset theloai, tên mỗi thể loại trong tag tr
- Vào Server Behavior, nhắp Repeat region rồi gõ Delete
- Chèn table 1 hàng, 1 cột, W=100%, Border=1, CellPadd=4,
CellSpace=0
- B1: Kéo field TenTL vào ô của bảng
- B2: Chọn tag tr chứa field TenTL rồi vào Server Behavior, nhắp nút + , chọn Repeat Region
- B3: Chọn recordset theloai và All record OK
Trang 5(Qua code bạn sẽ thấy tag tr nằm trong vòng lặp do)
d Ví dụ 3: Hiện hết dữ liệu trong recordset theloai, tên mỗi thể loại trong tag td
- Vào Server Behavior, nhắp Repeat region rồi gõ Delete
- Chọn tag td chứa field TenTL rồi vào Server Behavior, nhắp nút + , chọn Repeat Region
- Chọn recordset theloai và All record OK
- Nếu muốn thêm 2 ô Trang chủ và Giới thiệu ở đầu và cuối thì bạn qua code gõ thêm 2 td ở trước và sau vòng lặp do
- Kết quả sẽ được thế này:
5 Hiện hình có địa chỉ từ database
Cách thực hiện như sau:
- B1: (Chuẩn bị) Tạo hoặc mở 1 trang PHP
Ví dụ : Mở file quangcao.php
- B2: Tạo recordset có field chứa địa chỉ hình:
- B3: Nhắp vị trí cần chèn trong trang web (phía dưới chữ quảng cáo ở cột
phải) rồi vào menu Insert chọn Images
- B4: Chọn Data Source (xem hình)
Trang 6- B5: Chọn field chứa địa chỉ hình (urlHinh) rồi OK
- B6: F12 xem thử bạn sẽ thấy hình Nếu cần lặp thì chọn hình rồi ra
lệnh lặp
6 Nested Repeat Region
Là tool giúp bạn trình bày dữ liệu từ 2 bảng có quan hệ 1-nhiều Tool này nằm
trong extension Developer Toolbox
a Dùng Nested Repeat để hiện dữ liệu từ 2 bảng theloai và loaitin (2
bảng này quan hệ 1 nhiều)
B1: Tạo/mở 1 trang PHP
Ví dụ: tạo trang nested.php
B2: Trên thanh Insert bar, nhắp tab Developer ToolBox rồi nhắp nút Nested Repeat Region Wizard
connection
- Master table: chọn
bảng bên quan hệ 1 (theloai)
- Primary table: khóa
chính của bảng bên quan hệ 1 (idTL)
- Display value: Field
mà bạn muốn hiện trên trang web (chọn TenTL)
- Detail table: Bảng
bên quan hệ nhiều (loaitin)
ngoại của bảng bên quan hệ nhiều (idTL) Đây là field quan
hệ với khóa chính của bảng bên 1
- Display value: Field
bạn muốn hiện trong trang web (Ten)
- Chọn cách hiển thị
(Subtable hoặc List)
Dreamweaver sẽ tạo 1 table gồm 2 dòng như sau:
Trang 7B3: Định dạng - nếu muốn - và F12 Xem thử
b Dùng Nested Repeat để hiện dữ liệu từ 2 bảng binhchon và
phuongan (2 bảng này quan hệ 1 nhiều)
Mời bạn tự thực hiện với gợi ý sau
- Connection: chọn connection
- Master table: binhchon
- Primary table: idBC
- Display value: Mota
- Detail table: phuongan
- Foreign key: idBC
- Display value: Mota
7 Looper Wizard
Là tool giúp bạn trình bày dữ liệu theo dạng nhiều hàng nhiều cột Tool này
nằm trong extension Developer Toolbox
B1: Tạo/mở 1 trang PHP cần dùng tool này
B2: Tạo recordset để lấy dữ liệu (nếu chưa có)
B3: Đưa các field vào trang web
B4: Chọn vùng muốn lặp rồi nhắp nút Looper Wizard (kế nút Nested Repeat
Region)
B5: chọn kiểu lặp, chọn recordset, số hàng , số cột
Lab:
B1: Tạo trang looper.php
B2: Tạo recordset như sau:
B3:Kéo field {TieuDe} vào trang
Nhắp sau field TieuDe, Enter xuống hàng rồi kéo TomTat vào bên dưới
B4: Chọn 2 field mới kéo rồi nhắp nút Looper Wizard (kế nút Nested Repeat
Region)
B5: chọn kiểu lặp Horizontal, chọn recordset tin, 5 hàng, 2 cột rồi OK
Trang 8F12 xem thử sẽ thấy kết quả 2 cột tin như hình
Nếu muốn thay đổi số hàng, số cột, thì nhắp đúp Horizontal Looper trong Server Behavior
8 Tạo link kết có truyền tham số (truyền biến)
Muốn liên kết đến 1 file php và truyền tham số cho nó thì bạn gõ địa chỉ liên kết theo cú pháp sau:
TenFile.php ? TenThamSo =GiaTri
Ví dụ:
- Trong website, bạn có 1 file tên chitiettin.php, file này làm nhiệm vụ hiện 1 tin nào đó trong database, chỉ cần cho nó biết id của tin cần hiện
- Vậy thì ở 1 trang web nào đó trong website, bạn liên kết đến file chitiettin và truyền biến idTin như sau
chitiettin.php?idTin=183
trong đó 183 là id của tin cần xem
Trang 9Giá trị tham số cũng có thể lấy từ database Ví dụ: lấy idTin từ database như sau:
chitiettin.php?idTin= <?php echo $row_tin['idTin']; ?>
9 Trang web có sử dụng tham số
Website của bạn có 1000 tin, cần phải tạo 1000 trang web để hiện từng tin? Dĩ nhiên chúng ta không làm thế Bạn chỉ cần tạo 1 trang web động, ví dụ là
chitiettin.php 1 trang web này có thể hiện 1 tin bất kỳ trong site của bạn, khi link đến nó chỉ cần cho biết id của tin cần hiện Nghĩa là các trang web khác link đến trang chitiettin.php với địa chỉ như sau:
chitiettin.php?idTin=xxx (xxx là id của tin cần hiện)
Trang chitiettin phải tạo 1 recordset và lọc theo id của tin truyền tới như sau: B1: Tạo trang chitiettin.php (nếu chưa tạo)
B2: Tạo recordset lọc theo tham số idTin
B3: Kéo các field cần hiện vào
10 Lặp lồng nhau (tự làm , không dùng wizard)
Dưới đây là minh họa với việc thể hiện dữ liệu từ 2 bảng theloai và loaitin
a Tạo trang PHP mới , đặt tên laplongnhau.php (hoặc mở file có sẵn cũng được)
b Tạo recordset cha
Name: theloai
Table: theloai
Column: idTL, TenTL
Filter :
Enter value 1
Sort: ThuTu ASC
OK
c Tạo recordset con
Name: loaitin
Table: loaitin
Column: idLT, Ten
Filter :
idTL =
Enter value 123456789
Sort: ThuTu ASC
OK
d Kéo field vào
- Kéo field TenTL từ recorset theloai vào
- Nhắp sau field TenTl, Enter xuống hàng
- Kéofield Ten vào bên dưới field Theloai
e Lặp vòng ngoài (theloai)
- Chọn 2 field mới đưa vào
trang
- Vào Server Behavior +
Repeat Region
- Chọn recordset theloai và
All Record OK
Trang 10g Liên kết
- Ở chế độ Design, chọn field Ten
- Xuống mục Link trên thanh Porperties, gõ
tintrongloai.php?idLT=aa
- Qua code, chọn chữ aa rồi kéo field idLT từ recordset loaitin vào thay thế
h Định dạng (nếu cần)
- Tạo class :
.theloai { font-size: 16px; font-weight: bold;
color: #FFFFFF; background-color: #006699;
margin-top: 1px; margin-bottom: 1px;
padding-top: 5px; padding-bottom: 5px;
}
- Chọn tag p chứa field TenTL rồi set class theloai
- Tạo class:
.loaitin { background-color: #333333;
margin-top: 1px; margin-bottom: 1px;
padding-top: 5px; padding-bottom: 5px;
padding-left: 10px;
}
- Tạo class:
.loaitin a { color: #FFFF00; text-decoration: none;}
- Tạo class:
.loaitin a:hover { font-weight: bold; color: #CCFF99;
text-decoration: underline;
}
Trang 11- Chọn tag p chứa field Ten rồi set class loaitin
- F12 xem thử
11 Thay thế Nested Repeat bằng menu tạo bởi Sothink
a Tạo trang PHP mới rồi thực hiện như mục 10 từ mục b đến g (hoặc mở file laplongnhau_sothink.php)
b Mở tool Sothink, chọn 1 kiểu menu nào đó (ví dụ : Twinkle) rồi OK
c Xóa dữ liệu thừa:
- Menu chính 1: đổi thành Trang chủ Mục Link: gõ index.php
- Menu chính 2: đổi thành TenTL Mục Link: gõ #
- Menu con : đổi thành TenLoaiTin như hình Mục Link: gõ #
- Xóa bớt các mục menu khác, chỉ để lại 2 menu chính và 1 menu con như trên
d Trong trang laplongnhau_sothink.php
- Ở chế độ Design , nhắp chọn nhãn Repeat bao quanh thể loại và loại tin rồi qua code
- Copy dòng đầu tiên của vùng đang được chọn , hoặc dòng dưới đây
<?php do { ?>
e Qua cửa sổ sothink:
- Nhắp menu TenTL bên cột trái rồi nhắp Condition ở cột phải
- Paste vào vùng Prefix
f Trong trang laplongnhau_sothink.php
- Ở chế độ Design , nhắp chọn nhãn Repeat bao quanh thể loại và
loạtin tin rồi qua code
- Copy dòng cuối của vùng đang được chọn , hoặc dòng dưới đây
<?php } while ($row_theloai = mysql_fetch_assoc($theloai)); ?>
g Qua cửa sổ sothink:
- Nhắp menu TenTL bên cột trái rồi nhắp Condition ở cột phải
- Paste vào vùng Suffix
Trang 12- Ở chế độ Design, nhắp chọn field TenTL rồi qua code
- Copy vùng đang được chọn , hoặc dòng dưới đây
<?php echo $row_theloai['TenTL']; ?>
i Qua cửa sổ sothink:
- Nhắp menu TenTL bên cột trái rồi nhắp General ở cột phải
- Paste vào vùng Text
j Trong trang laplongnhau_sothink.php
- Ở chế độ Design, nhắp chọn nhãn Nested Repeat rồi qua code
- Trong vùng code đang được chọn , bạn thấy 3 phần: phần đầu (tạo
recordset loaitin và bắt đầu lặp), phần hiện tên loại tin, phần sau (kết thúc lặp)
- Hãy copy phần đầu, hoặc đoạn code dưới đây:
<?php
if ($totalRows_theloai>0) {
Trang 13$nested_query_loaitin = str_replace("123456789", $row_theloai['idTL'],
$query_loaitin);
mysql_select_db($database_webtintuc);
$loaitin = mysql_query($nested_query_loaitin, $webtintuc) or die(mysql_error());
$row_loaitin = mysql_fetch_assoc($loaitin);
$totalRows_loaitin = mysql_num_rows($loaitin);
$nested_sw = false;
if (isset($row_loaitin) && is_array($row_loaitin)) {
do { //Nested repeat
?>
k Qua cửa sổ sothink:
- Nhắp menu TenLoaiTin bên cột trái rồi nhắp Condition ở cột phải
- Paste vào vùng Prefix
l Qua trang laplongnhau_sothink.php
- Ở chế độ Design , nhắp chọn nhãn Nested Repeat rồi qua code
- Copy phần sau (kết thúc lặp loại tin) hoặc dòng dưới đây
<?php
} while ($row_loaitin = mysql_fetch_assoc($loaitin)); //Nested move next
}
}
?>
m Qua cửa sổ sothink:
- Nhắp menu TenLoaiTin bên cột trái rồi nhắp Condition ở cột phải
- Paste vào vùng Suffix
n Qua trang laplongnhau_sothink.php
- Ở chế độ Design, nhắp chọn field Ten rồi qua code
- Copy vùng đang được chọn , hoặc dòng dưới đây
Trang 14p Trong cửa sổ sothink, nhắp nút Publish rồi chọn View/Copy Code… Sẽ hiện cửa sổ như sau:
q Nhắp nút Copy All phía trên rồi qua trang laplongnhau_sothink.php, Paste trong tag head
r Chuyển qua cửa sổ sothink, nhắp nút Copy All phía dưới
s Chuyển qua trang laplongnhau_sothink.php
- Xóa vùng Repeat, Nested Repeat
- Xóa các field TenTL, Ten, các tag p
t Trong đoạn code mới Paste ra, xóa 2 dấu \ bao quanh field TenTL và field Ten
Trang 15
u Chuyển qua cửa sổ sothink
- Mục Resource folder: chọn folder chứa site của bạn
- Check mục Copy the resource files (xem hình trên)
v Qua trang laplongnhau_sothink.php , F12