Thứ Năm, 23 tháng 6, 2016

Phần 5 - Xuất menu ngang từ cơ sở dữ liệu vào web

- Tại file 'menu_ngang.php' thì bạn thêm đoạn code sau :


<?php
    $tv="select * from menu_ngang order by id";
    $tv_1=mysql_query($tv);
    echo "<div class='menu_ngang' >";
    while($tv_2=mysql_fetch_array($tv_1))
    {
        echo "<a href=''>";
            echo $tv_2['ten'];
        echo "</a>";
    }
    echo "</div>";
?>

- Sau khi thêm code , bạn nhận được kết quả như sau :


- Mình giải thích đoạn code trên như sau :


+ Cách viết '$tv' là cách viết tên biến trong php , như vậy $tv="select * from menu_ngang order by id"; là khai báo biết tv có nội dung là select * from menu_ngang order by id (Lưu ý ở đây biến tv sẽ có giá trị là 1 chuỗi ký tự)

+ Câu lệnh mysql_query có nhiệm vụ gửi 1 truy vấn đến cơ sở dữ liệu mysql , như vậy mysql_query($tv) là gửi đến cơ sở dữ liệu mysql 1 câu truy vấn có nội dung là select * from menu_ngang order by id ( mysql_query($tv) cũng có thể hiểu là gủi đến cơ sở dữ liệu mysql một biến có tên là tv kèm theo nội dung của biến tv )

+ Như vậy có thể hiểu chuỗi select * from menu_ngang order by id là 1 câu lệnh mysql.Câu lệnh này hiểu là 'lựa chọn tất cả các cột trong bảng menu_ngang và sắp xếp theo thứ tự số tăng dần của cột id'

+ Câu lệnh trên thực ra là câu lệnh select của mysql.Bạn có thể hiểu câu lệnh select này như sau

select (tên cột hoặc tên trường) from (tên bảng) + Một hoặc các lệnh khác

+ Ở đây 'tên cột hoặc tên trường' chính là dấu '*' , nghĩa là lựa chọn tất cả các cột.Còn phần tên bảng thì là bảng 'menu_ngang'.Kế tiếp 'Một hoặc các lệnh khác' thì là câu lệnh order by , câu lệnh này có nghĩa là 'sắp xếp' các dữ liệu trong bảng 'menu_ngang'

+ Câu lệnh order by có thể hiểu là order by (tên cột hoặc tên trường) + (kiểu sắp xếp)

+ Như vậy thì 'tên cột hoặc tên trường' trong câu lệnh order by là cột 'id'.Còn 'kiểu sắp xếp' thì để rỗng , khi mà để rỗng và cả cột 'sắp xếp' là cột số (trường hợp này là cột 'id') thì có nghĩa là sắp xếp theo thứ tự tăng dần

+ Tóm lại , câu lệnh select * from menu_ngang order by id hiểu là 'lựa chọn tất cả các cột trong bảng menu_ngang và sắp xếp theo thứ tự số tăng dần của cột id'

+ Viết $tv_1=mysql_query($tv); nghĩa là gán biến tv_1 có giá trị là 'cái bảng menu_ngang được sắp xếp theo id số tăng dần'

+ Tiếp theo là câu lệnh echo trong php.Câu lệnh echo dùng để xuất dữ liệu html,js,css (hoặc đơn thuần chỉ là nội dung chuỗi) ra trình duyệt web.

+ echo "<div class='menu_ngang' >"; là tạo div có class là menu_ngang.Mục đích tạo cái div này thì bạn có thể xem lại phần 2 của tài liệu này

+ Câu lệnh mysql_fetch_array có thể hiểu là dùng để lấy từng dòng dữ liệu trong 'bảng mysql'

+ Vì bảng dữ liệu có nhiều dòng nên phải dùng vòng lặp while (để lấy hết dữ liệu)

+ Viết là while($tv_2=mysql_fetch_array($tv_1)) thì có nghĩa là lấy dữ liệu từng dòng từ biến 'tv_1' (mà khi nãy đã gán biến tv_1 có nội dung là 'menu_ngang' ) cho đến khi hết dòng dữ liệu.

+ Có thể hiểu là khi mysql_fetch_array lấy dữ liệu tới dòng cuối cùng thì lúc này biến 'tv_2' sẽ có giá trị là false (tức là giá trị 'sai') nên vòng lặp while sẽ dừng lại

+ Ở trong vòng lặp while thì xuất liên kết ra : echo "<a href=''>";.Ở đây vòng lặp while sẽ chạy hết các dòng dữ liệu trong bảng 'menu_ngang' , thế nên vòng lặp while có số lần lặp lại bằng với số dòng dữ liệu của bảng 'menu_ngang'

+ Khi vòng lặp while đang chạy thì bạn sẽ thấy có gán biến $tv_2=mysql_fetch_array($tv_1).Như vậy biến 'tv_2' sẽ có giá trị là 1 dòng dữ liệu của bảng 'menu_ngang' , cứ mỗi một lần lặp lại vòng lặp while thì biến 'tv_2' sẽ đổi giá trị một lần (giá trị sẽ được đổi là dữ liệu của dòng tiếp theo trong bảng 'menu_ngang')

+ Lưu ý rằng giá trị của biến 'tv_2' sẽ là 1 mảng.Để truy xuất giá trị của mảng thì truy xuất thế này :

$tv_2['tên cột hoặc trường'] + Như vậy khi viết echo $tv_2['ten']; chính là xuất dữ liệu cột 'ten' trong bảng 'menu_ngang' và cứ mỗi lần vòng lặp while lặp lại thì giá trị cột 'ten' sẽ thay đổi (trở thành dữ liệu cột 'ten' của dòng kế tiếp)

+ Tạm thời trong phần này thì để liên kết là rỗng ( href='' )

+ Kết thúc phần này thì đã xuất được dữ liệu từ bảng 'menu_ngang' trong mysql vào web