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

开发 前端
人们早就习惯了在互联网购物买东西,甚至有一部分朋友还是上瘾了。本篇PHP教程就来帮助您的电子商务项目实现最重要的产品类别的导航菜单系统。

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

amazon产品分类导航 

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

JSON 输出的格式

 

json数据格式 

json数据格式

#p#

JavaScript & HTML

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

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

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

HTML 代码

  1. //HTML Code  
  2. <div id='menu_box' class='shadow'> 
  3. <ul id='menu_ul'></ul> 
  4. </div> 
  5. <div id='menu_slider'> 
  6. <h3></h3> 
  7. <ul id='submenu_ul'></ul> 
  8. </div> 

db.php

数据库配置文件

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

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

原文链接:http://www.phpfuns.com/scripts/ecommerce-menu-design-with-json-data.shtml

责任编辑:张伟 来源: phpfuns
相关推荐

2011-05-31 15:56:52

游戏启动菜单Android

2024-08-06 11:17:58

SpringJSON数据

2012-03-07 15:13:07

PhoneGapmenu菜单

2010-09-13 13:35:39

CSS属性

2011-09-28 09:10:51

Windows开始

2011-09-27 10:13:38

诺基亚Windows Pho

2020-10-10 09:57:03

AIOps梦工厂制作进度

2015-07-22 14:54:20

我来贷

2022-05-08 13:05:22

职位产品经理开源

2010-09-30 13:11:59

J2MECanvas

2014-04-29 10:39:27

CSS3JavaScript

2012-05-14 16:29:53

HTML5

2020-07-20 14:04:34

Excel下拉菜单数据

2018-11-21 09:53:08

服务服务器分类

2018-01-08 17:17:46

微信

2023-03-03 09:12:53

服务器

2022-11-22 11:47:25

JSON格式外置表单

2021-08-30 09:25:25

Bert模型PyTorch语言

2013-07-24 09:36:03

产品上线产品着陆页

2014-12-23 14:14:54

点赞
收藏

51CTO技术栈公众号