post image

Menu hai cấp từ CSDL

Được rất nhiều người hỏi về cách truy xuất dữ liệu từ CSDL ra như thế nào? và áp dụng chúng với những kỹ thuật đã học ra làm sao? Cho nên tôi hy vọng với tutorial này, sẽ giúp các bạn có cái nhìn tổng quát về cách truy xuất CSDL và kết hợp nó với HTML để tạo ra các thành phần của một trang web.

Rất nhiều người hỏi tôi là tại sao các ví dụ về CSS, jQuery trên izwebz toàn là dạng “tĩnh” mà không phải là “động”. Vấn đề là khi viết tutorial, tôi muốn hướng dẫn bạn kỹ thuật về CSS và jQuery chứ không phải về PHP hoặc MySQL. Cho nên tôi mới sử dụng dạng tĩnh coi như mẫu để làm việc với nó. Còn khi bạn đã biết cách sử dụng nó rồi, thì bạn có thể áp dụng nó vào bất cứ trường hợp nào.

Nhưng vì nhiều người hỏi quá cho nên tôi muốn làm một Video để giúp các bạn thấy được nếu phải áp dụng thì phải làm như thế nào. Trong bài này có sự đóng góp ý kiến rất quan trọng của Clackken Smith, đã giúp tôi sửa lỗi cặp thẻ <ul> để menu hiển thị chính xác hơn.

Trong bài này tôi sử dụng lại mã CSS của bài Flyout menu. Nếu bạn chưa biết cách tạo Flyout Menu, thì bạn nên xem lại bài đó.

Thời lượng: 24:48

Download định dạng .mp4 chất lượng cao :MediaFire

Dung lượng: 36 MB

Đoạn mã sử dụng trong Video
<?php
        $conn = mysqli_connect('localhost','root','123456','navigation') or die('Error connection');
        $page_query = "SELECT * FROM pages";
        $page_res = mysqli_query($conn,$page_query) or die('Could not select Pages '.mysqli_error($conn));
        if($page_res && mysqli_num_rows($page_res) > 0) {
            echo "<ul class='nav'>";
            while($page_items = mysqli_fetch_array($page_res,MYSQLI_ASSOC)) {
                $subject_query = "SELECT *
                                  FROM subjects
                                  WHERE page_id={$page_items['id']}";
                $subject_res = mysqli_query($conn,$subject_query) or die('Could not select subjects '.mysqli_error($conn));
                if($subject_res && mysqli_num_rows($subject_res) > 0) {
                    echo "<li><a href='#'>{$page_items['page_name']}</a><ul>";
                    while($subject_items = mysqli_fetch_array($subject_res,MYSQLI_ASSOC)) {
                        echo "<li><a href='#'>{$subject_items['subject_name']}</a></li>";
                    }//END while $subject_items
                    echo "</ul></li>";
                } else {
                    echo "<li><a href='#'>{$page_items['page_name']}</a></li>";
                }
            }//End while $page_items
        }
        echo "</ul>";
    ?>

«

»

56 Comments

( Comment bài này )
  1. cuongpcc says:

    Chào anh demon em đang học về web và đang học đến phần phân trang cho bài viết.Và em thấy phần này khó hiểu quá. Anh có thể làm 1 Tút về phân trang cho bài viết khi bài viết đó quá dài được ko anh? Phân trang cho bài viết nhé anh chứ không phải là phân trang cho các dòng dữ liệu đâu ạ. Em ví dụ như 1 bài viết quá dài và em muốn nó ngắt thành nhiều trang để cho nó ngắn bớt.Em thấy ở trong izwebz cũng có phân trang nhưng mà là phân trang cho các dòng dữ liệu cái nè thì em làm được rùi.Mong anh giúp đỡ

  2. buivanquynh says:

    anh có thể hướng dẫn chi tiết lam phân quyền bằng php hộ em được không

  3. hâm mộ IZWEBZ says:

    Anh có thể hướng dẫn tạo cơ sở dư liệu như của anh không !
    em mới học SQL và phpmyadmin !
    nên 2 id từ 2 bảng không nhận nhau nên không nhập vào được dữ liệu

  4. thuat_tnt says:

    Em đọc trong sách thấy lệnh kết nối CSDL là “mysql_connect(…..)” vì sao anh viết la
    “mysqli_connect(………)” ==> thêm chữ ‘i’ mà nó vẫn chạy đúng nhỉ ?

    • trung hieu says:

      anh cho em hỏi : nếu mình viết code như trên thì khi chạy mình thấy trong source code các tag ,,… nằm ngoài là vậy thấy phản cảm quá. không chuyên nghiệp tí nào mình phải làm sao khắc phục?
      —————————cảm ơn IZwebz————————

      • trung hieu says:

        anh cho em hỏi : nếu mình viết code như trên thì khi chạy mình thấy trong source code các tag <div> <ul>,… nằm ngoài tag <html> là vậy thấy phản cảm quá. không chuyên nghiệp tí nào mình phải làm sao khắc phục?
        —————————cảm ơn IZwebz————————

  5. nhim175 says:

    Rất cảm ơn izwebz.com đã làm những tutorial rất có ích :D
    Ủng hộ izwebz nhiệt tình!!!

  6. Lưu Nguyễn says:

    Anh ơi cho em hỏi làm sao để khi mình đứng ở Trang chủ thì Chữ Trang chủ khác hơn so với mấy chữ còn lại trong thanh Menu ạnh?

  7. Tùng Lâm says:

    a ơi mình có menu rùi thì cho đường link vào bằng cách nào hả anh

    • Thông says:

      Nếu bạn chưa học HTML thì học HTML rồi hãy học PHP, học PHP thì phải biết HTML và MySQL thì mới bỏ link vào được chứ.

  8. quoc sang says:

    Anh Demon Warlock ơi! Khi mình tạo menu 2 cấp từ csdl thì khi thay đổi csdl thì thanh menu thay đổi luôn hả anh???

  9. Ai biết cách đọc file tài liệu .pdf ppt doc trong php không chỉ giúp mình với.
    Nhớ là không đọc bằng docs.google.com nhé mọi người, vì mình chạy trên localhost lúc ấy tình của mình không nối mạng.
    Thank!

  10. huymap says:

    Làm menu vậy sao mà tạo link kết khi chọn nenu ?? vi du như Home chọn cái nào đó sao mà link

    • Megamin says:

      Trời ạ, thì chỉ cần thêm cho data mỗi bản một cột tên là “link” để chưa đường dẫn và chỉ cần Edit code php 1 chút là ok mà :| sao lười suy nghĩ vậy bạn :( .

  11. Quá cố huynh đệ says:

    Cảm ơn hướng dẩn của a, em làm theo nhưng không hiển thị được tiếng việt, a xem giúp.

  12. Thanks anh, bài giảng anh rất hay. Nếu được thì mong anh hướng dẫn tạo 1 datagird đơn giản. Thanks anh.

  13. le xuan hai says:

    Anh oi! Anh có thể giúp bọn em tạo một trang quản trị được không ạ.
    Em đã sử dụng joomla và wordpress nhưng những cái này mình không chủ động đc nên em nhờ anh giúp để tự code cho mình 1 trang quản trị được không ạ??

  14. tinhsungweb says:

    Anh ơi cho em hỏi làm menu 3 cấp từ csdl như hình ảnh này thì làm sao vây.

    http://t.f5.photo.zdn.vn/upload/orig…43_130_130.jpg

    xin anh chỉ dùm em với ,moi tập tềnh web thoi anh ah.
    cảm ơn anh.

  15. thank you so much says:

    bài này em đã kiếm rất rất lâu rồi, em cám ơn anh nhiều lắm!

  16. <ul>
        <li><a href="#" title="Ngôi sao">Video</a>
            <ul>
                <li class="FirstItem"><a href="#" title="Giới tính">Giới tính</a></li>
                <li><a href="#" title="Học đường">Học đường</a></li>
                <li><a href="#" title="Thời trang">Thời trang</a></li>
            </ul>
        </li>
        <li><a href="#" title="Thể thao">Nghề nghiệp</a>
            <ul>
                <li class="FirstItem"><a href="#" title="Giới tính">Giới tính</a></li>
                <li><a href="#" title="Học đường">Học đường</a></li>
                <li><a href="#" title="Thời trang">Thời trang</a></li>
                <li><a href="#" title="Làm đẹp">Làm đẹp</a></li>
            </ul>
        </li>
    </ul>
    
  17. Cái đó là chế độ chống spam tự động thôi chú. Khi chú post nhiều bài cùng một lúc hoặc bài có nhiều hơn hai đường link sẽ bị tạm giam chờ ngày xét xử.

    • Cái đó em biết mà :D em chỉ nói đùa thôi mà không có gì đâu anh anh đừng nghĩ gì cả

    • naruto says:

      Không biết admin có thể mở thêm một chuyên mục về lập trình web bằng python cgi dành cho người mới bắt đầu có được không?
      Mình xin phụ trách phần đấy.

    • naruto says:

      Tương tự ta có thể làm bằng Python3.2b2 kết hợp với Postgresql:

      import postgresql.driver as pg_driver
      db = pg_driver.connect(user='postgres',host='localhost',password='12345678',port=5432,database='navigation')

      ps = db.prepare("Select *from pages")
      ps2 = db.prepare("Select subject_name from subjects where page_id=$1")
      ps3 = db.prepare("Select count(page_id) from subjects where page_id=$1")
      with db.xact():
      for row in ps:
      print(" %s "%row[1])
      if int(sum(ps3(row[0])[0]))>0:
      print("")
      for row2 in ps2(row[0]):
      print(" %s "%row2[0])
      print("")
      else:
      print("")
      print("")

  18. naruto says:

    Cho mình hỏi mình đang tìm hiểu về python để làm web theo kiểu cgi.
    Mình muốn làm video hướng dẫn về python cgi sử dụng postgresql, driver nối python với postgresql là py-postgresql và đưa lên izweb , không biết admin có chấp nhận không

  19. Dilettante says:

    Em chờ mãi cái tutorial hướng dẫn cài đặt và sử dụng extention PEAR của PHP sao hoài mà không thấy vậy. Mấy anh admin DW, CK làm 1 tutorial về vụ này đi ^:)^

  20. lopsentop says:

    Anh ơi

    em thấy cái này truy xuất dữ liệu rất nhiều anh có cách nào khác để nó truy xuất xuống csdl ít hơn không

    • Có cách đó bạn là đọc tất cả từ CSDL cho vào một cái mảng rồi làm trên mảng thôi nhưng khi dữ liệu lớn thì coi chừng đó nha
      VD : categorys(id,cat_name, cat_order, sub_id)

      $table_cache = array();
      $conn = @mysql_connect('localhost','root','root') or die(@mysql_error());
      $q = @mysql_query("SELECT * FROM categorys") or die(@mysql_error());
      if(@mysql_num_rows($q) != 0){
          while($r = @mysql_fetch_assoc($q)){
              $table_cache[] = $r;
          }
      }
      // xử lý code trên mảng ở đây tôi không viết ra có thể tham khảo code của tôi viết ở dưới
      

      Chúc bạn thành công !

  21. kenichifc says:

    Hãy lập thói quen của bạn ngay từ bây giờ, khi vào Izweb hãy Click quảng cáo để ủng hộ Izweb nhé !!!

  22. Mình học được từ izwebz rất nhiều kiến thức rất hay và rất căn bản, thanks anh DW nhiều, FAN hâm một nồng nhiệt của anh. Nếu rãnh anh làm 1 series video hướng dẫn tạo 1 shopping website hoàn chỉnh đi anh. Thanks anh nhiều.

  23. categorys(id, cat_name, cat_order, sub_id)

    $parent = @mysql_query("SELECT id, cat_name FROM categorys WHERE cat_order <> 0") or die(mysql_error());
    echo "<ul>";
    if(@mysql_num_rows($parent) != 0){
        while($r = mysql_fetch_assoc($parent)){
            echo '<li><a href="Category,'.$r['id'].'">'.$r['cat_name'].'</a>';
            $subparent = @mysql_query("SELECT id, cat_name FROM categorys WHERE sub_id = '".$r['id']."'") or die(mysql_error());
            if(@mysql_num_rows($subparent) != 0){
                echo '<ul>';
                while($r1 = mysql_fetch_assoc($subparent))
                     echo '<li><a href="Category,'.$r['id'].'">'.$r['cat_name'].'</a></li>';
                echo '</ul>';
            }
            echo '</li>';
       }
        echo '</ul>';
    }
    
  24. PhuToan says:

    [PHP]
    0)
    {
    echo “”;
    while($page_items = mysqli_fetch_array($page_res,MYSQLI_ASSOC))
    {
    //Vao CSDL thay co du lieu thi xuat ra cac tag
    echo “{$page_items['page_name']}“;
    //Dung cau truy van de lay cac thanh phan con
    $subject_query = “SELECT *
    FROM subjects
    WHERE page_id={$page_items['id']}”;
    $subject_res = mysqli_query($conn,$subject_query) or die(‘Could not select subjects ‘.mysqli_error($conn));
    //Sau do kiem tra xem no co thanh phan con ko
    if($subject_res && mysqli_num_rows($subject_res) > 0)
    {
    //Neu co thi tao 1 tag con
    echo “”;
    //Chay vong lap while de xuat ca tag con
    while($subject_items = mysqli_fetch_array($subject_res,MYSQLI_ASSOC)) {
    echo “{$subject_items['subject_name']}“;
    }//END while $subject_items
    echo “”;//Ket thuc ul con
    }
    echo “”;
    }//End while $page_items
    echo “”;//Hinh nhu cho nay bac DW roi qua nen de nham ra khoi If thi phai
    }

    ?>
    [/PHP]

    Mình thấy nếu để code như vậy thì dễ hiểu hơn . Nếu sai thì bác DW xóa hộ mình nhé

  25. roy_miller says:

    cám ơn anh, video hay lắm. Em cũng mới học php . hy vọng anh sẽ có nhiều tut hay hơn nữa.
    - à em thấy tool PHP designer cũng hay, em cũng muốn thử sử dụng nó .
    anh có thể viết tut nho nhỏ hướng dẫn em cách cài đặt php designer với xampp, cũng như sử dụng để viết code đc không ạ.
    thanks anh nhiều nhé !

    • Cài phần mềm là một kỹ năng của mình bạn ạ ! Những cái cài phần mềm thì cứ dịch những dòng hướng dẫn bằng tiếng anh thôi. Mỗi lần cài bạn sẽ có thêm kinh nghiệm cho minh mà. nhứng cái cài đặt phần mềm mà phải tạo video thì sẽ thất thoát băng thông lắm bạn ạ có thể cũng thông cảm anh DW cái này hoặc nếu bí quá không cài đựoc thì mail cho anh DW xin anh ấy hướng dẫn :D chúc bạn thành công

      • roy_miller says:

        @Trần Ngọc Nhật :

        cám ơn bạn đã góp ý nha !
        nhưng cài phần mềm ở đây bạn cũng không hiểu ý mình rồi . về cài đặt thì mình làm đc, nếu tối thiểu mà không làm đc như vậy chắc không thể nào theo IT đc ,
        -ý mình muốn hỏi là cách làm việc với nó, dùng Dreamwearer thì quá nặng load lâu nên mình muốn thử dùng Php Designer xem sao , với lại như mọi ng giới thiệu thì php designer cũng có nhiều điểm hay, nhưng mình không biết cấu hình nó cũng như định nghĩa site hay mở 1 project trong php designer .

        -Còn việc tốn băng thông thì cũng không sao cả, mình chỉ hy vọng ở tut sau anh DW có thể bớt chút thời gian nói thêm về việc cấu hình cũng như cách tạo 1 site trong php designer ở phần đầu để những ai chưa biết đc học tập. đây cũng là mong muốn chung của mọi ng mà.

        MONG CÂU TRẢ LỜI TỪ ANH DW, chúc anh có nhiều tut hay hơn nữa và Izwebz ngày càng phát triển nhé !!
        -

    • Hieu says:

      Bạn có thể tham khảo cách cấu hình ở đây http://vn.360plus.yahoo.com/kieuduckhuong1811/article?mid=46&fid=-1

  26. À anh DW ơ cái viết lineheight code như của anh viết như thế nào vậy em hôm kia viết mà nó chạy thành code html luôn anh chỉ cách viết đi hoặc anh dùng cái trình soạn thảo wimsing gì gì đó đi cho mọi người viết code thuận tiện hơn . Cám ơn anh về tất cả :)

  27. Đây là một toturial hay nhưng bần tăng có một câu chuyện như thế này bần tăng chỉ nhớ cốt truyện thôi vì bần tăng đọc nó từ hồi học lớp 3 và cảm thụ nó năm lớp 4 :


    Ở một xứ sở nọ có một chiếc hộp rất thần kỳ là hễ ai mà nhìn vào chiếc hộp đó đều trở thành một nhà toán học vĩ đại hay một nhà bác học uyên thâm.
    Một hôm có một cậu bé rất tò mò muốn biết vì sao mà chiếc hộp đó thần kỳ vậy và cậu đã mở được chiếc hộp thần kỳ đó và một điều lạ là tất cả trong hộp đó chỉ có 10 con số và các phép toán …
    Và cậu bé đã thốt lên :
    Nó đơn giản vậy sao mình không nghĩ ra nhỉ ?

    Bần tăng rất mong mọi người sẽ tìm ra cho mình một … :) đừng oán bần tăng tội nghiệp nha :D

  28. Juni says:

    Cám ơn IZWeb rất nhiều! nó giúp rất nhiều cho công việc của mình!

  29. Giang says:

    Thanks anh DW nhìu, video hay lắm.

  30. forever_love says:

    bài viết của anh rất bổ ích và hay cảm ơn anh đã bỏ thời gian ra để làm những video này

  1. BB
  2. BB
  3. BB

arrow

Lưu ý khi post comment:

  • Không "bóc tem" topic
  • Dùng lời lẽ có văn hoá và lịch sự
  • Xem trang FAQs trước khi hỏi
  • Bạn có thể dùng thẻ HTML như:<strong>, <em>, <a>
  • Đặt code trong thẻ [php],[html],[javascript],[css]

Chọn kiểu gõ: Tự động TELEX VNI Tắt