thực hành cơ sở dữ liệu với php filethực hành php căn bản can tho university...
TRANSCRIPT
Thực hành
PHP MySql
Thực hành cơ sở dữ liệu với PHP
Bài tập 3.1: Xây dựng trang hiển thị danh sách các loại sản phẩm
Giao diện
Hình 3.1: Giao diện hiển thị danh sách các loại sản phẩm
Xử lý
<?php
include 'database.php';
$query = "select lsp_id, lsp_ten, lsp_mota from loaisanpham ";
$result = mysql_query($query);
function dsLoaiSap()
{
global $result;
$stt=1;
while (list($id, $ten, $mota) = mysql_fetch_array($result)) {
echo "<tr>
<td>$stt</td>
<td>" . $ten . "</td>
<td>" . $mota . "</td>
</tr>";
$stt++;
}
}
Thực hành
PHP căn bản
Can Tho University software center 2
?>
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Danh sách sản phẩm</title>
<table width="100%" border="0" cellpadding="5" cellspacing="0"
class="TableContainer">
<tr>
<td class="Header">Quản lý loại sản phẩm
</td>
</tr>
<tr>
<td>
<form id="form1" name="form1" method="post" action="">
<table width="100%" border="0" cellspacing="0"
cellpadding="5" class="TableData">
<tr>
<td colspan="3" class="themmoi"><a
href="loaisanpham.php">Thêm mới</a> </td>
</tr>
<tr>
<th>Số thứ tự</th>
<th>Loại sản phẩm </th>
<th>Mô tả</th>
</tr>
<?php
dsLoaiSap();
?>
</table>
</form>
</td>
</tr>
</table>
Đây chỉ đơn giản là mô tả lại cho chức năng lấy dữ liệu và hiển thị hàng
loạt. Chúng ta sẽ xây dựng trang hoàn chỉnh ở phần tiếp theo, sau khi đa
học đủ kiến thức.
Thực hành
PHP căn bản
Can Tho University software center 3
Bài tập 3.2: Xây dựng trang thêm loại sản phẩm. Chức năng này được gọi từ liên kết
thêm mới trên giao diện trang danh sách các loại sản phẩm
Hình 3.2: Giao diện thêm loại sản phẩm
Sử dụng giao diện đã tạo ở phần 01. Ở đây bảng loại sản phẩm có cột id là
tự tăng nên không cần thêm vào câu lệnh insert
Mã nguồn PHP tham khảo
<?php
if(isset($_POST["txtTen"]))
{
$conn= mysql_connect("localhost","root","") or die(" khong the ket noi");
mysql_select_db("salomon");
// kiểm tra nếu chưa có tên sản phẩm mới thêm mới
$ten = $_POST["txtTen"];
$sql = "SELECT lsp_id,lsp_ten,lsp_mota FROM loaisanpham WHERE
lsp_ten='$ten'";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{
echo "<script>alert('Loại sản phẩm đã tồn tại !');</script>";
}
else
{
$mota = $_POST["txtMoTa"];
$sql = "INSERT INTO loaisanpham(lsp_ten, lsp_mota)
VALUES('$ten','$mota')";
mysql_query($sql);
echo "<script>alert('Loại sản phẩm đã được thêm !');</script>";
Thực hành
PHP căn bản
Can Tho University software center 4
}
}
?>
Trong ví dụ này chúng ta sử dụng kết hợp PHP và html trên 01 trang để
thực hiện thêm loại sản phẩm, có xét đến khả năng thêm được hay không
của thông tin mới.
Phần kiểm tra dữ liệu đầu vào như là: Kiểm tra rỗng, kiểm tra độ dài chuỗi
chúng ta đã thực hiện trong phần 01 chương trình lập trình web chuyên
nghiệp nên ở đây bỏ qua phần nay.
Bài tập 3.3: Xây dựng trang thêm
Nhà cung cấp
Hình thức thanh toán.
Khách hàng
Cách thức thực hiện tương tự như trang thêm loại sản phẩm bên trên.
Bài tập 3.4: Cập nhật loại sản phẩm
Hình 3.3: Cập nhật loại sản phẩm
Mã nguồn tham khảo
<?php
if(isset($_POST["txtid"]))
{
$id = $_POST["txtid"];
$ten = $_POST["txtTen"];
Thực hành
PHP căn bản
Can Tho University software center 5
$mota = $_POST["txtMoTa"];
$conn= mysql_connect("localhost","root","") or die(" khong the ket noi");
mysql_select_db("salomon");
$sql = "UPDATE loaisanpham SET lsp_ten='$ten', lsp_mota = '$mota' WHERE
lsp_id='$id'";
mysql_query($sql);
}
?>
Bài tập 3.5: Xây dựng trang
Cập nhật nhà cung cấp
Hình thức thanh toán.
Khách hàng
Cách thức thực hiện tương tự như trang thêm loại sản phẩm bên trên.
Bài tập 3.6: Hoàn chỉnh trang danh sách loại sản phẩm với giao diện như sau:
Hình 3.4: Danh sách lại sản phẩm đầy đủ chức năng
Trong bài thực hành này chúng ta bổ sung liên kết
Thêm mới: mở trang thêm loại sản phẩm mới (Bài tập trước)
Nút nhấn Xóa mục chọn: Xóa các phần tử được chọn trên danh sách
Thực hành
PHP căn bản
Can Tho University software center 6
Nút xóa có biểu tượng hình tròn đỏ trên mỗi dòng: cho phép xóa phần tử
của dòng được chọn.
Nút nhấn có biểu tượng bút: Chuyển id của loại sản phẩm trên cùng hàng
sang trang cập nhật(Bài tập tiếp theo).
Mã nguồn tham khảo
<?php
include_once '../database.php';
include_once '../lib.php';
if(isset($_GET["id"]))
{
$id = $_GET["id"];
$sql = "DELETE FROM loaisanpham WHERE lsp_id='$id'";
$result = mysql_query($sql);
}
if (isset($_POST['btnXoa'])) {
for ($i = 0; $i < count($_POST['checkbox']); $i++)
{
$sql = "DELETE FROM loaisanpham WHERE
lsp_id='".$_POST['checkbox'][$i]."'";
$result = mysql_query($sql);
}
}
$query = "select lsp_id, lsp_ten, lsp_mota from loaisanpham ";
$result = mysql_query($query);
function dsLoaiSap()
{
global $image_edit_path;
global $image_delete_path;
global $result;
$stt=1;
while (list($id, $ten, $mota) = mysql_fetch_array($result)) {
echo "<tr>
<td class=\"cotCheckBox\"><input name=\"checkbox[]\"
type=\"checkbox\" id=\"checkbox[]\" value=" . $id . "></td>
<td>$stt</td>
<td>" . $ten . "</td>
<td>" . $mota . "</td>
<td class=\"cotNutChucNang\"><a href=\"loaisanpham_capnhat.php?id=" .
$id . "\"><img src='../" . $image_edit_path . "'/></a></td>
Thực hành
PHP căn bản
Can Tho University software center 7
<td class=\"cotNutChucNang\"><a onclick='return confirm(\"Loại sản phẩm
bạn chọ sẽ bị xóa?\");' href=\"loaisanpham_danhsach.php?id=" . $id . "\"><img
src='../" . $image_delete_path . "'/></a></td>
</tr>";
$stt++;
}
}
?>
<link href="../style.css" rel="stylesheet" type="text/css" />
<title>Danh sách sản phẩm</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<table width="100%" border="0" cellpadding="5" cellspacing="0"
class="TableContainer">
<tr>
<td class="Header">Quản lý loại sản phẩm
</td>
</tr>
<tr>
<td>
<form id="form1" name="form1" method="post" action="">
<table width="100%" border="0" cellspacing="0" cellpadding="5"
class="TableData">
<tr>
<td colspan="6" class="themmoi"><a
href="loaisanpham.php">Thêm mới</a> </td>
</tr>
<tr>
<th>Chọn</th>
<th>Số thứ tự</th>
<th>Loại sản phẩm </th>
<th>Mô tả</th>
<th>Sủa</th>
<th>Xóa</th>
</tr>
<?php
dsLoaiSap();
?>
<tr>
<td colspan="6"><input type="submit" value="Xóa mục chọn"
name="btnXoa" id="btnXoa" onclick='return confirm("Loại sản phẩm bạn chọ sẽ bị
xóa?");' class="InputButton"/> </td>
Thực hành
PHP căn bản
Can Tho University software center 8
</tr>
</table>
</form>
</td>
</tr>
</table>
Bài tập 3.7: Hiệu chỉnh nội dung trang cập nhật thảo mãn các điều kiện sau
Trường chứa lsp_id là chỉ đọc (readonly) và giá trị nhận từ trang danh sách
đưa qua thông qua tham số URL.
Dựa vào lsp_id nhận được đọc thông tin về loại sản phẩm này và gán lên
giao diện trang web.
Khi nhấn nut Cập nhật thông tin được lưu lại và chuyển về trang danh sách
Giao diện vẫn như bài tập trước nhưng nội dung xử lý được hiệu chỉnh lại.
Hình 3.5: Chọn loại sản phẩm cập nhật
Chọn dòng có số thứ tự 4 giao diện trang cập nhật nhìn thấy như sau
Thực hành
PHP căn bản
Can Tho University software center 9
Hình 3.6: Giao diện cập nhật
Hiệu chỉnh nội dung mô tả thành “Máy tính bảng thương hiệu Trung Quốc”. Nhấn
Cập nhật
Hình 3.7: Kết quả cập nhật
Mã nguồn tham khảo trang cập nhật
…………………………………………………
<?php
include_once '../lib.php';
include_once '../database.php';
if(isset($_GET["do"]))
{
if($_GET["do"] == "edit")
{
$id = $_POST["txtid"];
Thực hành
PHP căn bản
Can Tho University software center 10
$ten = $_POST["txtTen"];
$mota = $_POST["txtMoTa"];
$sql = "UPDATE loaisanpham SET lsp_ten='$ten', lsp_mota = '$mota'
WHERE lsp_id=$id";
mysql_query($sql);
header("Location: loaisanpham_danhsach.php");
}
}
else
{
if(isset($_GET["id"]))
{
$id = $_GET["id"];
$sql = "SELECT lsp_id,lsp_ten,lsp_mota FROM loaisanpham WHERE
lsp_id=$id";
$result = mysql_query($sql);
$sanpham = mysql_fetch_assoc($result);
$ten = $sanpham["lsp_ten"];
$mota = $sanpham["lsp_mota"];
}
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<table width="100%" border="0" cellpadding="5" cellspacing="0"
class="TableContainer">
<tr>
<td class="Header">TẠO LOẠI SẢN PHẨM</td>
</tr>
<tr>
<td><form id="form1" name="form1" method="post"
action="loaisanpham_capnhat.php?do=edit">
<table width="100%" border="0" cellpadding="5" cellspacing="0"
class="TableForm">
<tr>
<td colspan="2" class="TieuDe">Nhập thông tin loại sản phẩm</td>
</tr>
<tr>
<td width="40%" class="Left">Mã loại sản phẩm: </td>
Thực hành
PHP căn bản
Can Tho University software center 11
<td><input name="txtid" type="text" id="txtid" value="<?php echo
$id;?>" maxlength="50" readonly="readonly"/>
<span class="BatBuoc">*</span></td>
</tr>
<tr>
<td width="40%" class="Left">Tên loại sản phẩm: </td>
<td><input name="txtTen" type="text" id="txtTen" maxlength="50"
value="<?php echo $ten;?>" />
<span class="BatBuoc">*</span></td>
</tr>
<tr>
<td width="40%" class="Left">Mô tả:</td>
<td align="left"><textarea name="txtMoTa"id="txtMoTa" rows="5"
cols="20"> <?php echo $mota;?></textarea>
<span class="BatBuoc">*</span></td>
</tr>
<tr>
<td align="center"> </td>
<td align="left"><input name="btnThem" type="submit"
class="Button" id="btnThem" value="Cập nhật" />
<span class="BatBuoc">*</span> là bắt buộc nhập</td>
</tr>
</table>
</form></td>
</tr>
</table>
</body>
</html>
Thực hành
PHP căn bản
Can Tho University software center 12
Bài tập 3.8: Xây dựng trang hiển thị chi tiêt sản phẩm, cập nhật và thêm mới sản
phẩm
Hiển thị hình sản phẩm .
Thông tin mô tả sản phẩm.
Thông tin về giá bán sản phẩm.
Trạng thái của sản phầm còn bán được hay đã hết hàng.
Hình 3.8: Danh sách sản phẩm thanh bên trái
Trong ví dụ này chúng ta xây dựng danh sách sản phẩm với thông tin được tập hợp từ
một số bảng. Khi Người dùng nhấn vào hính sản phẩm hệ thống chuyển sang trang
xem thông tin chi tiết về sản phẩm.
Mã nguồn tham khảo
<?php
include_once '../database.php';
include_once '../lib.php';
function SanPhamTrangChu(){
global $image_edit_path;
global $image_delete_path;
global $image_imageedit_path;
global $image_noimage_path;
global $image_path;
Thực hành
PHP căn bản
Can Tho University software center 13
$query = "select a.sp_id, sp_ten, hsp_ten, lsp_ten , nsx_ten, sp_gia,
sp_mota_ngan, DATE_FORMAT(sp_ngaydang, '%d-%m-%Y') , sp_soluong from sanpham a
LEFT JOIN loaisanpham b ON a.lsp_id = b.lsp_id
LEFT JOIN nhasanxuat c on a.nsx_id = c.nsx_id
LEFT JOIN sanpham_hinh d on a.sp_id = d.sp_id
GROUP BY a.sp_id";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
while (list($id, $ten, $hinh, $loai, $hang, $gia, $motangan, $ngaydang, $soluong)
= mysql_fetch_array($result))
{
echo "<div class=\"SanPham\"><a href=\"sanpham_chitiet.php?id=".$id."\"><img
width='130' height='97'
src=\"../".(isset($hinh)?($image_path."small_".$hinh):$image_noimage_path)."\"><b
r/>
<div style='min-height: 28px; float:left; width: 100%; '> <span
class=\"TenSanPham\">".$ten."</span></div></a><br/>
<div style='float:left; width: 100%;'>Giá: <span
class=\"Gia\">".number_format($gia, 0, ',', '.')."</span> VND</div><br/>
<div style='float:left; width: 100%;'>Còn: <span
class=\"Gia\">".number_format($soluong, 0, ',', '.')."</span> sản phẩm</div>
</div>";
}
} else {
echo "<tr><td class='khongdulieu' colspan='11'>Chưa có dữ liệu</td></tr>";
}
}
?>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="7"
class="TableSanPham">
<tr>
<td>
<?php SanPhamTrangChu(); ?>
</td>
</tr>
</table>
</body>
</html>
Khi chọn sản phẩm hệ thống chuyển sang trang xem chi tiết như sau:
Thực hành
PHP căn bản
Can Tho University software center 14
Hình 3.9: Giao diện xem chi tiết sản phẩm
Mã nguồn tham khảo
<?php
include_once 'database.php';
include_once 'lib.php';
$ten = "";
$tencu = "";
$gia = 0;
$gia_cu_ = 0;
$loai = "";
$nsx = "";
$motangan = "";
$ngaydang_ = "";
$motachitiet = "";
$soluong = 0;
$id = 0;
$loi = "";
Thực hành
PHP căn bản
Can Tho University software center 15
// xác định sản phẩm đang hiệu chỉnh
if(isset($_GET["id"]))
{
$query = "select sp_id, sp_ten, lsp_ten, nsx_ten, sp_gia, sp_gia_cu,
sp_mota_ngan, sp_mota_chitiet, sp_ngaydang, sp_soluong from sanpham, nhasanxuat,
loaisanpham where sanpham.nsx_id=nhasanxuat.nsx_id and
sanpham.lsp_id=loaisanpham.lsp_id and sp_id=" . $_GET["id"];
$sanpham = mysql_query($query);
if(!$sanpham)
{
echo "<script>alert('Không tìm thấy thông tin chi tiết sản phẩm !');
history.go(-1);</script>";
}
else
while (list($id_, $ten_, $loai_, $nsx_, $gia_, $gia_cu_, $motangan_,
$motachitiet_, $ngaydang_, $soluong_ ) = mysql_fetch_array($sanpham)) {
$id = $id_;
$ten = $ten_;
$tencu = $ten_;
$loai = $loai_;
$nsx = $nsx_;
$gia = $gia_;
$motangan = $motangan_;
$motachitiet = $motachitiet_;
$soluong = $soluong_;
}
}
function dshinhsanpham()
{
if(isset($_GET["id"]))
{
$query = "SELECT hsp_ten FROM sanpham_hinh where sanpham_hinh.sp_id=" .
$_GET["id"];
$dshinh = mysql_query($query);
$dshinh2 = mysql_query($query);
if(mysql_num_rows($dshinh))
{
$i =1;
echo " <div id='bigPic'>";
Thực hành
PHP căn bản
Can Tho University software center 16
while(list($hinh_sp) = mysql_fetch_array($dshinh))
{
echo " <a href='hinhsanpham/$hinh_sp'><img
src='hinhsanpham/$hinh_sp' alt=''/></a>";
}
echo " </div>
<ul id='thumbs'>" ;
while(list($hinh_sp) = mysql_fetch_array($dshinh2))
{
if($i==1)
echo " <li class='active' rel='$i'><img
src='hinhsanpham/$hinh_sp' alt='' /></li>";
else
echo " <li rel='$i'><img src='hinhsanpham/$hinh_sp'
alt='' /></li>";
$i++;
}
echo " </ul>";
}
}
}
?>
<table width="100%" border="0" cellpadding="5" cellspacing="0"
class="TableContainer">
<tr>
<td class="Header">THÔNG TIN CHI TIẾT SẢN PHẨM
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellpadding="10" cellspacing="0"
class="TableContainer">
<tr>
<td width="23%" align="center">
<div id='wrapper'>
<div id='body'>
<?php dshinhsanpham(); ?>
</div>
<div class='clearfix'></div>
<div id='push'></div>
Thực hành
PHP căn bản
Can Tho University software center 17
</div>
<script type="text/javascript" src="scripts/slideshow/script.js">
</script>
<script type="text/javascript">
$(function() {
$('#bigPic a').lightBox(); // Select all links in
object with gallery ID
});
</script>
</td>
<td width="77%" valign="top">
<p class="TenSanPhamLon" >
<?php echo $ten;?></p>
<p><strong>Giá</strong>: <span class="Gia"><?php echo
number_format($gia,0);?></span> VNĐ</p>
<p><strong>Giá cũ</strong>: <span class="GiaCu"><?php echo
number_format($gia_cu_,0);?></span> VNĐ</p>
<p><strong>Ngày cập nhật</strong>: <?php if($ngaydang_!="")echo
date("d-m-Y",$ngaydang_);?></p>
<p><strong>Số lượng</strong>: <?php echo
number_format($soluong,0);?></p>
<p><img src="images/datmua.gif" width="61" height="21"> </p></td>
</tr>
<tr>
<td colspan="2">
<div class="TenSanPham">Tính năng</div>
<?php echo $motachitiet;?>
</td>
</tr>
</table>
</td>
</tr>
</table>
Bài tập 3.9: Xây dựng chức năng chọn sản phẩm từ danh sách để cập nhật, xóa hay
mở trang thêm mới sản phẩm.
Thực hành
PHP căn bản
Can Tho University software center 18
Hình 3.10: Giao diện danh sách sản phẩm
Mã nguồn tham khảo trang danh sách sản phẩm
<?php
include_once '../database.php';
include_once '../lib.php';
function getSanPhams() {
global $image_edit_path;
global $image_delete_path;
global $image_imageedit_path;
global $image_noimage_path;
global $image_path;
$query = "select a.sp_id, sp_ten, hsp_ten, lsp_ten , nsx_ten, sp_gia,
sp_mota_ngan, DATE_FORMAT(sp_ngaydang, '%d-%m-%Y') , sp_soluong from sanpham a
LEFT JOIN loaisanpham b ON a.lsp_id = b.lsp_id
LEFT JOIN nhasanxuat c on a.nsx_id = c.nsx_id
LEFT JOIN sanpham_hinh d on a.sp_id = d.sp_id
GROUP BY a.sp_id";
$result = mysql_query($query);
Thực hành
PHP căn bản
Can Tho University software center 19
if (mysql_num_rows($result) > 0) {
while (list($id, $ten, $hinh, $loai, $hang, $gia, $motangan, $ngaydang,
$soluong) = mysql_fetch_array($result)) {
echo "<tr>
<td class=\"cotCheckBox\"><input name=\"checkbox[]\"
type=\"checkbox\" id=\"checkbox[]\" value=" . $id . "></td>
<td>" . (isset($hinh) ? "<img src='../" . $image_path . $hinh . "'
width='50px'/>" : "<img src='../" . $image_noimage_path . "' width='50px'/>") .
"</td>
<td class='cotTen'>" . $ten . "</td>
<td class='cotText'>" . $loai . "</td>
<td class='cotText'>" . $hang . "</td>
<td class='cotSo'>" . $gia . "</td>
<td class='cotNgay'>" . $ngaydang . "</td>
<td class='cotSo'>" . $soluong . "</td>
<td class=\"cotNutChucNang\"><a
href=\"sanpham_capnhat.php?do=edit&id=" . $id . "\"><img src='../" .
$image_edit_path . "'/></a></td>
<td class=\"cotNutChucNang\"><a href=\"sanpham_capnhat_anh.php?id=" .
$id . "\"><img src='../" . $image_imageedit_path . "'/></a>
<td class=\"cotNutChucNang\"><a onclick='return confirmDelete()'
href=\"sanpham_danhsach.php?id=" . $id . "\"><img src='../" . $image_delete_path
. "'/></a></td>
</td></tr>";
}
} else {
echo "<tr><td class='khongdulieu' colspan='11'>Chưa có dữ
liệu</td></tr>";
}
}
?>
<link href="../style.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Danh sách sản phẩm</title>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="TableData">
<tr>
<td colspan="11" class="themmoi"><a
href="sanpham_capnhat.php?do=add"><img src="../images/add.png"/> Thêm mới</a>
</td>
</tr>
Thực hành
PHP căn bản
Can Tho University software center 20
<tr>
<th>Chọn </th>
<th colspan="2">Sản phẩm </th>
<th>Loại </th>
<th>Hãng SX </th>
<th>Giá </th>
<th>Ngày đăng </th>
<th>Số lượng </th>
<th>Sửa </th>
<th>Hình ảnh </th>
<th>Xóa</th>
</tr>
<?php
getSanPhams();
?>
<tr>
<td colspan="11" class="phantrang">Phân trang</td>
</tr>
<tr>
<td colspan="11"><input type="submit" value="Xóa mục
chọn" name="btnXoa" id="btnXoa" onclick='return confirmDelete()'
class="InputButton"/> </td>
</tr>
</table>
Khi người dùng chọn sản phẩm từ danh sách này:
Gọi trang cập nhật
Hiển thị chi tiết thông tin sản phẩm
Cho phép hiệu chỉnh và lưu lại thay đổi.
Thực hành
PHP căn bản
Can Tho University software center 21
Hình 3.11: Giao diện cập nhật
Giao diện này được xây dựng để thực hiện 02 chức năng
Xem chi tiết trước khi cập nhật, lưu lại thông tin cập nhật.
Thêm mới sản phẩm.
Từ trang danh sách người dùng chọn sản phẩm để cập nhật, chúng ta sử dụng tham số
URL để truyền giá trị id của sản phẩm sang trang cập nhật
(sanpham_capnhat.php?do=edit&id=10 hoặc thêm mới
sanpham_capnhat.php?do=add).
Như vậy tại trang cập nhật chúng ta phải thực hiện một số việc sau:
Kiểm tra giá trị tham số id và do. Nếu id tồn tại
Thực hiện câu lệnh tìm thông tin chi tiết cho sản phẩm có id bằng id nhận
tự tham số URL bên trên.
Truy vấn dữ liệu bảng loại sản phẩm và tạo hộp chọn loại sản phẩm
Truy vấn dữ liệu bảng nhà sản xuất và tạo hộp chọn nhà sản xuất
Thực hành
PHP căn bản
Can Tho University software center 22
Điền thông tin lên giao diện.
Nếu do tồn tại và có giá trị
edit: chạy câu lệnh cập nhật
add: chạy câu lệnh thêm mới
Trong quá trình thêm mới hoặc cập nhật cần kiểm tra sản phẩm đã tồn tại
chưa.
Kiểm tra trang nếu được gọi do người dùng nhấn nút câp nhật hay trang mới
được gọi lên từ trang danh sách.
Kiểm tra tính hợp lệ của dữ liệu trước khi cập nhật
Tên của sản phẩm không được tồn tại trước đó
Số lượng phải lớn hơn 0
Phải xác định nhà cung cấp
Loại sản phẩm cũng được phải được chọn
Mô tả và mô tả chi tiết sản phẩm cũng phải được chọn
Tất cả các thông tin phải hợp lệ mới tiến hành cập nhật thông tin.
Mã nguồn tham khảo việc thực hiện sửa hoặc thêm mới sản phẩm
<?php
include_once '../database.php';
include_once '../lib.php';
$ten = "";
$tencu = "";
$gia = "";
$loai = 0;
$nsx = 0;
$gia = "";
$motangan = "";
$motachitiet = "";
$soluong = "";
$id = 0;
$loi = "";
// Kiểm tra hợp lệ
function KiemTraCapNhatSanPham($tencu) {
Thực hành
PHP căn bản
Can Tho University software center 23
$loi = "";
$ten = $_POST["txtTen"];
if ($_GET['do'] == "add") {
$query = "select * from sanpham where sp_ten ='" . trim($ten) . "'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$loi .= "<li>Sản phẩm đã tồn tại</li>";
}
} else {
$query = "select * from nhasanxuat where nsx_ten ='" . trim($ten) . "'
and nsx_ten <> '" . $tencu . "'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$loi .= "<li>Sản phẩm đã tồn tại</li>";
}
}
if (trim($_POST["txtTen"]) == "") {
$loi .= "<li>Vui lòng nhập tên sản phẩm</li>";
}
if ($_POST["slLoaiSanPham"] == "0") {
$loi .= "<li>Vui lòng chọn loại sản phẩm</li>";
}
if ($_POST["slNhaSanXuat"] == "0") {
$loi .= "<li>Vui lòng chọn nhà sản xuất</li>";
}
if (trim($_POST["txtGia"]) == null) {
$loi .= "<li>Vui lòng nhập giá</li>";
}
else if(is_int(str_replace(".","", trim($_POST["txtGia"]))))
{
$loi .= "<li>Vui lòng nhập giá hợp lệ</li>";
}
if (trim($_POST["txtMoTaNgan"]) == "") {
$loi .= "<li>Vui lòng nhập mô tả ngắn sản phẩm</li>";
}
if (trim($_POST["txtMoTaChiTiet"]) == "") {
$loi .= "<li>Vui lòng nhập mô tả chi tiết sản phẩm</li>";
}
Thực hành
PHP căn bản
Can Tho University software center 24
if (trim($_POST["txtSoLuong"]) == "") {
$loi .= "<li>Vui lòng nhập số lượng</li>";
}
else if(is_int(str_replace(".","", trim($_POST["txtSoLuong"]))))
{
$loi .= "<li>Vui lòng nhập số lượng hợp lệ</li>";
}
if($loi != ""){
return "<tr><td colspan='2'><ul class='cssLoi'>".$loi."</ul></td></tr>";
}
else {
return "";
}
}
// hàm thêm sản phẩm mới
function ThemSanPham($ten, $loai, $nsx, $gia, $motangan, $motachitiet, $soluong)
{
$query = "select * from sanpham where sp_ten ='" . trim($ten) . "'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
echo "Sản phẩm đã tồn tại";
} else {
$queryInsert = "insert into sanpham(sp_ten, lsp_id, nsx_id, sp_gia,
sp_mota_ngan, sp_mota_chitiet, sp_ngaydang, sp_soluong)
values('" . trim($ten) . "', " . $loai . ", " . $nsx . ",
" . $gia . ", '" . $motangan . "', '" . $motachitiet . "', now(), " . $soluong .
")";
mysql_query($queryInsert);
echo "<script>window.location='sanpham_danhsach.php';</script>";
}
}
// hàm cập nhật sản phẩm
function CapNhatSanPham($id, $ten, $loai, $nsx, $gia, $motangan, $motachitiet,
$soluong) {
$query = "update sanpham set sp_ten ='" . $ten . "',
lsp_id = " . $loai . ", nsx_id = " . $nsx . ", sp_gia=" . $gia . ",
sp_mota_ngan='" . $motangan . "', sp_mota_chitiet = '" .
$motachitiet . "', sp_soluong=" . $soluong . "
where sp_id = " . $id;
mysql_query($query) or die(mysqli_error());
Thực hành
PHP căn bản
Can Tho University software center 25
echo "<script>window.location='sanpham_danhsach.php';</script>";
}
// lấy thông cho các dropdown loại sản phẩm
function DanhSachLoaiSamPham($selectedValue){
$query = "select lsp_id, lsp_ten from loaisanpham";
$result = mysql_query($query);
echo "<select name='slLoaiSanPham'>
<option value='0'>Chọn Loại sản phẩm</option>";
while (list($id, $ten) = mysql_fetch_array($result)) {
if($id==$selectedValue){
echo "<option value='".$id."' selected>".$ten."</option>";
}
else
{
echo "<option value='".$id."'>".$ten."</option>";
}
}
echo "</select>";
}
//xây dựng hộp chọn nhà sản xuất
function DanhSachNhaSanXuat($selectedValue){
$query = "select nsx_id, nsx_ten from nhasanxuat";
$result = mysql_query($query);
echo "<select name='slNhaSanXuat'>
<option value='0'>Chọn nhà sản xuất</option>";
while (list($id, $ten) = mysql_fetch_array($result)) {
if($id==$selectedValue){
echo "<option value='".$id."' selected>".$ten."</option>";
}
else
{
echo "<option value='".$id."'>".$ten."</option>";
}
}
echo "</select>";
}
// xác định sản phẩm đang hiệu chỉnh
if(isset($_GET["id"]))
Thực hành
PHP căn bản
Can Tho University software center 26
{
$query = "select sp_id, sp_ten, lsp_id, nsx_id, sp_gia, sp_gia_cu, sp_mota_ngan,
sp_mota_chitiet, sp_ngaydang, sp_soluong from sanpham where sp_id=" .
$_GET["id"];
$sanpham = mysql_query($query);
while (list($id_, $ten_, $loai_, $nsx_, $gia_, $gia_cu_, $motangan_,
$motachitiet_, $ngaydang_, $soluong_ ) = mysql_fetch_array($sanpham)) {
$id = $id_;
$ten = $ten_;
$tencu = $ten_;
$loai = $loai_;
$nsx = $nsx_;
$gia = $gia_;
$motangan = $motangan_;
$motachitiet = $motachitiet_;
$soluong = $soluong_;
}
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$ten = $_POST["txtTen"];
$gia = $_POST["txtGia"];
$loai = $_POST["slLoaiSanPham"];
$motachitiet = $_POST["txtMoTaChiTiet"];
$motangan = $_POST["txtMoTaNgan"];
$nsx = $_POST["slNhaSanXuat"];
$soluong = $_POST["txtSoLuong"];
$loi = KiemTraCapNhatSanPham($tencu);
if($loi == ""){
if ($_GET['do'] == "add") {
ThemSanPham($ten, $loai, $nsx, $gia, $motangan, $motachitiet, $soluong);
} elseif ($_GET['do'] == "edit") {
if (isset($_GET['id'])) {
$id = $_GET['id'];
CapNhatSanPham($id, $ten, $loai, $nsx, $gia, $motangan, $motachitiet,
$soluong);
}
}
}
}
?>
Thực hành
PHP căn bản
Can Tho University software center 27
<script type="text/javascript" src="../scripts/ckeditor/ckeditor.js"></script>
<link href="../style.css" rel="stylesheet" type="text/css">
<title>Cập nhật sản phẩm</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<table width="100%" border="0" cellpadding="5" cellspacing="0"
class="TableContainer">
<tr>
<td class="Header">CẬP NHẬT SẢN PHẨM
</td>
</tr>
<tr>
<td>
<form id="form1" name="form1" method="post" action="">
<table width="100%" border="0" cellpadding="5" cellspacing="0"
class="TableForm">
<tr>
<td colspan="2" class="TieuDe">Nhập thông tin sản phẩm</td>
</tr>
<?php echo $loi; ?>
<tr>
<td width="40%" class="Left" >Tên sản phẩm: </td>
<td>
<input name="txtTen" class="longInput" type="text"
id="txtTen" maxlength="100" value="<?php echo $ten ?>"></input>
<span class="BatBuoc">*</span>
</td>
</tr>
<tr>
<td width="40%" class="Left">Loại sản phẩm: </td>
<td>
<?php DanhSachLoaiSamPham($loai); ?>
<span class="BatBuoc">*</span>
</td>
</tr>
<tr>
<td width="40%" class="Left">Hãng sản xuất: </td>
<td>
<?php DanhSachNhaSanXuat($nsx); ?>
<span class="BatBuoc">*</span>
Thực hành
PHP căn bản
Can Tho University software center 28
</td>
</tr>
<tr>
<td width="40%" class="Left">Giá: </td>
<td>
<input name="txtGia" class="shortInput" type="text"
id="txtGia" maxlength="100" value="<?php echo $gia ?>"></input>
<span class="BatBuoc">*</span>
</td>
</tr>
<tr>
<td width="40%" class="Left">Mô tả ngắn: </td>
<td>
<textarea name="txtMoTaNgan" rows="4"
class="longInput"><?php echo $motangan; ?></textarea>
<span class="BatBuoc">*</span>
</td>
</tr>
<tr>
<td width="40%" class="Left">Mô tả chi tiết: </td>
<td>
<textarea name="txtMoTaChiTiet" rows="4"
class="ckeditor"><?php echo $motachitiet; ?></textarea>
<script language="javascript">
CKEDITOR.replace( 'txtMoTaChiTiet',
{
skin : 'kama',
extraPlugins : 'uicolor',
uiColor: '#eeeeee',
toolbar : [ ['Source','DocProps','-
','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
['Undo','Redo','-','Find','Replace','-
','SelectAll','RemoveFormat'],
['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton'
,'HiddenField'],
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
['OrderedList','UnorderedList','-
','Outdent','Indent','Blockquote'],
Thực hành
PHP căn bản
Can Tho University software center 29
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor',
'NumberedList','BulletedList','-','Outdent','Indent'],
['Image','Flash','Table','Rule','Smiley','SpecialChar'],
['Style','FontFormat','FontName','FontSize'],
['TextColor','BGColor'],, [ 'UIColor' ] ]
});
</script>
<span class="BatBuoc">*</span>
</td>
</tr>
<tr>
<td width="40%" class="Left">Số lượng: </td>
<td>
<input name="txtSoLuong" class="shortInput"
type="text" id="txtSoLuong" maxlength="100" value="<?php echo $soluong ?>"/>
<span class="BatBuoc">*</span>
</td>
</tr>
<tr>
<td colspan="2"> <span class="BatBuoc">*</span> là bắt
buộc nhập</td>
</tr>
<tr>
<td colspan="2" align="center">
<input name="btnCapNhat" type="submit" class="Button"
id="btnCapNhat" value="Cập nhật" />
<input name="btnBoQua" type="button" class="Button"
id="btnBoQua" value="Bỏ qua" onclick="window.location='?func=ql_sanpham'" />
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
Như vậy chúng ta vừa xây dựng xong chức năng cập nhật và thêm sản phẩm mới kết
hợp trên cùng 01 giao diện.
Thực hành
PHP căn bản
Can Tho University software center 30
Bài tập 3.10: Thực hiện hoàn chỉnh chức năng quản lý khách hàng.
Danh sách có các liên kết chức năng: Thêm, Sủa, Xóa.
Xây dựng trang Thêm và cập nhật chung.
Xóa và danh sách trên cùng một trang.