El siguiente script funciona bien, necesito ayuda en mejorar la organización de los campos de las tablas de mi base de datos.
Cuestión que este código es de un menú para vender productos, tanto las categorías y subcategorías están en la misma tabla. El problema es cómo hacer que funcione bien teniendo 1 tabla 'categorias' y otra 'subcategorías'.
Ver Menú en funcionamiento: http://demos.9lessons.info/jsonmenu/index.html
Código completo:
BD:
Código:
IMAGEN DE LA TABLA:CREATE TABLE `categories` ( `cat_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(150) , `parent` int(11) , `media` varchar(100), PRIMARY KEY (`cat_id`) );
PHP:
Código:
IMAGEN JSON:$sql = mysql_query("select cat_id,name,media from categories where parent=0"); // parent categories node $categories = array("Categories" => array()); while ($row = mysql_fetch_array($sql)) { $cat_id = $row['cat_id']; $ssql = mysql_query("select cat_id,name,media from categories where parent='$cat_id'"); // single category node $category = array(); // temp array $category["cat_id"] = $row["cat_id"]; $category["name"] = $row["name"]; $category["media"] = $row["media"]; $category["sub_categories"] = array(); // subcategories again an array while ($srow = mysql_fetch_array($ssql)) { $subcat = array(); // temp array $subcat["cat_id"] = $srow['cat_id']; $subcat["name"] = $srow['name']; // pushing sub category into subcategories node array_push($category["sub_categories"], $subcat); } // pushing sinlge category into parent array_push($categories["Categories"], $category); } echo ((isset($_GET['callback'])) ? $_GET['callback'] : "") . '(' . json_encode($categories) . ')';
SCRIPT:
Código:
$(document).ready(function() { $.getJSON("categories.php?callback=?", function(data) { $.each(data.Categories, function(i, category) { var subjsondata=''; $.each(category.sub_categories, function(i, sub_categories) { subjsondata += "<li>"+sub_categories.name+"</li>"; }); var jsondata ="<li class="category" id=''"+category.cat_id+"'>"+category.name+"<ul class="hideul" id='hide"+category.cat_id+"' media='"+category.media+"'>"+subjsondata+"</ul> </li>"; $(jsondata).appendTo("#menu_ul"); }); } ); //MouseOver on Categories $(".category").live('mouseover',function(event) { $("#menu_slider").show(); var D=$(this).html(); var id=$(this).attr('id'); var V=$("#hide"+id).html(); var M=$("#hide"+id).attr("media"); $("#submenu_ul").html(V); $("#menu_slider h3").html(D); //Background Image Check if(M!='null') { $("#menu_slider").css({"width": "450px"}); } else { $("#menu_slider").css({"width": "250px"}); } $("#menu_slider").css('background', 'url(backgrounds/' + M + ') #ffffff no-repeat right bottom'); }); //Document Click $(document).mouseup(function() { $("#menu_slider").hide(); }); //Mouse click on sub menu $("#menu_slider").mouseup(function(){ return false }); //Mouse click on my account link $("#menu_box").mouseup(function(){ return false }); });
MIKEPIANIST- "Vivir es un desafío y solo para valientes"