次のような小さな SQL データベースがあります。
id name category
------------------------------
1 name1 category1
2 name2 category2
3 name3 category1
4 name4 category1
そして、次のようにjavascriptとhtmlを使用してdbをフォーマットしたい:
<ul>
<li>category1
<ul>
<li>name1</li>
<li>name3</li>
<li>name4</li>
</ul>
</li>
<li>category2
<ul>
<li>name2</li>
</ul>
</li>
</ul>
SQL 実行をネストできないため、行き詰まっています。カテゴリを表示する方法を見つけましたが、それ以上進むことができませんでした。これが私のJavaScriptです:
var db = openDatabase('dbname', '1.0', 'DB Name', 2 * 1024);
db.transaction(function (tx) {
tx.executeSql('SELECT DISTINCT category FROM list', [], function (tx, results) {
if (results.rows.length > 0) {
for (var i = 0; results.rows.length > i; i++) {
$('ul').append('<li>' + results.rows.item(i).category + '</li>');
}
}
});
});
ご助力ありがとうございます!
編集: 最終的に 2 つの SQL 実行をネストして、正しい変数を取得できました。しかし、どういうわけか、最初にすべてのカテゴリを取得し、その後で名前を取得します (正しい順序で)。コードを100回チェックしましたが、エラーが見つかりません...
db.transaction(function (tx) {
tx.executeSql('SELECT DISTINCT category FROM list', [], successCallback);
});
function successCallback(tx, results) {
if (results.rows.length > 0) {
for (var i = 0; results.rows.length > i; i++) {
var result = results.rows.item(i);
alert('Next Category: '+result.category);
tx.executeSql('SELECT name FROM list WHERE category = "'+result.category+'"', [], successCallbackTwo);
}
}
}
function successCallbackTwo(tx, results) {
for (var i = 0; results.rows.length > i; i++) {
alert(results.rows.item(i).name);
}
}