• Downloading from our site will require you to have a paid membership. Upgrade to a Premium Membership from 10$ a month today!

    Dont forget read our Rules! Also anyone caught Sharing this content will be banned. By using this site you are agreeing to our rules so read them. Saying I did not know is simply not an excuse! You have been warned.

Hướng dẫn Nhập dữ liệu từ file excel sử dụng công nghệ XML...

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 :D ) 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:

46217db47502aa6a95fbba8a1c089864e10877066aeb023392a59da3423cf3f36g.jpg


Sau đó mở lên và lưu lại với đuôi là .xml

e07cd91da096597d7776411dd19080c4b8372fb23aca5a5ffbfc2d7a377c904c6g.jpg


Và sau đó mở file xml này lên, nó sẽ có cấu trúc như thế này:

efa40a369bb3efae000ad0fc2da5c04e4aa6712c4d0196a200d3afb30a0739936g.jpg


Ở đâ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:

97d3c5eb92f1fb86da6f68a3c83a24e333ef9da5d82d9abbdc4ae3c0d214ea896g.jpg


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>
Khi chọn file và nhấp vào nút upload code xử lý sẽ như sau:
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>";
        }
    }
    
?>
Vậy là xong phần xử lý, bây giờ mình đổ dữ liệu ra ngoài bảng nhé
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>
Code đầy đủ cho toàn bộ quá trình của chúng ta:
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>
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:

52c1ca8811a89a855b84e01e3b3696af890b2d9b69a75495837bb841a9e12f1d6g.jpg


Đâ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 :D

File demo các bạn có thể download tại đây: file XML, file PHP
 

Facebook Comments

Similar threads

New posts New threads New resources

Back
Top