json数据来制作商城的产品分类菜单

人们早就习惯了在互联网购物买东西,甚至有一部分朋友还是上瘾了。本篇PHP教程就来帮助您的电子商务项目实现最重要的产品类别的导航菜单系统。我已经使用PHP、MYSQL及JQuery实现了亚马逊样式的产品分类图像菜单,下面让我们来看一下如何使用json数据来制作商城的产品分类菜单。

amazon产品分类导航

在线演示

数据库

我们先看一下简单的数据库表的设计。主要涉及到一个分类表,包含了4个字段cat_id,name,parent,media。

 
 
 
 
  1. CREATE TABLE `categories`  
  2. (  
  3. `cat_id` int(11) NOT NULL AUTO_INCREMENT,  
  4. `name` varchar(150) ,  
  5. `parent` int(11) ,  
  6. `media` varchar(100),  
  7. PRIMARY KEY (`cat_id`)  
  8. ); 

数据表categories中的分类和子分类的数据存储类似下面的格式。

商品分类表数据格式

categories.php

这个文件主要负责从categories表生成json数据,供前台来显示分类菜单。

 
 
 
 
  1. include('db.php');  
  2. $sql = mysql_query("select cat_id,name,media from categories where parent=0");  
  3. // parent categories node  
  4. $categories = array("Categories" => array());  
  5.  
  6. while ($row = mysql_fetch_array($sql))  
  7. {  
  8. $cat_id = $row['cat_id'];  
  9. $ssql = mysql_query("select cat_id,name,media from categories where parent='$cat_id'");  
  10.  
  11. // single category node  
  12. $category = array(); // temp array  
  13. $category["cat_id"] = $row["cat_id"];  
  14. $category["name"] = $row["name"];  
  15. $category["media"] = $row["media"];  
  16. $category["sub_categories"] = array(); // subcategories again an array  
  17.  
  18. while ($srow = mysql_fetch_array($ssql))  
  19. {  
  20. $subcat = array(); // temp array  
  21. $subcat["cat_id"] = $srow['cat_id'];  
  22. $subcat["name"] = $srow['name'];  
  23. // pushing sub category into subcategories node  
  24. array_push($category["sub_categories"], $subcat);  
  25. }  
  26.  
  27. // pushing sinlge category into parent  
  28. array_push($categories["Categories"], $category);  
  29. }  
  30. echo ((isset($_GET['callback'])) ? $_GET['callback'] : "") . '(' . json_encode($categories) . ')';  
  31. ?> 

JSON 输出的格式

json数据格式

#p#

JavaScript & HTML

实际上最重要的部分在这里,我们需要使用$.getJSON来附加分类数据到UL #menu_ul元素上,子目录数据存储在隐藏的UL 类名hideul。

 
 
 
 
  1.  
  2.  
  3. $(document).ready(function()  
  4. {  
  5.  
  6. $.getJSON("categories.php?callback=?", function(data)  
  7. {  
  8. $.each(data.Categories, function(i, category)  
  9. {  
  10. var subjsondata='';  
  11. $.each(category.sub_categories, function(i, sub_categories)  
  12. {  
  13. subjsondata += "
  14. "+sub_categories.name+"
  15. ";  
  16. });  
  17. var jsondata =""+category.name+""+subjsondata+"  
  18. ";  
  19. $(jsondata).appendTo("#menu_ul");  
  20. });  
  21. }  
  22. );  
  23.  
  24. //MouseOver on Categories  
  25. $(".category").live('mouseover',function(event)  
  26. {  
  27. $("#menu_slider").show();  
  28. var D=$(this).html();  
  29. var id=$(this).attr('id');  
  30. var V=$("#hide"+id).html();  
  31. var M=$("#hide"+id).attr("media");  
  32. $("#submenu_ul").html(V);  
  33. $("#menu_slider h3").html(D);  
  34. //Background Image Check  
  35. if(M!='null')  
  36. {  
  37. $("#menu_slider").css({"width": "450px"});  
  38. }  
  39. else 
  40. {  
  41. $("#menu_slider").css({"width": "250px"});  
  42. }  
  43. $("#menu_slider").css('background', 'url(backgrounds/' + M + ') #ffffff no-repeat right bottom');  
  44. });  
  45.  
  46. //Document Click  
  47. $(document).mouseup(function()  
  48. {  
  49. $("#menu_slider").hide();  
  50. });  
  51.  
  52. //Mouse click on sub menu  
  53. $("#menu_slider").mouseup(function(){ return false });  
  54.  
  55. //Mouse click on my account link  
  56. $("#menu_box").mouseup(function(){ return false });  
  57. });  
  58.  

$(".category").live('mouseover',function(event){}- category 分类标签li的类名。使用attr("id") 调用分类标签li的值,根据ID的类名移动.hideul 子目录的值到$("#submenu_ul").html(V)。

HTML 代码

 
 
 
 
  1. //HTML Code  
  2.  
  3.  
 
  •  
  •  
  •  
  •  

    db.php

    数据库配置文件

     
     
     
     
    1. $mysql_hostname = "localhost";  
    2. $mysql_user = "username";  
    3. $mysql_password = "password";  
    4. $mysql_database = "databasename";  
    5. $bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");  
    6. mysql_select_db($mysql_database, $bd) or die("Could not select database");  
    7. ?> 

    CSS

     
     
     
     
    1. #menu_box  
    2. {  
    3. border-top:solid 3px #333;  
    4. border-left:solid 1px #dedede;  
    5. border-right:solid 1px #dedede;  
    6. border-bottom:solid 1px #dedede;  
    7. min-height:400px;width:200px;  
    8. background-color:#fff;  
    9. margin-left:20px;  
    10. float:left;  
    11. position:relative;  
    12. z-index:300 
    13. }  
    14. #menu_slider  
    15. {  
    16. border-top:solid 3px #333;  
    17. border-left:solid 1px #dedede;  
    18. border-right:solid 1px #dedede;  
    19. border-bottom:solid 1px #dedede;  
    20. min-height:370px;background-color:#fff;margin-left:220px;  
    21. position:absolute;  
    22. width:250px;  
    23. position:relative;  
    24. z-index:200;  
    25. display:none;  
    26. padding:15px 
    27. }  
    28. .hideul{display:none} 

    网页标题:json数据来制作商城的产品分类菜单
    文章地址:http://www.shufengxianlan.com/qtweb/news16/432966.html

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

    猜你还喜欢下面的内容

    App设计知识

    同城分类信息