Smobi
New Member
Nếu chúng ta thêm 1 user, 1 thể loại thì dễ dàng, còn nếu yêu cầu chúng ta hằng ngày nhập 1 list danh sách(>500)các thông tin của nhân viên, thông tin bài nhạc... để up lên web thì sao, chả lẽ chúng ta phải nhập bằng tay từng thông tin 1 hay sao, ngày nào cũng vậy chắc đứt bóng sớm ). Vậy là bắt đầu mình suy nghĩ, làm cách nào để up 1 phát là xong hết không nhỉ, giả dụ nếu mình có 1 file excel có đầy đủ hết thông tin của tất cả các bài hát(>1000 bài đi cho nó oách ) nếu mà up thẳng 1 lèo vào database được thì đỡ quá nhỉ, không biết php làm được không ta? thầy thì chỉ mới dạy tới phần xml thoai, nên đối với mình thì pó..code . Thế là tới nhà bác Google hỏi thăm coi thế nào, lang thang vài vòng lượn zô 1 trang toàn... tiếng anh, khiếp thiệt, mình nhìn nó, nó nhỉn mình cưởi chả ai biết ai =)) may thay thấy 1 dòng đập vào mắt bảo convert file .xls sang file xml, nghĩ một hồi cái tự nhiên nảy ra ý tưởng và lao đầu vào "cột" ... ặc nhầm, lao đầu vào code ).
hihi nói nhảm nãy giờ đủ rồi giờ chúng ta bắt đầu nhé.
Đầu tiên chúng ta có 1 file excel với dữ liệu về thông tin bài nhạc như thế này:
Sau đó mở lên và lưu lại với đuôi là .xml
Và sau đó mở file xml này lên, nó sẽ có cấu trúc như thế này:
Ở đây chúng ta thấy, Dữ liệu của chúng ta cần lấy nó nằm trong cặp thẻ <Row>, vậy chúng ta cần xác định được vị trí của thẻ <row> và sau đó dùng vòng lặp, lặp qua các thẻ <row> để lấy giả trị chúng ta cần sau đó nhập vào database, cụ thể chúng ta sao làm như sau:
Đầu tiên tạo 1 database tên test, sau đó tạo 1 bảng tên media với cấu trúc như sau:
Trong trang html ta có 1 form cho phép chọn file xml(convert từ file excel) cần nhập dữ liệu:
Khi chọn file và nhấp vào nút upload code xử lý sẽ như sau:
Vậy là xong phần xử lý, bây giờ mình đổ dữ liệu ra ngoài bảng nhé
Code đầy đủ cho toàn bộ quá trình của chúng ta:
Phù cuối cùng thì cũng xong, đây là lần thư 2 viết lại, hiz.. nãy viết vừa xong nhấp xem lại bài viết thì bị đá giăng ra ngoài, làm mất sạch ( lại phải ì ạch việts lại. Kết quả như hình sau:
Đây chỉ là bài demo ý chính là nhập dữ liệu bằng file excel, nên có nhiều cái còn lôi thôi luộm thuộm, mong các bạn bỏ qua nhé ^_^, bạn nào chưa biết thì có thể tham khảo , bạn nào biết rùi mà biết cách viết hay hơn thì nhớ share cho mọi người cùng học hỏi nhé.
Ai không hiểu thì có thể hỏi mình hoặc pm wa nick yà hú: thugianmotti
File demo các bạn có thể download tại đây: file XML, file PHP
hihi nói nhảm nãy giờ đủ rồi giờ chúng ta bắt đầu nhé.
Đầu tiên chúng ta có 1 file excel với dữ liệu về thông tin bài nhạc như thế này:
Sau đó mở lên và lưu lại với đuôi là .xml
Và sau đó mở file xml này lên, nó sẽ có cấu trúc như thế này:
Ở đây chúng ta thấy, Dữ liệu của chúng ta cần lấy nó nằm trong cặp thẻ <Row>, vậy chúng ta cần xác định được vị trí của thẻ <row> và sau đó dùng vòng lặp, lặp qua các thẻ <row> để lấy giả trị chúng ta cần sau đó nhập vào database, cụ thể chúng ta sao làm như sau:
Đầu tiên tạo 1 database tên test, sau đó tạo 1 bảng tên media với cấu trúc như sau:
Trong trang html ta có 1 form cho phép chọn file xml(convert từ file excel) cần nhập dữ liệu:
HTML:
<form action="b.php" method="post" enctype="multipart/form-data">
Select a file: <input type="file" name="upload" size="50" />
<input type="submit" name="send" value="Upload" /> </form>
PHP:
<?php
if(isset($_POST["send"])){//Nếu nút send được nhấn
if($_FILES["upload"]["name"] != NULL){//Nếu có chọn file
move_uploaded_file($_FILES["upload"]["tmp_name"],"data/" . $_FILES["upload"]["name"]);di chuyển file xml lên server trong thư mục data
$dom = new DOMDocument();Khởi tạo đối tượng PHP DOM
$dom->load("data/" . $_FILES["upload"]["name"]);//Load file xml vừa được chuyển trong thư mục data
$row = $dom->getElementsByTagName("Row");//Xác định vị trí của thẻ <Row>
$first_row = TRUE;//Biến định là dòng đầu tiên trong bảng excel(dòng tiêu đề)
foreach($row as $r){//Bắt đầu lặp qua các thẻ Row
if(!$first_row){//Nếu không phải là dòng đầu tiên
//Lấy giá trị của các cột trên từng dòng
$a = $r->getElementsByTagName("Cell")->item(0)->nodeValue;
$b = $r->getElementsByTagName("Cell")->item(1)->nodeValue;
$c = $r->getElementsByTagName("Cell")->item(2)->nodeValue;
$d = $r->getElementsByTagName("Cell")->item(3)->nodeValue;
$e = $r->getElementsByTagName("Cell")->item(4)->nodeValue;
$f = $r->getElementsByTagName("Cell")->item(5)->nodeValue;
//Khởi tạo câu truy vấn
$sql = "insert into media(song,singer,musician,categories,album,url) values('" . $a . "','" . $b . "','" . $c . "','" . $d . "','" . $e . "','" . $f . "')";
//Thực thi câu truy vấn và kiểm tra kết quả trả về
if(mysql_query($sql) != FALSE){
$mess ="Thêm dữ liệu thành cong";
}else{
$mess = "Thêm dữ liệu thất bại";
}
}
$first_row = FALSE;//Biến xác định đã qua dòng đầu tiên
}
echo "<cente>$mess</center>";
}
}
?>
PHP:
<table cellpadding="0" cellspacing="0" border="1" width="80%">
<tr>
<th>STT</th>
<th>Tên bài hát</th>
<th>Ca sĩ</th>
<th>Nhạc sĩ</th>
<th>Thể loại</th>
<th>Album</th>
<th>Đường dẫn</th>
</tr>
<?php
$sql = "select * from media order by categories ASC";
$query = mysql_query($sql);
if(mysql_num_rows($query) > 0){
$stt = 0;
while($data = mysql_fetch_assoc($query)){
$stt++;
echo "<tr>";
echo "<td>$stt</td>";
echo "<td>$data[song]</td>";
echo "<td>$data[singer]</td>";
echo "<td>$data[musician]</td>";
echo "<td>$data[categories]</td>";
echo "<td>$data[album]</td>";
echo "<td>$data[url]</td>";
echo "</tr>";
}
}else{
echo "<tr><td colspan=7 align=center>Data empty</td></tr>";
}
?>
</table>
HTML:
<?php
$conn = mysql_connect("localhost","root","root");
mysql_select_db("test",$conn);
if(isset($_POST["send"])){
if($_FILES["upload"]["name"] != NULL){
move_uploaded_file($_FILES["upload"]["tmp_name"],"data/" . $_FILES["upload"]["name"]);
$dom = new DOMDocument();
$dom->load("data/" . $_FILES["upload"]["name"]);
$row = $dom->getElementsByTagName("Row");
$first_row = TRUE;
foreach($row as $r){
if(!$first_row){
$a = $r->getElementsByTagName("Cell")->item(0)->nodeValue;
$b = $r->getElementsByTagName("Cell")->item(1)->nodeValue;
$c = $r->getElementsByTagName("Cell")->item(2)->nodeValue;
$d = $r->getElementsByTagName("Cell")->item(3)->nodeValue;
$e = $r->getElementsByTagName("Cell")->item(4)->nodeValue;
$f = $r->getElementsByTagName("Cell")->item(5)->nodeValue;
$sql = "insert into media(song,singer,musician,categories,album,url) values('" . $a . "','" . $b . "','" . $c . "','" . $d . "','" . $e . "','" . $f . "')";
if(mysql_query($sql) != FALSE){
$mess = "Them du lieu thanh cong";
}else{
$mess = "Them du lieu that bai" . mysql_error();
}
}
$first_row = FALSE;
}
echo "<cente>$mess</center>";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="author" content="Le Kim Thuc" />
<style type="text/css">
form{
text-align: center;
margin: 50px auto;
}
</style>
</head>
<body>
<form action="b.php" method="post" enctype="multipart/form-data">
Select a file: <input type="file" name="upload" size="50" />
<input type="submit" name="send" value="Upload" />
</form>
<table cellpadding="0" cellspacing="0" border="1" width="80%">
<tr>
<th>STT</th>
<th>Tên bài hát</th>
<th>Ca sĩ</th>
<th>Nhạc sĩ</th>
<th>Thể loại</th>
<th>Album</th>
<th>Đường dẫn</th>
</tr>
<?php
$sql = "select * from media order by categories ASC";
$query = mysql_query($sql);
if(mysql_num_rows($query) > 0){
$stt = 0;
while($data = mysql_fetch_assoc($query)){
$stt++;
echo "<tr>";
echo "<td>$stt</td>";
echo "<td>$data[song]</td>";
echo "<td>$data[singer]</td>";
echo "<td>$data[musician]</td>";
echo "<td>$data[categories]</td>";
echo "<td>$data[album]</td>";
echo "<td>$data[url]</td>";
echo "</tr>";
}
}else{
echo "<tr><td colspan=7 align=center>Data empty</td></tr>";
}
?>
</table> </body>
Đây chỉ là bài demo ý chính là nhập dữ liệu bằng file excel, nên có nhiều cái còn lôi thôi luộm thuộm, mong các bạn bỏ qua nhé ^_^, bạn nào chưa biết thì có thể tham khảo , bạn nào biết rùi mà biết cách viết hay hơn thì nhớ share cho mọi người cùng học hỏi nhé.
Ai không hiểu thì có thể hỏi mình hoặc pm wa nick yà hú: thugianmotti
File demo các bạn có thể download tại đây: file XML, file PHP