Quản lý sinh viên Nhóm PTV
LỜI MỞ ĐẦU
☼☼☼☼☼☼☼☼
Sau một thời gian học tập nghiên cứu và được sự hướng dẫn tận tình của giảng
viên hướng dẫn thầy Hồ Diên Lợi nhóm PTV đã hoàn thành Đề tài 01: Xây dựng
trang thông tin ứng dụng quản lý sinh viên. (dữ liệu lưu dang XML, có các chức năng
thêm, bớt, sửa, tìm kiếm, trình bày chi tiết).
Khi nói về XML thì đó là một ngôn ngữ siêu đánh dấu cho việc trình bày
chuyên ngành. Mỗi ngôn ngữ đánh dấu dựa trên XML được gọi là ứng dụng XML.
VD:Trình duyệt Moliza, bảng tính Gnumeric, trình biên dịch XML, một ứng
dụng XML có thể đặc tả chuyên ngành như là Ngôn ngữ đánh dấu hóa học cho hóa
học, hoặc GML cho cây phả hệ
Mỗi ứng dụng XML gồm có những cú pháp và vốn từ riêng của nó, những vốn
từ và cú pháp này tuân theo những qui tắc của XML
XML là một định dạng rất mềm dẻo cho dữ liệu. XML được chọn là cở sở cho
những ngôn ngữ khác vì XML cung cấp một sự định dạng tài liệu rất tốt , làm cho
việc truy xuất tài liệu đó dễ dàng.
XML rất lí tưởng cho những tài liệu đồ sộ và phức tạp ,nó không chỉ cho phép
bạn chỉ rõ từ vựng định nghĩa các phần tử trong tài liệu, mà còn chó phép chỉ ra mối
quan hệ giữa các phần tử này.
XML cũng cung cấp phía client bao gồm kĩ thuật tích hợp dữ liệu từ nhiều
nguồn và trình bày nó chỉ trong một tài liệu duy nhất .
Đề tài nhóm PTV cũng sử dụng ngôn ngữ XML.Nội dung tài liệu XMl mà
nhóm PTV đang thực hiện được viết bằng ngôn ngữ PHP với cơ sở dữ liệu bằng XML
Trong quá trình thực hiện đồ án nhóm PTV cũng gặp nhiều khó khăn về kiến
thức rất rộng của ngôn ngữ PHP,nhưng dưới sự hướng dẫn của thầy Hồ Diên Lợi và
sự hỗ của mọi người trong nhóm cuối cùng nhóm PTV đã hoàn thành đề tài.
Nhóm PTV xin chân thành cảm ơn sự giúp đỡ tận tình của thầy Hồ Diên Lợi đã
giúp em hoàn thành đề tài một cách tốt nhất.Kính mong thầy đóng góp ý kiến để
nhưng lần sau nhóm em sẽ hoàn thành tốt hơn.
1 | P a g e
Quản lý sinh viên Nhóm PTV
NỘI DUNG CHI TIẾT:
I.ĐỊNH DẠNG TÀI LIỆU XML(DTD):
<!ELEMENT qlsinhvien (sinhvien)*>
<!ELEMENT sinhvien (tensv, ngaysinh, gioitinh, diachi, lop, khoa, khoahoc,
diemtb)>
<!ATTLIST sinhvien masv ID #REQUIRED>
<!ELEMENT tensv (ho, ten)>
<!ELEMENT ho (#PCDATA)>
<!ELEMENT ten (#PCDATA)>
<!ELEMENT ngaysinh (#PCDATA)>
<!ELEMENT gioitinh (#PCDATA)>
<!ELEMENT diachi (#PCDATA)>
<!ELEMENT lop (#PCDATA)>
<!ATTLIST lop malop CDATA #REQUIRED>
<!ELEMENT khoa (#PCDATA)>
<!ATTLIST khoa makhoa CDATA #REQUIRED>
<!ELEMENT khoahoc (#PCDATA)>
<!ELEMENT ketqua (monhoc)+>
<!ELEMENT monhoc (tenmh, diem)>
<!ELEMENT tenmh (#PCDATA)>
<!ELEMENT diem (#PCDATA)>
II.TÀI LIỆU XML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE qlsinhvien PUBLIC "XMLHOCSINH" "sinhvien.dtd">
<qlsinhvien>
<sinhvien masv="H3211111125">
<tensv>
<ho>Nguyễn Hồng</ho>
<ten>Phú</ten>
</tensv>
<ngaysinh>08/07/1990</ngaysinh>
<gioitinh>Nam</gioitinh>
<diachi>Q9 - TP.HCM</diachi>
<lop malop="32">Tin32B</lop>
<khoa makhoa="CNTT">Công Nghệ Thông Tin</khoa>
<khoahoc>Khóa 32</khoahoc>
<ketqua>
<monhoc>
<tenmh>Toán RR</tenmh>
<diem>8</diem>
2 | P a g e
Quản lý sinh viên Nhóm PTV
</monhoc>
<monhoc>
<tenmh>LT for win</tenmh>
<diem>9</diem>
</monhoc>
<monhoc>
<tenmh>LT web</tenmh>
<diem>10</diem>
</monhoc>
</ketqua>
</sinhvien>
<sinhvien masv="H3211111208">
<tensv>
<ho>Nguyễn Quang</ho>
<ten>Vinh</ten>
</tensv>
<ngaysinh>15/03/1990</ngaysinh>
<gioitinh>Nam</gioitinh>
<diachi>Q9 - TP.HCM</diachi>
<lop malop="32">Tin32B</lop>
<khoa makhoa="CNTT">Khoa CNTT</khoa>
<khoahoc>Khoa 32</khoahoc>
<ketqua>
<monhoc>
<tenmh>Toán RR</tenmh>
<diem>8</diem>
</monhoc>
<monhoc>
<tenmh>LT for win</tenmh>
<diem>9</diem>
</monhoc>
<monhoc>
<tenmh>LT web</tenmh>
<diem>10</diem>
</monhoc>
</ketqua>
</sinhvien>
<sinhvien masv="H3211111182">
<tensv>
<ho>Le Thi</ho>
<ten>Trang</ten>
</tensv>
<ngaysinh>08/07/1990</ngaysinh>
<gioitinh>Nam</gioitinh>
<diachi>Q9 - TP.HCM</diachi>
<lop malop="32">Tin32B</lop>
3 | P a g e
Quản lý sinh viên Nhóm PTV
<khoa makhoa="CNTT">Khoa CNTT</khoa>
<khoahoc>Khoa 32</khoahoc>
<ketqua>
<monhoc>
<tenmh>Toán RR</tenmh>
<diem>8</diem>
</monhoc>
<monhoc>
<tenmh>LT for win</tenmh>
<diem>9</diem>
</monhoc>
<monhoc>
<tenmh>LT web</tenmh>
<diem>10</diem>
</monhoc>
</ketqua>
</sinhvien>
</qlsinhvien>
Trong quá trình hiển thị và thao tác ta cần viết 1 số function để thực hiện
việc truy cập DOM trên tài liệu XML
DOMDocument php là 1 lớp được định nghĩa sẵn cho phép ta truy cập các tài liệu
XML, HTML, XHTML,
<?php
$xmldoc = new DOMDocument('1.0', 'UTF-8');
$xmldoc->preserveWhiteSpace = false;
$xmldoc->load("xml/sinhvien.xml");
$xmldoc->formatOutput = true;
// Hàm trả về giá trị của node đầu tiên với tên tag của node đó truyền vào
function getFirstValue($node,$tag){
return $node->getElementsByTagName($tag)->item(0)->nodeValue;
}
// Hàm trả về node đầu tiên với tên tag của node đó truyền vào
function getFirstNode($node,$tag){
return $node->getElementsByTagName($tag)->item(0);
}
// Hàm gán giá trị cho 1 node $node có tag $tag với giá trị $value
function setNodeValue($node,$tag,$value){
getFirstNode($node,$tag)->nodeValue = $value;
}
// Hàm trả về node sinhvien tìm được từ tag masv
function getSinhVien($xmldoc,$masv){
// Lấy tất cả các node sinh viên
4 | P a g e
Quản lý sinh viên Nhóm PTV
$allSinhVien = $xmldoc->getElementsByTagName("sinhvien");
// Duyệt từng node sinh viên
foreach($allSinhVien as $sinhvien)
{
// Tìm được masv với masv là 1 attribute
if(trim(getValueAttribute($sinhvien,"masv")) == trim($masv))
return $sinhvien; // Trả về node sinh viên tìm được
}
}
// function tìm 1 từ của tên
function TrimName($name)
{
$name = @explode(" ",trim($name));
return $name[0];
}
// Hàm trả về mảng các node sinhvien tìm được từ 1 thẻ bất kỳ trong node
sinhvien
// Ví dụ sinh viên có tag ngaysinh
function searchSinhVien($xmldoc,$tag,$value){
// Nếu tìm theo mã, vì mã mà 1 attribute định danh nên ta sử dụng lại hàm
getSinhVien
if($tag == "masv")
return array(getSinhVien($xmldoc,$value));
// Tìm tất cả sinhvien
$allSinhVien = $xmldoc->getElementsByTagName("sinhvien");
// Duyệt từng sinhvien
foreach($allSinhVien as $sinhvien)
{
// Nếu tìm theo họ hoặc tên (vì họ tên là 2 tag con của tag tensv trong node
sinhvien)
if($tag == "ho" || $tag == "ten")
{
$nodeTensv=$sinhvien->getElementsByTagName("tensv")->item(0);
// Nếu tìm được giá trị
if(TrimName(getFirstValue($nodeTensv,$tag)) == TrimName($value))
$arraySinhVien[] = $sinhvien; // gán vào mảng
}
// Tìm những tag không có children node còn lại
else if(getFirstValue($sinhvien,$tag) == $value)
{
$arraySinhVien[] = $sinhvien;
}
}
return $arraySinhVien;
5 | P a g e
Quản lý sinh viên Nhóm PTV
}
// Hàm tìm giá trị thuộc tính atribute, đối tượng $node phải chứa $value tìm
kiếm
// Ví dụ node sinhvien có masv là attribute
function getValueAttribute($node,$value)
{
return @$node->getAttribute($value);
}
// Hàm gán giá trị cho 1 attribute tìm được, $node phải tồn tại attribute
$nameAttribute
function setNodeAttribute($node,$nameAttribute,$value)
{
$node->setAttribute($nameAttribute,$value);
}
?>
III.TRANG HIỆN THỊ NỘI DUNG TÀI LIỆU XML:
III.1.Hình ảnh trang hiện thị nội dung:
6 | P a g e
Quản lý sinh viên Nhóm PTV
III.2.Phần code trang hiện thị nội dung:
<?php
require_once("function.php");
$select = @$_GET["select"];
?>
<h2 align="center"><a href="index.php" class="style5">Danh sách sinh
viên</a></h2>
<table align="center" width="1000px" border="1" bordercolor="#0033FF"
cellpadding="0" cellspacing="0">
<tr>
<td colspan="9">
<form method="get" action="">
<label>
<span class="style6">Tìm kiếm theo:</span> </label>
<select name="select" id="select">
<option <?php echo ($select == "masv") ? "selected" : ""; ?>
value="masv">Mã sinh viên</option>
<option <?php echo ($select == "ho") ? "selected" : ""; ?>
value="ho">Họ sinh viên</option>
<option <?php echo ($select == "ten") ? "selected" : ""; ?>
value="ten">Tên sinh viên</option>
<option <?php echo ($select == "ngaysinh") ? "selected" : ""; ?>
value="ngaysinh">Ngày sinh</option>
<option <?php echo ($select == "gioitinh") ? "selected" : ""; ?>
value="gioitinh">Giới tính</option>
<option <?php echo ($select == "lop") ? "selected" : ""; ?>
value="lop">Lớp</option>
7 | P a g e
Quản lý sinh viên Nhóm PTV
<option <?php echo ($select == "khoa") ? "selected" : ""; ?>
value="khoa">Tên khoa</option>
</select>
<input name="noidung" type="text" id="noidung"
value="<?php echo $_GET["noidung"]; ?>" size="30" />
<input name="timkiem" type="submit" value="Tìm kiếm" />
</form> </td>
</tr>
<tr>
<td><span class="style10">Mã sinh viên</span></td>
<td><span class="style10">Tên sinh viên</span></td>
<td><span class="style10">Ngày sinh</span></td>
<td><span class="style10">Giới tính</span></td>
<td><span class="style10">Địa chỉ</span></td>
<td><span class="style10">Lớp</span></td>
<td><span class="style10">Khoa</span></td>
<td><span class="style10">Sửa</span></td>
<td><span class="style10">Xóa</span></td>
</tr>
<?php
if($_GET["timkiem"]) // nếu tìm kiếm
{
$noidung = $_GET["noidung"];
// Danh sách sinh viên tìm được
$arraysv = searchSinhVien($xmldoc,$select, $noidung);
// Đếm nếu danh sách rỗng
if(count($arraysv) == 0)
die("<p align=\"center\">Không tìm thấy sinh viên!</p>");
// Duyệt từng sinhvien
foreach($arraysv as $sinhvien)
{
// Gán kết quả
$masv = getValueAttribute($sinhvien,"masv");
$tensv = getFirstValue($sinhvien,"ho")."
".getFirstValue($sinhvien,"ten");
$ngaysinh = getFirstValue($sinhvien,"ngaysinh");
$gioitinh = getFirstValue($sinhvien,"gioitinh");
$diachi = getFirstValue($sinhvien,"diachi");
$lop = getFirstValue($sinhvien,"lop");
$khoa= getValueAttribute(getFirstNode($sinhvien,"khoa"),"makhoa");
?>
<tr>
<td><?php echo $masv; ?></td>
<td><?php echo $tensv; ?></td>
<td><?php echo $ngaysinh; ?></td>
8 | P a g e
Quản lý sinh viên Nhóm PTV
<td><?php echo $gioitinh; ?></td>
<td><?php echo $diachi; ?></td>
<td><?php echo $lop; ?></td>
<td><?php echo $khoa; ?></td>
<td><a href="editXml.php?masv=<?php echo
$masv; ?>">Sửa</a></td>
<td><a href="saveXml.php?masv=<?php echo $masv; ?>">Xóa</a></td>
</tr>
<?php
}
// end foreach
}
Else
// Hiển thị thông thường
{
$qlsinhvien = $xmldoc->getElementsByTagName("sinhvien");
foreach($qlsinhvien as $sinhvien)
{
$masv = getValueAttribute($sinhvien,"masv");
$tensv = getFirstValue($sinhvien,"ho")."
".getFirstValue($sinhvien,"ten");
$ngaysinh = getFirstValue($sinhvien,"ngaysinh");
$gioitinh = getFirstValue($sinhvien,"gioitinh");
$diachi = getFirstValue($sinhvien,"diachi");
$lop = getFirstValue($sinhvien,"lop");
$khoa = getValueAttribute(getFirstNode($sinhvien,"khoa"),"makhoa");
?>
<tr>
<td><?php echo $masv; ?></td>
<td><?php echo $tensv; ?></td>
<td><?php echo $ngaysinh; ?></td>
<td><?php echo $gioitinh; ?></td>
<td><?php echo $diachi; ?></td>
<td><?php echo $lop; ?></td>
<td><?php echo $khoa; ?></td>
<td><a href="editXml.php?masv=<?php echo $masv; ?>">Sửa</a></td>
<td><a href="saveXml.php?masv=<?php echo $masv; ?
>">Xóa</a></td>
</tr>
<?php
}
// end foreach
}
// else
9 | P a g e
Quản lý sinh viên Nhóm PTV
?>
</table>
<p align="center"><a target="_blank" href="xml/sinhvien.xml"><b>Danh
sách sinh viên XML</b></a><a href="addXml.php"><b>Thêm Sinh
viên</b></a></p>
<p align="center" class="style1" style="padding:5px;"><span class="style3">GVHD:
Thầy Hồ Diên Lợi</span><br />
<span class="style4">Nhóm thực hiện: PTV - Nguyễn Hồng Phú - Lê Thị Trang -
Nguyễn Quang Vinh</span></p>
</body>
</html>
IV.TRANG CẬP NHẬT NỘI DUNG TÀI LIỆU XML:
IV.1.Hình ảnh trang cập nhật nội dung:
Thông tin muốn sửa sẽ được hiện thị lên trang.
Khi hoàn thành xong thông tin sửa thì nhấn Sửa sinh viên để lưu lại thông tin đã được
sửa.
Nhấp Quay lại để trở lại trang hiện thị.
IV.2.Phần code trang cập nhật nội dung:
<?php
10 | P a g e
Quản lý sinh viên Nhóm PTV
require_once("function.php");
$masv = $_GET["masv"];
// Node sinh viên tìm được
$sinhvien = getSinhVien($xmldoc,$masv) or die("Không tìm thấy sinh viên");
// Tên SV
$hosv = getFirstValue($sinhvien,"ho");
$tensv = getFirstValue($sinhvien,"ten");
// Ngày sinh
$ngaysinh = getFirstValue($sinhvien,"ngaysinh");
// Giới tính
$gioitinh = getFirstValue($sinhvien,"gioitinh");
// Địa chỉ
$diachi = getFirstValue($sinhvien,"diachi");
// Lớp
$lop = getFirstNode($sinhvien,"lop"); // xác định node lop trong node sinhvien
$malop = $lop->getAttribute("malop"); // lấy giá trị attribute malop trong node lop
$tenlop = getFirstValue($sinhvien,"lop"); // lấy giá trị tenlop trong node lop
// Khoa
$khoa = getFirstNode($sinhvien,"khoa"); // xác định node khoa trong node khoa
$makhoa = $khoa->getAttribute("makhoa"); // lấy giá trị attribute makhoa trong
node khoa
$tenkhoa = getFirstValue($sinhvien,"khoa"); // lấy giá trị tenkhoa trong node khoa
// Khóa học
$khoahoc = getFirstValue($sinhvien,"khoahoc");
// Đếm số môn học trong node ketqua
$nodeKetqua = getFirstNode($sinhvien,"ketqua");
$arrayMonHoc = $nodeKetqua->getElementsByTagName("monhoc");
$somon = 0;
foreach($arrayMonHoc as $monhoc)
{
$ketqua["tenmh"][$somon] = getFirstValue($monhoc,"tenmh"); // lấy tên môn học
$ketqua["diem"][$somon] = getFirstValue($monhoc,"diem");
$somon++;
}
?>
<h2 align="center">Sửa sinh viên</h2>
<form name="formsua" method="post" action="saveXml.php">
<fieldset>
<label> Mã sinh viên: </label> <input style="background:#CCCCCC" type="text"
name="masv" value="<?php echo $masv; ?>" readonly="true" /> <br />
<label> Tên sinh viên: </label><input name="hosv" type="text" id="ho"
value="<?php echo $hosv; ?>" size="18" />
<input name="tensv" type="text" value="<?php echo $tensv; ?>" size="5" />
<br />
11 | P a g e
Quản lý sinh viên Nhóm PTV
<label> Giới tính: </label> <input type="text" name="gioitinh" value="<?php
echo $gioitinh; ?>" size="5"/> <br />
<label> Ngày sinh: </label> <input type="text" name="ngaysinh" value="<?php
echo $ngaysinh; ?>" size="18"/> <br />
<label> Địa chỉ: </label> <input type="text" name="diachi" value="<?php
echo $diachi; ?>" size="30" /> <br />
<label> Lớp: </label> <input name="malop" type="text" id="malop"
value="<?php echo $malop; ?>" size="5"/>
<input name="tenlop" type="text" id="tenlop" value="<?php echo $tenlop; ?>"
size="18" />
<br />
<label> Khoa: </label> <input name="makhoa" type="text" id="makhoa"
value="<?php echo $makhoa; ?>" size="5" />
<input name="tenkhoa" type="text" value="<?php echo $tenkhoa; ?>"
size="18" />
<br />
<label> Khóa học: </label> <input name="khoahoc" type="text" id="khoahoc"
value="<?php echo $khoahoc; ?>" />
<br />
<?php
if($somon != 0)
{
echo " <label> Kết quả: </label> <br />";
for($i=0; $i< $somon; $i++)
{
?>
<label> Tên môn học <?php echo $i+1; ?>: </label> <input name="tenmh<?php
echo $i ?>" type="text" value="<?php echo $ketqua["tenmh"][$i]; ?>" size="15" />
<input name="diem<?php echo $i ?>" type="text" value="<?php echo
$ketqua["diem"][$i]; ?>" size="5" />
<br />
<?php
}
}
?>
<input type="hidden" name="edit" value="edit" />
<input type="hidden" name="somon" value="<?php echo $somon; ?>" />
<input style="margin-left:100px;" type="submit" value="Sửa sinh viên"
name="edit" />
<a href="index.php"><input style="" type="button" value="Quay lại"
name="quaylai" /></a>
</fieldset>
</form>
CODE SỬA :
if(isset($_POST["edit"]))// Sửa
12 | P a g e
Quản lý sinh viên Nhóm PTV
{
// Tìm node sinhvien cần sửa
$nodeSinhVien = getSinhVien($xmldoc,$masv);
// Tìm node tensv trong node sinhvien
$nodeTenSV = getFirstNode($nodeSinhVien,"tensv");
// Sửa giá trị của các children node $nodeTenSV
setNodeValue($nodeTenSV,"ho",$hosv);
setNodeValue($nodeTenSV,"ten",$tensv);
// Sửa node ngày sinh
setNodeValue($nodeSinhVien,"ngaysinh",$ngaysinh);
// Sửa node giới tính
setNodeValue($nodeSinhVien,"gioitinh",$gioitinh);
// Sửa node Địa chỉ
setNodeValue($nodeSinhVien,"diachi", $diachi);
// Sửa node Lớp
$nodeLop = getFirstNode($nodeSinhVien,"lop");
setNodeAttribute($nodeLop,"malop",$malop);
setNodeValue($nodeSinhVien,"lop",$tenlop);
// Sửa node Khoa
$nodeKhoa = getFirstNode($nodeSinhVien,"khoa");
setNodeAttribute($nodeKhoa,"makhoa",$makhoa);
setNodeValue($nodeSinhVien,"khoa",$tenkhoa);
// Sửa node Khóa học
setNodeValue($nodeSinhVien,"khoahoc",$khoahoc);
// Sửa các node con trong node Ketqua
$nodeKetQua = getFirstNode($nodeSinhVien,"ketqua");
$allNodeMonHoc = $nodeKetQua->getElementsByTagName("monhoc");
// Sửa node ketqua
$i = 0;
foreach($allNodeMonHoc as $nodeMonHoc)
{
// sửa giá trị từng node
setNodeValue($nodeMonHoc,"tenmh",$_POST["tenmh".$i]);
setNodeValue($nodeMonHoc,"diem",$_POST["diem".$i]);
$i++;
}
// Lưu tài liệu XML và chuyển đến sv vừa sửa
$xmldoc->save("xml/sinhvien.xml");
header("Refresh:0; url=editXml.php?masv=$masv");
V.TRANG THÊM MẪU TIN VÀO NỘI DUNG TÀI LIỆU XML:
V.1.Hình ảnh trang thêm mẫu tin :
13 | P a g e
Quản lý sinh viên Nhóm PTV
V.2.Phần code trang thêm mẫu tin:
<?php
require_once("function.php");
?>
<h2 align="center">Thêm Sinh Viên</h2>
<form id="form1" name="form1" method="post"
action="saveXml.php">
<fieldset>
<label> Mã sinh viên: </label> <input style="background:#CCCCCC"
type="text" name="masv" />
<br />
<label> Tên sinh viên:</label><input name="hosv" type="text"
id="ho" size="18" />
<input name="tensv" type="text" size="5" />
<br />
<label> Giới tính:</label><input type="text" name="gioitinh"
size="5"/>
<br />
<label> Ngày sinh: </label> <input type="text" name="ngaysinh"
size="18"/>
<br />
<label> Địa chỉ: </label> <input type="text" name="diachi"
size="30"/>
<br />
14 | P a g e
Quản lý sinh viên Nhóm PTV
<label> Lớp: </label> <input name="malop" type="text" id="malop"
size="5"/>
<input name="tenlop" type="text" id="tenlop" size="18" />
<br />
<label>Khoa:</label><input name="makhoa" type="text" id="makhoa"
size="5" />
<input name="tenkhoa" type="text" size="18" />
<br />
<label> Khóa học:</label><input name="khoahoc" type="text"
id="khoahoc" />
<br />
<label> Kết quả: </label> <br />
<?php
for($i=0; $i<= 2; $i++)
{
?>
<label> Tên môn học <?php echo $i+1; ?>: </label> <input
name="tenmh<?php echo $i ?>" type="text" value="" size="15" />
<input name="diem<?php echo $i ?>" type="text" value=""
size="5" />
<br />
<?php
}
?>
<input type="hidden" name="add" value="add" />
<input type="hidden" name="somon" value="<?php echo $i; ?>" />
<input style="margin-left:100px;" type="submit" value="Thêm sinh
viên" name="add" />
<a href="index.php"><input style="" type="button" value="Quay lại"
name="quaylai" /></a>
</fieldset>
</form>
CODE THÊM MẪU TIN:
if(isset($_POST["add"]))
{
// Tao node sinhvien
$nodeSinhvien = $xmldoc->createElement("sinhvien");
// Tạo attribute masv
$attMasv = $xmldoc->createAttribute("masv");
// Gán giá trị cho attribute masv
$attMasv->appendChild($xmldoc->createTextNode($masv));
$nodeSinhvien->appendChild($attMasv);
// Tạo node tensv
$nodeTensv = $xmldoc->createElement("tensv");
15 | P a g e
Quản lý sinh viên Nhóm PTV
// Tạo node họ
$nodeHo = $xmldoc->createElement("ho",$hosv);
// Tạo node tên
$nodeTen = $xmldoc->createElement("ten",$tensv);
// Gắn node họ vào node tensv
$nodeTensv->appendChild($nodeHo);
// Gắn node ten vào node tensv
$nodeTensv->appendChild($nodeTen);
// Gắn node tensv vào node sinhvien
$nodeSinhvien->appendChild($nodeTensv);
// Tạo node ngaysinh
$nodeNgaysinh = $xmldoc->createElement("ngaysinh",$ngaysinh);
// Gắn node ngaysinh vào sinhvien
$nodeSinhvien->appendChild($nodeNgaysinh);
// Tạo node gioitinh
$nodeGioitinh = $xmldoc->createElement("gioitinh",$gioitinh);
// Gắn node gioitinh vào sinhvien
$nodeSinhvien->appendChild($nodeGioitinh);
// Tạo node diachi
$nodeDiachi = $xmldoc->createElement("diachi",$diachi);
// Gắn node diachi vào sinhvien
$nodeSinhvien->appendChild($nodeDiachi);
// Tạo node lop
$nodeLop = $xmldoc->createElement("lop",$tenlop);
// Tạo attribute malop
$attrMalop = $xmldoc->createAttribute("malop");
// Gán giá trị cho attribute malop
$attrMalop->appendChild($xmldoc->createTextNode($malop));
// Gắn attribute malop cho node lop
$nodeLop->appendChild($attrMalop);
// Gắn node lop vào node sinhvien
$nodeSinhvien->appendChild($nodeLop);
// Tạo node Khoa
$nodeKhoa = $xmldoc->createElement("khoa",$tenkhoa);
// Tạo attribute makhoa
$attrMakhoa = $xmldoc->createAttribute("makhoa");
// Gán giá trị cho attribute makhoa
$attrMakhoa->appendChild($xmldoc->createTextNode($makhoa));
// Gắn attribute makhoa cho node khoa
$nodeKhoa->appendChild($attrMakhoa);
// Gắn node khoa cho node sinhvien
$nodeSinhvien->appendChild($nodeKhoa);
// Tạo node Khoahoc
$nodeKhoahoc = $xmldoc->createElement("khoahoc",$khoahoc);
// Gắn node Khoahoc cho node sinhvien
$nodeSinhvien->appendChild($nodeKhoahoc);
16 | P a g e
Quản lý sinh viên Nhóm PTV
// Tạo node KetQua
$nodeKetQua = $xmldoc->createElement("ketqua");
for($i = 0; $i < $somon ; $i++)
{
// Tạo node monhoc child của nodeKetqua
$nodeMonHoc = $xmldoc->createElement("monhoc");
// Tạo node TenMonhoc children của monhoc
$nodeTenMonhoc = $xmldoc->createElement("tenmh",
$_POST["tenmh".$i]);
// Gắn vào monhoc
$nodeMonHoc->appendChild($nodeTenMonhoc);
// Tạo node Diem children của monhoc
$nodeDiem = $xmldoc- createElement("diem",
$_POST["diem".$i]);
// Gắn vào monhoc
$nodeMonHoc->appendChild($nodeDiem);
// Cuối cùng gắn từng monhoc và ketqua
$nodeKetQua->appendChild($nodeMonHoc);
}
// Gắn ketqua cho sinhvien
$nodeSinhvien->appendChild($nodeKetQua);
// Gắn node sinhvien cho node qlsinhvien
getFirstNode($xmldoc,"qlsinhvien")->appendChild($nodeSinhvien);
// Lưu tài liệu XML và chuyển đến sv vừa thêm
$xmldoc->save("xml/sinhvien.xml");
header("Refresh:0; url=editXml.php?masv=$masv");
VI.XÓA MẪU TIN:
if(isset($_GET["masv"])) // Xóa
{
// lấy masv xóa từ querystring
$masv = $_GET["masv"];
// tìm node sinhvien cần xóa
$nodeSinhVien = getSinhVien($xmldoc,$masv);
// đứng ở node qlsinhvien xóa node sinhvien
getFirstNode($xmldoc,"qlsinhvien")->removeChild($nodeSinhVien);
// Lưu tài liệu XML
$xmldoc->save("xml/sinhvien.xml");
header("Refresh:0; url=index.php");
}
?>
KẾT LUẬN:
Xây dựng một trang xml không phải là vấn đề mới mẻ. Quanh XML luôn có
nhiều cường điệu và lộn xộn. Tuy nhiên, nó không khó khăn như bạn nghĩ nhất là
17 | P a g e
Quản lý sinh viên Nhóm PTV
trong một ngôn ngữ lớn như PHP. Khi bạn hiểu và thực hiện XML đúng cách, bạn sẽ
thấy có nhiều công cụ mạnh mà bạn có thể sử dụng.
Trong thế giới hiện đại ngày nay, công nghệ thông tin đã trở thành một phần tất
yếu trong cuộc sống. Với những hỗ trợ ngày càng nhiều của công nghệ thông tin trong
các lĩnh vực, con người đã tiết kiệm được khá nhiều thời gian và công sức làm việc,
nhờ đó hiệu quả công việc tăng lên gấp nhiều lần. Một trong những đóng góp quan
trọng của công nghệ thông tin cho con người là việc tổ chức lưu trữ dữ liệu.
Với việc tổ chức lưu trữ thông tin trên máy tính, con người thoát khỏi một khối lượng
lớn công việc phải ghi chép, giúp cho việc trao đổi và chia sẻ thông tin trở nên linh
hoạt hơn, còn giúp đảm bảo an toàn dữ liệu và dễ dàng thống kê… Các hình thức lưu
trữ dữ liệu thường dùng ngày nay là: cơ sở dữ liệu quan hệ, các dạng tài liệu văn bản,
tài liệu XML… Nhờ cấu trúc đơn giản, dễ truy xuất và đặc biệt không phụ thuộc vào
một nền tảng nào, việc lưu trữ bằng tài liệu XML ngày càng trở nên phổ biến, được
ứng dụng rộng rãi trong nhiều lĩnh vực… XML đã trở thành chuẩn tiện lợi cho việc
trao đổi thông tin trên Web.
Hiện nay, vấn đề ứng dụng công nghệ XML trong môi trường cơ sở dữ liệu di
động đang thu hút nhiều sự quan tâm, đầu tư của các nhà nghiên cứu. Nhất là trong
hoàn cảnh hiện tại, các thiết bị di động đang trở nên quan trọng và phổ biến trong xã
hội chúng ta. Hơn thế các thiết bị di động ngày càng trở nên nhỏ gọn và thông minh,
có thể truy xuất thông tin mọi lúc mọi nơi, có thể trao đổi, giao tiếp với các hệ thống
khác bằng những công nghệ vô tuyến như: Wifi, BlueTooth,… Chính sự phát triển
không ngừng của các thiết bị di động và công nghệ vô tuyến đã tạo ra nhiều thuận lợi
cũng như thách thức trong việc nghiên cứu các vấn đề liên quan đến môi trường dữ
liệu di động: tính toán di động, thiết kế dữ liệu gọn nhẹ phù hợp với không gian lưu
trữ hạn hẹp của các thiết bị, truy vấn hiệu quả và đồng bộ dữ liệu… Sự hòa hợp giữa
các thiết bị di động và công nghệ vô tuyến trở thành lĩnh vực nghiên cứu nhiều tiềm
năng.
18 | P a g e