Menu hai cấp từ CSDL
- December 27, 2010
- 56 comments
Đượ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>";
?>
« Ai cũng phải bắt đầu từ đâu đó
Photoshop Tut – Tạo chiếc lá X-mas »
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 đỡ
anh có thể hướng dẫn chi tiết lam phân quyền bằng php hộ em được không
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
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ỉ ?
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————————
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————————
Rất cảm ơn izwebz.com đã làm những tutorial rất có ích
Ủng hộ izwebz nhiệt tình!!!
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?
Bạn có thể dùng CSS như ở trang http://www.izwebz.com/video-tutorials/css-html/tao-menu-ba-trang-thai/ hoặc dùng Jquery
a ơi mình có menu rùi thì cho đường link vào bằng cách nào hả anh
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ứ.
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???
Đúng rồi đó bạn. Như vậy mới gọi là web động chứ !
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!
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
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
.
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.
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.
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 ạ??
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.
bài này em đã kiếm rất rất lâu rồi, em cám ơn anh nhiều lắm!
<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>Cho em hỏi là với đoạn code trên muốn thêm class FirstItem cho đầu tiên thì làm sao?
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à
em chỉ nói đùa thôi mà không có gì đâu anh anh đừng nghĩ gì cả
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.
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("")
xem chi tiết tại : http://www.vithon.org/forum/Thread/show/15?post_id=203
Em có thể viết tut về PHP được không? bởi vì anh không muốn tạo ra quá nhiều chủ đề và ít có tính tập trung. Nhưng nếu sau này nhiều người quan tâm hoặc có đủ nội dung, anh sẽ mở thêm. Còn bây giờ anh chỉ muốn tập trung hơn vào những chủ đề đang có.
Cái này hay nha mình lại biết thêm một cái mới nữa ! Bạn cho mình tài liệu đựoc không tiếng việt cũng được nếu không tiếng anh cũng không sao minh có ngày hôm nay toàn đọc tài liệu tiéng anh thôi
giúp mình với nha cảm ơn nhiều !
@admin:
Đúng như admin nói đó, php đang được ưa chuộng còn python để làm web có vẻ hơi ít. Có thể nói chẳng có mấy .
Mình cũng theo izwebz cũng hơn một năm rồi từ tháng 12 năm 2009 , xem và down cũng hầu hết các turtorial từ photoshop đến wordpress. Mình cũng mới tìm hiểu về web và cũng không phải là người chuyên nghiệp.
Thực sự php cũng không biết gì , Python cũng thế luôn.
Mình cũng chỉ muốn đóng góp gì đó cho izwebz theo khả năng mà mình có thể.
Mình cũng chỉ mới biết cài đặt configure apche, python, postgresql và dự đình làm một turtorial chỉ về cài đặt và hướng dẫn sơ sơ dạo đầu thôi.
@Tran Ngọc Nhât
Bạn có thể tham khảo: tại các trang: http://www.java2s.com/Code/PostgreSQL/Constraints/Create-Rule.htm trang này có cả Python và Postgresql luôn và nhiều cái khác nữa. Nhưng phần Python cgi không nhiều lắm.
Ngoài ra bạn có thể tham khảo thêm:
http://www.voidspace.org.uk/python/articles/cgi_web_applications_two.shtml
trang này không thấy người ta cập nhật thêm gì cả.
trang này cũng được: http://www.cs.virginia.edu/~lab2q/lesson_1/
Hầu hết đều là tài liệu cũ:
http://www.vithon.org/tutorial/2.5/tut.html
Python mới bây giờ là Python 3.2b2 tài liệu cũng ít (đều phải dựa vào các tài liệu cũ để tìm hiểu thêm .)
Mình nghĩ cái này là quan trọng nhất, nó có gần như đầy đủ cái mình cần : cả python và postgresql ( cách truy xuất , điều khiển)
http://mail.python.org/pipermail/tutor/2006-January/044275.html
À quên còn một cái mới nữa là pyphp : http://code.google.com/p/pyphp/wiki/ShortTutorial
tham khảo thêm google
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
sorry mình suy nghĩ không kỹ rất mong admin thông cảm
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 ^:)^
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ướiChúc bạn thành công !
Ái chà chà dạo này chắc mình bị cấm cửa đây
Your comment is awaiting moderation.
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é !!!
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.
Bạn xem hết các video của anh DW cũng có thể logic và làm được 1 trang đơn gian rùi
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>'; }À quên các bạn phải cẩn thận với or die cái này sẽ làm cho chúng ta sẽ hỏng mất giao diện khi chúng ta gặp lỗi
bạn trần ngọc nhật hăng hái thiệt comment từ đầu tới cuối
rofl….
[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é
ủa sao mình gửi bị lỗi thế này ai giúp mình sửa với
Hura hura bạn sửa chữ PHP thành chữ php là ok
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
chúc bạn thành công
@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é !!
-
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
À 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ả
Đâ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
Cám ơn IZWeb rất nhiều! nó giúp rất nhiều cho công việc của mình!
Thanks anh DW nhìu, video hay lắm.
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