Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从父级0中计数类别_Javascript_Jquery_Count_Web Sql - Fatal编程技术网

Javascript 从父级0中计数类别

Javascript 从父级0中计数类别,javascript,jquery,count,web-sql,Javascript,Jquery,Count,Web Sql,我正在尝试对类别进行计数,并在JavaScript或jQuery中输出每个父类_id=0的结果(如果它具有适当的函数)。 我有: 数据动态地来自数据库。 然后,如果我访问列表中的categories_id,我需要添加一个计数器,表明category X有XX个类别。 这是我需要的脚本: var dbSize = 5 * 1024 * 1024; // 5MB var db = openDatabase("Oscommerce", "1.0", "Oscommerce Database", dbS

我正在尝试对类别进行计数,并在JavaScript或jQuery中输出每个父类_id=0的结果(如果它具有适当的函数)。 我有:

数据动态地来自数据库。 然后,如果我访问列表中的categories_id,我需要添加一个计数器,表明category X有XX个类别。 这是我需要的脚本:

var dbSize = 5 * 1024 * 1024; // 5MB
var db = openDatabase("Oscommerce", "1.0", "Oscommerce Database", dbSize);

var categories={};

var list_str = '';
db.transaction(function (tx) {
tx.executeSql('SELECT c.categories_id, c.categories_image, c.parent_id, cd.categories_name, COUNT(p2c.categories_id) AS total FROM categories c INNER JOIN categories_description cd ON c.categories_id = cd.categories_id LEFT JOIN products_to_categories p2c ON p2c.categories_id = c.categories_id GROUP BY c.categories_id, cd.categories_name ORDER BY c.sort_order, cd.categories_name', [], function (tx, results) {
list_str += '<ul data-role="listview" data-inset="true" data-theme="d" data-count-theme="a" data-split-theme="a">';
var len = results.rows.length, i;

for (i = 0; i < len; i++) {
var r = results.rows.item(i);
categories[r.categories_id] = r;
//console.log(categories);
console.log(r.categories_id+'-'+r.parent_id);
}

for(key in categories)
{

var parent = 0;  
var value=categories[key];
catId = value['categories_id'];
catName = value['categories_name'];
catImage = value['categories_image'];
parentId = value['parent_id'];
total = value['total'];

if (parentId == parent) 
{  

if (total == 0){    
list_str += '<li id="'+ catId +'"><a class="parentlink" parentid="'+ parentId +'" catid="'+ catId +'" catname="'+ catName +'"><h3>' + catName + '</h3><p>' + catImage + '</p><div class="ui-li-count">'+ total +' products</div></a><a class="parentlink" parentid="'+ parentId +'" catid="'+ catId +'" catname="'+ catName +'">somelink</a></li>';
}else{
list_str += '<li id="'+ catId +'"><a class="parentlink" parentid="'+ parentId +'" catid="'+ catId +'" catname="'+ catName +'"><h3>' + catName + '</h3><p>' + catImage + '</p><div class="ui-li-count">'+ total +' products</div></a><a href="#">somelink</a></li>';
}

}
}

list_str += '</ul>';

$('#parents').html(list_str).find('ul').listview();


}); 
});

等等,什么?jQuery/JavaScript在这个问题中起到了什么作用?您是在寻找一个JavaScript函数来实现这个功能还是一个SQL查询?如果您可以控制数据库发出的查询,用SQL构建柱状图会更好。@Marcelocontos不知何故,我不知道如何使用javascript中的webDB进行传统的db查询,并将输出传递到同一函数/pageload中的下一个db查询。我不是专业的编码人员,上面的代码花了我很多时间,因为Web SQL数据库规范已被弃用,不再维护,浏览器实际上不再支持它,您应该尝试使用IndexedDB,看下面这是一个很棒的教程:
var dbSize = 5 * 1024 * 1024; // 5MB
var db = openDatabase("Oscommerce", "1.0", "Oscommerce Database", dbSize);

var categories={};

var list_str = '';
db.transaction(function (tx) {
tx.executeSql('SELECT c.categories_id, c.categories_image, c.parent_id, cd.categories_name, COUNT(p2c.categories_id) AS total FROM categories c INNER JOIN categories_description cd ON c.categories_id = cd.categories_id LEFT JOIN products_to_categories p2c ON p2c.categories_id = c.categories_id GROUP BY c.categories_id, cd.categories_name ORDER BY c.sort_order, cd.categories_name', [], function (tx, results) {
list_str += '<ul data-role="listview" data-inset="true" data-theme="d" data-count-theme="a" data-split-theme="a">';
var len = results.rows.length, i;

for (i = 0; i < len; i++) {
var r = results.rows.item(i);
categories[r.categories_id] = r;
//console.log(categories);
console.log(r.categories_id+'-'+r.parent_id);
}

for(key in categories)
{

var parent = 0;  
var value=categories[key];
catId = value['categories_id'];
catName = value['categories_name'];
catImage = value['categories_image'];
parentId = value['parent_id'];
total = value['total'];

if (parentId == parent) 
{  

if (total == 0){    
list_str += '<li id="'+ catId +'"><a class="parentlink" parentid="'+ parentId +'" catid="'+ catId +'" catname="'+ catName +'"><h3>' + catName + '</h3><p>' + catImage + '</p><div class="ui-li-count">'+ total +' products</div></a><a class="parentlink" parentid="'+ parentId +'" catid="'+ catId +'" catname="'+ catName +'">somelink</a></li>';
}else{
list_str += '<li id="'+ catId +'"><a class="parentlink" parentid="'+ parentId +'" catid="'+ catId +'" catname="'+ catName +'"><h3>' + catName + '</h3><p>' + catImage + '</p><div class="ui-li-count">'+ total +' products</div></a><a href="#">somelink</a></li>';
}

}
}

list_str += '</ul>';

$('#parents').html(list_str).find('ul').listview();


}); 
});