如何更好地制定這個問題的建議是值得歡迎的。
比方說,我有一個數據庫查詢類似如下:將幾個數據與他們的父母結合?
var dbSize = 5 * 1024 * 1024; // 5MB
var db = openDatabase("Oscommerce", "1.0", "Oscommerce Database", dbSize);
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM customers_basket WHERE customers_id="1"', [], function(tx, results) {
var len = results.rows.length,
i;
var products_options_array = {};
for (i = 0; i < len; i++) {
var r = results.rows.item(i);
products_options_array[r.customers_basket_id] = r;
console.log(products_options_array);
}
});
});
下面我提供一個HTML輸出的例子。 div
中的所有屬性都是具有相應值的數據庫字段。
我從雅各和蓋比那裏得到的答案是基於下面的HTML。這是我的錯誤,因爲我認爲如果我以這種方式提供它,會更容易理解我的問題。
<div customers_basket_attributes_id="1" customers_id="1" products_id="1{4}2{3}6"
products_options_id="4" products_options_value_id="2">product 1</div>
<div customers_basket_attributes_id="2" customers_id="1" products_id="1{4}2{3}6"
products_options_id="3" products_options_value_id="6">product 1</div>
<div customers_basket_attributes_id="3" customers_id="1" products_id="1{4}3{3}5"
products_options_id="4" products_options_value_id="3">product 1</div>
<div customers_basket_attributes_id="4" customers_id="1" products_id="1{4}3{3}5"
products_options_id="3" products_options_value_id="5">product 1</div>
<div customers_basket_attributes_id="3" customers_id="1" products_id="2{4}3{3}5"
products_options_id="4" products_options_value_id="3">product 2</div>
<div customers_basket_attributes_id="4" customers_id="1" products_id="2{4}3{3}5"
products_options_id="3" products_options_value_id="5">product 2</div>
我怎樣才能得到它像這樣:
<div products_id="1{4}2{3}6">
<p>product1</p>
<p>products_options_id_4 : products_options_value_id_2</p>
<p>products_options_id_3 : products_options_value_id_6</p>
</div>
<div products_id="1{4}3{3}5">
<p>product1</p>
<p>products_options_id_4 : products_options_value_id_3</p>
<p>products_options_id_3 : products_options_value_id_5</p>
</div>
<div products_id="2{4}3{3}5">
<p>product2</p>
<p>products_options_id_4 : products_options_value_id_3</p>
<p>products_options_id_3 : products_options_value_id_5</p>
</div>
而對於更多的GUI,它應該看看像this JSFiddle
結束。
解決與雅各的例子:
var dbSize = 5 * 1024 * 1024; // 5MB
var db = openDatabase("Oscommerce", "1.0", "Oscommerce Database", dbSize);
var data = {};
var cart_str = '';
var products_options_array = {};
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM customers_basket WHERE customers_id="1"', [], function(tx, results) {
var len = results.rows.length,i;
for (i = 0; i < len; i++) {
var r = results.rows.item(i);
products_options_array[r.customers_basket_id] = r;
//console.log(products_options_array);
}
for (key in products_options_array) {
var value = products_options_array[key];
customers_basket_id = value['customers_basket_id'];
customers_id = value['customers_id'];
products_id = value['products_id'];
products_options_id = value['products_options_id'];
products_options_txt = value['products_options_txt'];
products_options_value_id = value['products_options_value_id'];
products_options_value_txt = value['products_options_value_txt'];
customers_basket_quantity = value['customers_basket_quantity'];
final_price = value['final_price'];
customers_basket_date_added = value['customers_basket_date_added'];
cart_str += '<div customers_basket_attributes_id="' + customers_basket_id + '" customers_id="' + customers_id + '" products_id="' + products_id + '" products_options_id="' + products_options_id + '" products_options_value_id="' + products_options_value_id + '" style="display:none">' + products_id + '</div>';
}
$('#input').html(cart_str);
$('#input div').each(function() {
var div = $(this);
var productId = div.attr('products_id');
var optionId = div.attr('products_options_id');
if (!(productId in data)) data[productId] = {
name: div.text(),
options: {}
};
if (!(optionId in data[productId].options)) {
var optionValueId = div.attr('products_options_value_id');
data[productId].options[optionId] = optionValueId;
}
});
$.each(data, function(productId, product) {
var productDiv = $('<div/>').attr('products_id', productId).appendTo('#output');
$('<p/>').text(product.name).appendTo(productDiv);
$.each(product.options, function(optionId, optionValueId) {
$('<p/>').text('products_options_id_' + optionId + ' : products_options_value_id_' + optionValueId).appendTo(productDiv);
});
});
});
});
哪兒了'customers_basket_attributes_id'和'customers_id'去?你想放棄它們嗎? – 2011-12-30 00:48:40
在他們不需要的輸出中,我想我提供了我必須產生輸出的數據。 – wHiTeHaT 2011-12-30 00:50:41
對不起,如果這是一個愚蠢的問題,但你的樣本中只有「產品1」嗎?如果您應該有不同的產品,那麼適當地命名它們以更好地理解您的問題會很有幫助。 – Craig 2011-12-30 01:01:31