Hàm Connect: (Libararries/connect - PHP) : $server 'Localhost' $DB 'mvc8' $user 'Root' $PW 'Usbw' $conn $result
Hàm Connect: (Libararries/connect - PHP) : $server 'Localhost' $DB 'mvc8' $user 'Root' $PW 'Usbw' $conn $result
php)
<?php class connect { Private $server = 'localhost'; Private $db = 'mvc8'; Private $user = 'root'; Private $pw = 'usbw'; Public $conn; Public $result; //============================================ //goi ham tao ket noi database Function __construct () { $this->connect_db (); } //============================================ //goi ham huy database Function __destruct () { $this->deconnect_db (); } //============================================== //ham ket noi database function connect_db() { //tao bien connect $this->conn = mysql_pconnect($this->server,$this->user,$this>pw) or die ('no connect');//ket noi database if($this->conn) mysql_select_db($this->db);//chon database ket noi } //============================================= //ham dong ket noi function deconnect_db() { if($this->conn) { mysql_close($this->conn); } } //============================================== //thuc thi 1 cau lenh truy van function query_db($sql) { $this->result = mysql_query($sql,$this->conn); /*if(!$this->result){ die (mysql_error($this->conn)); //Bat loi tu mysql trigger }*/ } //============================================= function totalRow() { return mysql_num_rows($this->result); }
//============================================== //lay mot hang du lieu trong bang function fetchOne() { return mysql_fetch_assoc($this->result); } //============================================== //lay tat cac dong du lieu trong bang function fetchAll() { while ($row = $this->fetchOne()) { $data[] = $row; //neu hang ton tai thi bo vao data tao thanh mang 2 chieu } return $data; } } ?
2. Bng khng c kha ngoi -Vd: bng loi hng a) Models :(models\models_loaihang.php)
<?php class models_loaihang extends connect { function listloaihang() { $sql = 'SELECT * FROM loaihang'; //tao lenh truy van $this->query_db($sql); //Thuc thi cau lenh sql return $this->fetchAll();//tra ve tat cac dong trong bang } function _addloahang($TenLH) { $sql = "INSERT INTO loaihang VALUES('','$TenLH')"; $this->query_db($sql); } function del_loaihang($intMa) { $sql = "DELETE FROM loaihang WHERE MaLH = $intMa"; $this->query_db($sql); } function getLoaiHang($intMa) { $sql = "SELECT * FROM loaihang WHERE MaLH = $intMa"; $this->query_db($sql); return $this->fetchOne(); } function updateLoaiHang($tenLH, $intMa) { $sql =" UPDATE loaihang SET TenLH = '$tenLH' WHERE MaLH = '$intMa'"; $this->query_db($sql);
} } ?>
+ edit:(views\admin\loaihang\edit.php)
<?php //var_dump($data);?> <form name = "frm_updateloaihang" method = "post" action = ""> <table width = "580" cellpadding = "2" cellspacing = "2" border = "0" align = "center" bgcolor = "#D4D0C8"> <tr class = "list"> <th colspan = "2"> CAP NHAT LOAI HANG </th> </tr> <tr> <td width = "200" valign = "top"> <div align = "center"> Ten Loai Hang </div> </td> <td width = "200" valign = "top"> <input name = "tenlh" type = "text" value = "<?php echo $data['TenLH'];?>"/> </td> </tr> <tr> <td width = "400" valign = "top" align = "center" colspan = "2"> <div> <input name = "btok" type = "submit" value = "Cap Nhat"/> </div> </td> </tr> </table> </form>
+ index:(views\admin\loaihang\index.php)
<?php if($data) { echo '<table width = "795" cellpadding = "2" cellspacing = "2" border = "0" align = "center" bgcolor = "#D4D0C8">'; echo '<tr> <th colspan = "3"> DANH SACH LOAI HANG </th> </tr>';
echo '<tr class = "list"> <td width = "200" valign = "top"> <div align = "center"> <b> Ten Loai Hang </b> </div> </td> <td width = "80" valign = "top"> <div align = "center"> <img src="public/images/b_edit.png"/> Sua </div> </td> <td width = "80" valign = "top"> <div align = "center"> <img src="public/images/b_drop.png"/> Xoa </div> </td> </tr>'; foreach ($data['list'] as $key => $value) { echo '<tr> <td width = "500" valign = "top"> <div align = "center">'.$value['TenLH'].' </div> </td> <td width = "100" valign = "top"> <div align = "center"> <a href = "admin.php?mod=updateloaihang&ma='.$value['MaLH'].'"> Sua </a></div> </td> <td width = "100" valign = "top"> <div align = "center"> <a href = "admin.php?mod=delloaihang&ma='.$value['MaLH'].'"> Xoa </a> </div> </td> </tr>'; } echo '</table>'; } ?>
C) controller :(controllers\admin\controllers_loaihang.php)
<?php require_once 'models/models_loaihang.php'; $mod = $_GET['mod']; $oblh = new models_loaihang(); switch ($mod) { case 'loaihang':{ $data['list'] = $oblh->listloaihang(); require 'views/admin/loaihang/index.php'; break; } case 'addloaihang':{ if($_POST) { $oblh->_addloahang($_POST['tenlh']); echo '<script> window.location.href="admin.php?mod=loaihang"</script>'; } require 'views/admin/loaihang/add.php'; break; } case 'delloaihang':{ $oblh->del_loaihang($_GET['ma']); echo '<script> window.location.href="admin.php?mod=loaihang"</script>'; break; } case 'updateloaihang':{ if($_POST){ $oblh->updateLoaiHang($_POST['tenlh'], $_GET['ma']);
echo '<script>window.location.href="admin.php?mod=loaihang"</script>'; } $data = $oblh->getLoaiHang($_GET['ma']); require 'views/admin/loaihang/edit.php'; break; } default: echo 'Khong tim thay yeu cau !'; break ; } ?>
} ?>
+Edit: :(views\admin\hoadon\edit.php)
<form name = "frm_updatehoadon" method = "post" action = ""> <table width = "580" cellpadding = "2" cellspacing = "2" border = "0" align = "center" bgcolor = "#D4D0C8"> <tr> <th colspan = "2" bgcolor = "red"> Cap Nhat Hoa Don </th> </tr> <tr> <td width = "200" valign = "top"> <div align = "center"> Ma Khach hang </div> </td>
<td width = "200" valign = "top"> <select name = "cmb_choice" size = "1"> <?php if(is_array($data['listkh'])){ foreach ($data['listkh'] as $item){ ?> <option value = "<?php echo $item['MaKH'];?>" <?php if($data['MaKH'] == $item['MaKH']){ echo "selected"; } ?>> <?php echo $item['TenKH'];?> </option> <?php } } ?> </select> </td> </tr> <tr> <td width = "200" valign = "top"> <div align = "center"> Nguoi Lap </div> </td> <td width = "200" valign = "top"> <input name = "nguoilap" type = "text" value = "<?php echo $data['NguoiLap'];?>"/> </td> </tr> <tr> <td width = "400" valign = "top" colspan = "2"> <div> <input name = "btok" type = "submit" value = "Cap Nhat"/> </div> </td> </tr> </table> </form>
+ Index:(views\admin\hoadon\index.php)
<?php if($data){ ?> <table width = "795" cellpadding = "2" cellspacing = "2" border = "0" align = "center" bgcolor = "#D4D0C8"> <tr> <th colspan = "7"> Danh Sach Hoa Don </th></tr> <tr class = "list"> <td width = "200" valign = "top"> <div align = "center"> <b>Khach Hang</b> </div> </td> <td width = "200" valign = "top"> <div align = "center"> <b> Ngay Lap </b> </div> </td> <td width = "200" valign = "top"> <div align = "center"> <b> Nguoi Lap</b> </div> </td> <td width = "80" valign = "top"> <div align = "center"> <img src="public/images/b_edit.png"/> Sua</div> </td> <td width = "80" valign = "top"> <div align = "center"> <img src="public/images/b_drop.png"/> Xoa </div> </td> </tr> <tr> <?php foreach ($data['list'] as $key => $value) { ?>
<td width = "200" valign = "top"> <div align = "center"> <?php if(is_array($data['listkh'])){ foreach ($data['listkh'] as $item){ if($item['MaKH']==$value['MaKH']){ echo $item['TenKH']; } } } ?> </div> </td>
<td width = "200" valign = "top"> <div "center"><?php echo $value['NgayLap'];?> </div> </td> <td width = "200" valign = "top"> <div "center"><?php echo $value['NguoiLap'];?> </div> </td> <td width = "200" valign = "top"> <div "center"> <a href = "admin.php?mod=updatehoadon&ma=<?php echo $value['MaHD'];?>"> Sua </a></div> </td> <td width = "200" valign = "top"> <div "center"> <a href = "admin.php?mod=delhoadon&ma=<?php echo $value['MaHD'];?>"> Xoa </a> </div> </td> </tr> <?php } ?> </table> <?php } ?>
C) Controller :(controllers\admin\controllers_hoadon.php)
<?php require_once 'models/models_hoadon.php'; $mod = $_GET['mod']; $obhd = new models_hoadon(); require_once 'models/models_khachhang.php'; //goi trang model khach hang $obkh = new models_khachhang(); //khoi tao doi tuong khach hang switch ($mod) { case 'hoadon': { $obhd = new models_hoadon(); $data['list'] = $obhd->listhoadon(); $data['listkh'] = $obkh->listkhachhang(); require 'views/admin/hoadon/index.php'; break; } case 'addhoadon': { if ($_POST) { if (isset($_FILES)) $obhd->addhoadon($_POST['cmb_choice'], $_POST['NgayLap'], $_POST['NguoiLap']); echo '<script> window.location.href="admin.php?mod=hoadon"</script>'; }
$data['list'] = $obkh->listkhachhang(); //lay danh sach khach hang require 'views/admin/hoadon/add.php'; break; } case 'delhoadon': { $obhd->delhoadon($_GET['ma']); echo '<script> window.location.href="admin.php?mod=hoadon"</script>'; break; } case 'updatehoadon': { if ($_POST) { $obhd->updatehoadon($_POST['cmb_choice'], $_POST['ngaylap'], $_POST['nguoilap'], $_GET['ma']); echo '<script>window.location.href="admin.php?mod=hoadon"</script>'; } $data = $obhd->gethoadon($_GET['ma']); $data['listkh'] = $obkh->listkhachhang(); require 'views/admin/hoadon/edit.php'; break; } default: echo 'yeu cau chua duoc xu ly !'; break; } ?>
FROM chitiethoadon WHERE MaCT = '$intMa'"; $this->query_db($sql); } function getchitiethoadon($intMa) { $sql = "SELECT MaCT,MaHD,MaMH, DonGiaBan, SoLuongBan,ThanhTienBan FROM chitiethoadon WHERE MaCT = '$intMa'"; $this->query_db($sql); return $this->fetchOne(); } function updatechitiethoadon($MaMH,$MaHD,$intMa, $SoLuongBan,$DonGiaBan) { $sql = "UPDATE chitiethoadon SET MaMH = '$MaMH',MaHD = '$MaHD', SoLuongBan = '$SoLuongBan',DonGiaBan = '$DonGiaBan' WHERE MaCT = '$intMa'"; $this->query_db($sql); } } ?>
b)View: + add:(views\admin\chitiethoadon\add.php)
<script type="text/javascript" src="public/ckeditor/ckeditor.js"></script> <form name = "frm_addchitiethoadon" method = "post" action = "" enctype="multipart/form-data" > <table width = "100%" cellpadding = "2" cellspacing = "2" border = "0" align = "center" bgcolor = "#D4D0C8"> <tr> <th colspan = "7" bgcolor = "red"> Them Chi Tiet Hoa Don </th> </tr> <tr> <td valign = "top" align = "right" width="80"> Mat Hang</td> <td valign = "top"> <select name = "cmb1_choice"> <option value = "-1"> ---Chon---</option> <?php if (is_array($data['listlh'])) { foreach ($data['listlh'] as $item) { ?> <option value = "<?php echo $item['MaMH']; ?>"> <?php echo $item['TenMH']; ?></option> <?php } } ?> </select> </td> </tr> <tr> <td valign = "top" align = "right" width="80">Hoa Don</td>
<td valign = "top"> <select name = "cmb2_choice"> <option value = "-1"> ---Chon---</option> <?php if (is_array($data['list'])) { foreach ($data['list'] as $item) { ?> <option value = "<?php echo $item['MaHD']; ?>"> <?php echo $item['MaHD']; ?></option> <?php } } ?> </select> </td> </tr> <tr> <td valign = "top" align = "right">So Luong Ban</td> <td valign = "top"> <input name = "SoLuongBan" type = "text" value = ""/> </td> </tr> <tr> <td valign = "top" align = "right">Don Gia Ban</td> <td valign = "top"> <input name = "DonGiaBan" type = "text" value = ""/> </td> </tr> <tr> <td valign = "top" colspan = "2"> <input name = "bt_ok" type = "submit" value = "Them"/> <input name = "bt_reset" type = "reset" value = "Lam Lai"/> </td> </tr> </table> </form>
+edit::(views\admin\chitiethoadon\edit.php)
<form name = "frm_updatechitiethoadon" method = "post" action = ""> <table width = "580" cellpadding = "2" cellspacing = "2" border = "0" align = "center" bgcolor = "#D4D0C8"> <tr> <th colspan = "2" bgcolor = "red"> Cap Nhat Chi Tiet Hoa Don </th> </tr> <tr> <td width = "200" valign = "top"> <div align = "center"> Ma Hoa Don </div> </td> <td width = "200" valign = "top"> <select name = "cmb1_choice" size = "1"> <?php if(is_array($data['listhdd'])){ foreach ($data['listhdd'] as $item){ ?> <option value = "<?php echo $item['MaHD'];?>" <?php if($data['MaHD'] == $item['MaHD']){ echo "selected"; } ?>> <?php echo $item['MaHD'];?> </option>
<?php } } ?> </select> </td> </tr> <tr> <td width = "200" valign = "top"> <div align = "center"> Mat Hang </div> </td> <td width = "200" valign = "top"> <select name = "cmb2_choice" size = "1"> <?php if(is_array($data['listlh'])){ foreach ($data['listlh'] as $item){ ?> <option value = "<?php echo $item['MaMH'];?>" <?php if($data['MaMH'] == $item['MaMH']){ echo "selected"; } ?>> <?php echo $item['TenMH'];?> </option> <?php } } ?> </select> </td> </tr> <tr> <td width = "200" valign = "top"> <div align = "center"> So Luong ban </div> </td> <td width = "200" valign = "top"> <input name = "soluongban" type = "text" value = "<?php echo $data['SoLuongBan'];?>"/> </td> </tr> <tr> <td width = "200" valign = "top"> <div align = "center"> Don Gia Ban</div> </td> <td width = "200" valign = "top"> <input name = "dongiaban" type = "text" value = "<?php echo $data['DonGiaBan'];?>"/> </td> </tr> <tr> <td width = "200" valign = "top" align = "center" colspan = "2"> <div> <input name = "btok" type = "submit" value = "Cap Nhat"/> </div> </td> </tr> </table> </form>
+ Index::(views\admin\chitiethoadon\index.php)
<?php if($data){ ?>
<table width = "795" cellpadding = "2" cellspacing = "2" border = "0" align = "center" bgcolor = "#D4D0C8"> <tr> <th colspan = "7"> Danh Sach Chi Tiet Hoa Don </th></tr> <tr class = "list"> <td width = "200" valign = "top"> <div align = "center"> <b>Ma Hoa Don</b> </div> </td> <td width = "200" valign = "top"> <div align = "center"> <b> Mat Hang </b> </div> </td> <td width = "200" valign = "top"> <div align = "center"> <b>So Luong Ban</b> </div> </td> <td width = "200" valign = "top"> <div align = "center"> <b> Don Gia Ban</b> </div> </td> <td width = "200" valign = "top"> <div align = "center"> <b> Thanh Tien Ban</b> </div> </td> <td width = "80" valign = "top"> <div align = "center"> <img src="public/images/b_edit.png"/> Sua</div> </td> <td width = "80" valign = "top"> <div align = "center"> <img src="public/images/b_drop.png"/> Xoa </div> </td> </tr> <tr> <?php foreach ($data['list'] as $key => $value) { ?> <td width = "200" valign = "top"> <div align = "center"> <?php if(is_array($data['listhdd'])){ foreach ($data['listhdd'] as $item){ if($item['MaHD']==$value['MaHD']){ echo $item['MaHD']; } } } ?> </div> </td> <td width = "200" valign = "top"> <div align = "center"> <?php if(is_array($data['listlh'])){ foreach ($data['listlh'] as $item){ if($item['MaMH']==$value['MaMH']){ echo $item['TenMH']; } } } ?> </div> </td> <td width = "200" valign = "top"> <div align "center"><?php echo $value['SoLuongBan'];?> </div> </td> <td width = "200" valign = "top"> <div align "center"><?php echo $value['DonGiaBan'];?> </div> </td> <td width = "200" valign = "top"> <div align "center"><?php echo $value['ThanhTienBan'];?> </div> </td> <td width = "200" valign = "top"> <div align "center"> <a href = "admin.php?mod=updatechitiethoadon&ma=<?php echo $value['MaCT'];?>"> Sua</a></div> </td> <td width = "200" valign = "top"> <div align "center"> <a href = "admin.php?mod=delchitiethoadon&ma=<?php echo $value['MaCT'];?>"> Xoa</a> </div> </td> </tr> <?php = = = = =
C ) Controller (controllers\admin\controllers_chitiethoadon.php)
<?php require_once 'models/models_chitethoadon.php'; $mod = $_GET['mod']; $obhd = new models_chitiethoadon(); require_once 'models/models_mathang.php'; //goi trang model loai hang $oblh = new models_mathang(); //khoi tao doi tuong loai hang require_once 'models/models_hoadon.php'; $obhdd = new models_hoadon(); switch ($mod) { case 'chitiethoadon': { $obhd = new models_chitiethoadon(); $data['list'] = $obhd->listchitiethoadon(); $data['listlh'] = $oblh->listMatHang(); $data['listhdd'] = $obhdd->listhoadon(); require 'views/admin/chitiethoadon/index.php'; break; } case 'addchitiethoadon': { if ($_POST) { if (isset($_FILES)) $obhd>addchitiethoadon($_POST['cmb1_choice'],$_POST['cmb2_choice'],$_POST['SoLuo ngBan'],$_POST['DonGiaBan']); echo '<script> window.location.href="admin.php?mod=chitiethoadon"</script>'; } $data['list'] = $obhdd->listhoadon(); $data['listlh'] = $oblh->listMatHang(); //lay danh sach mat hang require 'views/admin/chitiethoadon/add.php'; break; } case 'delchitiethoadon': { $obhd->delchitiethoadon($_GET['ma']); echo '<script> window.location.href="admin.php?mod=chitiethoadon"</script>'; break; } case 'updatechitiethoadon': { if ($_POST) { $obhd>updatechitiethoadon($_POST['cmb2_choice'],$_POST['cmb1_choice'],$_GET['ma' ],$_POST['soluongban'], $_POST['dongiaban'] , $_POST['thanhtienban'] ); echo '<script>window.location.href="admin.php?mod=chitiethoadon"</script>'; } $data = $obhd->getchitiethoadon($_GET['ma']);
$data['listlh'] = $oblh->listMatHang(); $data['listhdd'] = $obhdd->listhoadon(); require 'views/admin/chitiethoadon/edit.php'; break; } default: echo 'yeu cau chua duoc xu ly !'; break; } ?>
<link href="public/css/style.css" rel = "stylesheet" type = "text/css"/> </head> <body> <!-- Code By Nguyen Quoc Thang--> <!-- Mail: [email protected] --> <!-- Begin container --> <div id="container"> <!-- Begin header --> <div id="header" style="background:url(public/images/banner.jpg)"> <div style = "color:blue; font-size: 36px;" align="right"> Demo MVC Ban Hang</div> </div> <!-- The end header --> <!-- Begin main --> <div id="main"> <!-- Begin menu --> <div id="menu"> <div class = "danhmuc" align = "center">DANH MUC</div> <?php include 'views/admin/menu.php';?> </div> <!-- The end menu --> <div id="content"> <?php switch ($_GET['mod']) { //tac vu loai hang case 'loaihang': case 'addloaihang': case 'delloaihang': case 'updateloaihang':{ require_once 'controllers/admin/controllers_loaihang.php'; break; } //Tac vu mat hang case 'mathang': case 'addmathang': case 'delmathang': case 'updatemathang':{ require_once 'controllers/admin/controllers_mathang.php'; break; } // Tac vu khach hang case 'khachhang': case 'addkhachhang': case 'delkhachhang': case 'updatekhachhang':{ require_once 'controllers/admin/controllers_khachhang.php'; break; } // Tac vu hang case 'hang': case 'addhang': case 'delhang': case 'updatehang':{ require_once 'controllers/admin/controllers_hang.php'; break; }
// Tac vu User case 'user': case 'adduser': case 'deluser': case 'updateuser':{ require_once 'controllers/admin/controllers_user.php'; break; } // Tac vu TinTuc case 'tintuc': case 'addtintuc': case 'deltintuc': case 'updatetintuc':{ require_once 'controllers/admin/controllers_tintuc.php'; break; } // Tac vu Hoa Don case 'hoadon': case 'addhoadon': case 'delhoadon': case 'updatehoadon':{ require_once 'controllers/admin/controllers_hoadon.php'; break; } // Tac vu Chi Tiet Hoa Don case 'chitiethoadon': case 'addchitiethoadon': case 'delchitiethoadon': case 'updatechitiethoadon':{ require_once 'controllers/admin/controllers_chitiethoadon.php'; break; } // Tac vu Chi Tiet Nhap case 'chitietnhap': case 'addchitietnhap': case 'delchitietnhap': case 'updatechitietnhap':{ require_once 'controllers/admin/controllers_chitietnhap.php'; break; } // Tac vu Chi Dang tin case 'dangtin': case 'adddangtin': case 'deldangtin': case 'updatedangtin':{ require_once 'controllers/admin/controllers_dangtin.php'; break; } default:{echo 'Tac vu dang cap nhat'; break;} } ?> </div> </div> <!-- The end main --> <div id="footer" style="background:url(public/images/footer.jpg)"> <div align = "center"><p style="color:Blue; font-sixe: 14px;">© Copyright By Nguyen Quoc Thang - 10A1010003 </p> </div>
</div> </div> <!-- Begin container --> </body> </html> <?php } else { if(!isset($_SESSION['login'])){ require_once 'controllers/admin/controllers_login.php'; } else { echo 'Da login'; } } ?>
<?php require_once 'libararries/connect.php'; ?> <html> <head> <title> Ban hang </title> <link href="public/css/style1.css" rel = "stylesheet" type = "text/css"/> </head> <body> <div id="container"> <!-- begin header --> <div id="main"> <p align = "center" > <b> QUAN LY BAN HANG </b></p> <p> <a href = "index.php?mod=hang">Danh Sach Hang</a></p> <p> <a href = "index.php?mod=mathang">Danh Sach Mat Hang</a></p> <p> <a href = "index.php?mod=loaihang">Danh Sach Loai Hang</a></p> <p> <a href = "index.php?mod=khachang">Danh Sach khach Hang</a></p> <p> <a href = "index.php?mod=hoadon">Danh Sach Hoa Don</a></p> <p> <a href = "index.php?mod=chitiethoadon">Danh Sach Chi Tiet Hoa Don</a></p> <p> <a href = "index.php?mod=chitietnhap">Danh Sach Chi Tiet Nhap</a></p> <p> <a href = "index.php?mod=tintuc">Danh Sach Tin Tuc</a></p> <p> <a href = "index.php?mod=dangtin">Danh Sach Dang Tin</a></p> </div> <!-- the end header --> <!-- begin main--> <div id="main"> <?php if(isset($_GET['mod']) && $_GET['mod'] == 'mathang') {
require_once 'controllers/main/controllers_mathang.php'; } if(isset($_GET['mod']) && $_GET['mod'] == 'hang') { require_once 'controllers/main/controllers_hang.php'; } if(isset($_GET['mod']) && $_GET['mod'] == 'loaihang') { require_once 'controllers/main/controllers_loaihang.php'; } if(isset($_GET['mod']) && $_GET['mod'] == 'khachhang') { require_once 'controllers/main/controllers_khachhang.php'; echo 'Tac vu dang cap nhat'; } //require_once 'controllers/main/controllers_mathang.php'; ?> </div> <!-- the end main --> <!-- begin footer --> <div id="footer"> </div> <!-- the end footer --> </div> </body> </html>
VD: - models: class model_hanghoa extend connection() { } -Controllers: $a=new model_hanghoa(); Gii thch: khi ta new 1 i tng trong controllers: th model_ hanghoa c tha k t class connection khi o th hm connect s c to ra ly d liu ln controllers.
I. Gii thiu:
- MVC parttern chia ng dng ca bn lm 3 phn: + Model: chu trch nhim qun l d liu, mi tc v tng tc vi c s d liu ca bn u nm y. + View: chu trch nhim hin th d liu c cung cp bi model. + Controller: iu khin view v model lm vic vi nhau. Controller nhn request t client, gi model thc thi tng ng, v gi tr d liu li cho client bng view, view nh dng d liu hin th cho ngi dng. II. M hnh x l ca MVC framework: Gii thch quy trnh: Ngi dng (client) dng web browser, gi request n Server, mi request gi n Server u c iu hng n file index.php. Ti index.php chng ta thc thi Controller, Controller c nhim v bt request, phn tch request gi Model x l v d liu ra View tng ng. Sau hin th kt qu View ra trnh duyt cho ngi dng.
Cc M Hnh CSDL Client/server Nhn chung mi ng dng c s d liu u bao gm cc phn: - Thnh phn x l ng dng (Application processing components) - Thnh phn phn mm c s d liu (Database software componets) - Bn thn c s d liu (The database itself) Cc m hnh v x l c s d liu khc nhau l bi cc trng hp ca 3 loi thnh phn ni trn nh v u. Bi vit ny ny xin gii thiu 5 m hnh kin trc da trn cu hnh phn tn v truy nhp d liu ca h thng my tnh Client/Server.
- M hnh c s d liu tp trung (Centralized database model) - M hnh c s d liu theo kiu file - server (File - server database model) - M hnh x l tng phn c s d liu (Database extract processing model) - M hnh c s d liu Client/Server (Client/Server database model) - M hnh c s d liu phn tn (Distributed database model)
1. M hnh c s d liu tp trung (Centralized database model) Trong m hnh ny, cc thnh phn x l ng dng, phn mm c s d liu v bn thn c s d liu u trn mt b x l.
V d ngi dng my tnh c nhn c th chy cc chng trnh ng dng c s dng phn mm c s d liu Oracle truy nhp ti c s d liu nm trn a cng ca my tnh c nhn . T khi cc thnh phn ng dng, phn mm c s d liu v bn thn c s d liu cng nm trn mt my tnh th ng dng thch hp vi m hnh tp trung. Hu ht cng vic x l lung thng tin chnh c thc hin bi nhiu t chc m vn ph hp vi m hnh tp trung. V d mt b x l mainframe chy phn mm c s d liu IMS hoc DB2 ca IBM c th cung cp cho cc trm lm vic cc v tr phn tn s truy nhp nhanh chng ti c s d liu trung tm. Tuy nhin trong rt nhiu h thng nh vy, c 3 thnh phn ca ng dng c s d liu u thc hin trn cng mt my mainframe do vy cu hnh ny cng thch hp vi m hnh tp trung. 2. M hnh c s d liu theo kiu file - server (File - server database model) Trong m hnh c s d liu theo kiu file - server cc thnh phn ng dng v phn mm c s d liu trn mt h thng my tnh v cc file vt l to nn c s d liu nm trn h thng my tnh khc. Mt cu hnh nh vy thng c dng trong mi trng cc b, trong mt hoc nhiu h thng my tnh ng vai tr ca server, lu tr cc file d liu cho h thng my tnh khc thm nhp ti. Trong mi trng file - server, phn mm mng c thi hnh v lm cho cc phn mm ng dng cng nh phn mm c s d liu chy trn h thng ca ngi dng cui coi cc file hoc c s d liu trn file server thc s nh l trn my tnh ca ngi chnh h. M hnh file server rt ging vi m hnh tp trung. Cc file c s d liu nm trn my khc vi cc thnh phn ng dng v phn mm c s d liu; tuy nhin cc thnh phn ng dng v phn mm c s d liu c th c cng thit k vn hnh mt mi trng tp trung. Thc cht phn mm mng lm cho phn mm ng dng v phn mm c s d liu tng rng chng ang truy nhp c s d liu trong mi trng cc b. Mt mi trng nh vy c th phc tp hn m hnh tp trung bi v phn mm mng c th phi thc hin c ch ng thi cho php nhiu ngi dng cui c th truy nhp vo cng c s d liu. 3. M hnh x l tng phn c s d liu (Database extract processing model) Mt m hnh khc trong mt c s d liu xa c th c truy nhp bi phn mm c s d liu, c gi l x l d liu tng phn Vi m hnh ny, ngi s dng c th ti mt my tnh c nhn kt ni vi h thng my tnh xa ni c d liu mong mun. Ngi s dng sau c th tc ng trc tip n phn mm chy trn my xa v to yu cu ly d liu t c s d liu . Ngi s dng cng c th chuyn d liu t my tnh xa v chnh my tnh ca mnh v vo a cng v c th thc hin vic sao chp bng phn mm c s d liu trn my c nhn. Vi cch tip cn ny, ngi s dng phi bit chc chn l d liu nm u v lm nh th no truy nhp v ly d liu t mt my tnh xa. Phn mm ng dng i km cn phi c trn c hai h thng my tnh kim sot s truy nhp d liu v chuyn d liu gia hai h thng. Tuy nhin, phn mm c s d liu chy trn hai my khng cn bit rng vic x l c s d liu t xa ang din ra v ngi s dng tc ng ti chng mt cch c lp.
4. M hnh c s d liu Client/Server (Client/Server database model) Trong m hnh c s d liu Client/Server, c s d liu nm trn mt my khc vi cc my c thnh phn x l ng dng. Nhng phn mm c s d liu c tch ra gia h thng Client chy cc chng trnh ng dng v h thng Server lu tr c s d liu. Trong m hnh ny, cc thnh phn x l ng dng trn h thng Client a ra yu cu cho phn mm c s d liu trn my client, phn mm ny s kt ni vi phn mm c s d liu chy trn Server. Phn mm c s d liu trn Server s truy nhp vo c s d liu v gi tr kt qu cho my Client. Mi nhn, m hnh c s d liu Client/Server c v ging nh m hnh file - server, tuy nhin m hnh Client/Server c rt nhiu thun li hn m hnh file - server. Vi m hnh file - server, thng tin gn vi s truy nhp c s d liu vt l phi chy trn ton mng. Mt giao tc yu cu nhiu s truy nhp d liu c th gy ra tc nghn lu lng truyn trn mng. Gi s mt ngi dng cui to ra mt vn tin ly d liu tng s, yu cu i hi ly d liu t 1000 bn ghi, vi cch tip cn file - server ni dung ca tt c 1000 bn ghi phi a ln mng, v phn mm c s d liu chy trn my ca ngi s dng phi truy nhp tng bn ghi tho mn yu cu ca ngi s dng. Vi cch tip cn c s d liu Client/Server, ch c li vn tin khi ng ban u v kt qu cui cng cn a ln mng, phn mm c s d liu chy trn my lu gi c s d liu s truy nhp cc bn ghi cn thit, x l chng v gi cc th tc cn thit a ra kt qu cui cng. Front-end software Trong m hnh c s d liu Client/Server, thng ni n cc phn mm front-end software v back-end software. Front-end software c chy trn mt my tnh c nhn hoc mt workstation v p ng cc yu cu n l ring bit, phn mm ny ng vai tr ca Client trong ng dng c s d liu Client/Server v thc hin cc chc nng hng ti nhu cu ca ngi dng cui cng, phn mm Front-end software thng c chia thnh cc loi sau: - End user database software: Phn mm c s d liu ny c th c thc hin bi ngi s dng cui trn chnh h thng ca h truy nhp cc c s d liu cc b nh cng nh kt ni vi cc c s d liu ln hn trn c s d liu Server. - Simple query and reporting software: Phn mm ny c thit k cung cp cc cng c d dng hn trong vic ly d liu t c s d liu v to cc bo co n gin t d liu c. - Data analysis software: Phn mm ny cung cp cc hm v tm kim, khi phc, chng c th cung cp cc phn tch phc tp cho ngi dng. - Application development tools: Cc cng c ny cung cp cc kh nng v ngn ng m cc nhn vin h thng thng tin chuyn nghip s dng xy dng cc ng dng c s d liu ca h. Cc cng c y bao gm cc cng c v thng dch, bin dch n n cc cng c CASE (Computer Aided Software Engineering), chng t ng tt c cc bc trong qu trnh pht trin ng dng v sinh ra chng trnh cho cc ng dng c s d liu. - Database administration Tools: Cc cng c ny cho php ngi qun tr c s d liu s dng my tnh c nhn hoc trm lm vic thc hin vic qun tr c s d liu nh nh ngha cc c s d liu, thc hin lu tr hay phc hi.
Back-end software Phn mm ny bao gm phn mm c s d liu Client/Server v phn mm mng chy trn my ng vai tr l Server c s d liu. 5. Distributed database model (M hnh c s d liu phn tn) C hai m hnh File - Server v Client/Server u gi nh l d liu nm trn mt b x l v chng trnh ng dng truy nhp d liu nm trn mt b x l khc, cn m hnh c s d liu phn tn li gi nh bn thn c s d liu c trn nhiu my khc nhau.