2011-02-27 199 views
1

有人可以幫助我,我認爲可能是一個簡單的問題,請。我認爲這個問題可能與我的SQL選擇語句,但也許不是。SQLite選擇語句

我有一個名爲tableOne的表,其中有兩列,名稱和總數,函數editRecord被調用,並且有問題的行的id傳遞給它,所以我可以選擇這一行,然後調用editRecords2函數。第二個函數在html中生成一個表單,並將表中特定行的名稱和總值添加到表單框中。

問題是來自所需行的值永遠不會出現在窗體中,總是最後一行的值進入窗體。代碼如下,任何幫助將是偉大的,謝謝!

function editRecord(id) { 
    db.transaction(function(tx) { 

     tx.executeSql('SELECT * FROM tableOne WHERE id=?', [id], editRecords2); 

    }); 
    } 


function editRecords2() { 
    f = $('#edit'); 
    f.html(""); 
    f.html(f.html() + ' <form method="get" id="edit_form"><div><input type="name" id="editname" value="' + r['name']+'" size="30"/><input type="number" current id="editamount" value="' + r['total']+'" name="amount" size="15" /><input type="submit" value="Save" /></div></form> '); 
    } 

回答

6

我沒有測試的代碼,但 但是這將幫助你得到你的輸出

function editRecord(id) { 
    db.transaction(function(tx) { 

     tx.executeSql('SELECT * FROM tableOne WHERE id=?', [id], function(tx,results){ 
    for (var i=0; i < results.rows.length; i++){ 
     row = results.rows.item(i); 
     editRecords2(row.name,row.total); 
    } 
    }); 

    }); 
    } 


function editRecords2(name,total) { 
    f = $('#edit'); 
    f.html(""); 
    f.html(f.html() + ' <form method="get" id="edit_form"><div><input type="name" id="editname" value="' + name+'" size="30"/><input type="number" current id="editamount" value="' + total+'" name="amount" size="15" /><input type="submit" value="Save" /></div></form> '); 
    } 

如有問題occure與我聯繫。

+0

真棒,我仍然不知道爲什麼它需要一個循環,但它的工作原理。我顯然需要閱讀或練習一些sqlite。謝謝! – mao 2011-02-28 14:39:20

+0

我不是故意在後方@Sujeet中痛苦,但是你有什麼想法,我可以如何擴大這個更新記錄?我可以將這個表單的值傳遞給另一個函數來更新表格,但我認爲我再次犯了錯誤。函數updateRecord(name,total){ }; });函數updateRecord(name,total){ };函數updateRecord(name,total){ } } – mao 2011-02-28 23:52:16

-1

SQLite看起來有點棘手。但似乎如果嘗試用一個服務器端語言來訪問它,你將不會有成功

JavaScript sqlite

1

我認爲你需要看看什麼是SQLite的的用戶定義函數。您希望SQL爲表中的每條記錄調用您的函數。這必須在SQL級別完成,而不是在JavaScript級別完成。在C++中,這是一塊蛋糕,SQLite有一個sqlite_create_function(),它可以讓你做到這一點。我不確定是否有JavaScript,但這是你需要尋找的。

+0

我有一個刪除功能,雖然使用完全相同的方法正確工作,唯一的區別是我選擇而不是刪除?函數deleteRecord(id){db.transaction(function(tx){tx.executeSql('DELETE FROM tableOne WHERE id =?',[id],renderRecords); }); } – mao 2011-02-28 02:46:52