2011-05-29 2 views
1

私はwebdbのためにこのコードを持っています。私はアイテムを削除しようとし、もう1つを注文しようとしますが、最後のアイテムだけを変更します。WebDbのアップデートに問題があります

for (var i=ordine2; i < lunghezza-1+ordine2; i++) { 
    var db = miodb.webdb.db; 
    var ordine3=ordine2+i+1; 
    var ordine4=ordine2+i; 
     db.transaction(function(tx){ 
     tx.executeSql("UPDATE todo SET ordine = " + "'" + ordine4 + "'" + " WHERE ordine=?", [ordine3],  
      miodb.webdb.onSuccess, 
      miodb.webdb.onError); 
     }); 
     } 

これは私のテーブルです: id |コンテンツ|注文

1 | 0 | 0 |

2 | 1 | 1 |

3 | 2 | 2 |

4 | 3 | 3 |

5 | 4 | 4 |

6 | 5 | 5 |

私が最初の項目を削除した場合、他のすべての項目は現在の注文-1に変更されますが、機能しません。最後の項目のみが注文を変更します。ordine2は0に設定されます。配列の長さ。 誰に教えてもらえますか?

答えて

0

これはループを一切必要としません。次の更新の兆候はどうですか?

UPDATE todo SET ordine = ordine - 1 

「WHERE ordine> ordine2」のように、適切なwhere句を追加する必要があります。私はそれがあなたがしようとしていることを完全に理解していないので、私はあなたに正確なコードを与えることはできません。

また、実際にSQL文を作成する際に文字列連結を使用しないでください。すべてのパラメータに対して、ordine3の場合と同様に配列に配置します。そうすれば、適切にエスケープされます。

+0

非常に感謝しています。私は1時間失ってしまいました。解決策は次のとおりです。 var db = miodb.webdb.db; db.transaction(関数(TX){ tx.executeSql( "UPDATE TODOセットののOrdine =のOrdine-1のOrdine>?"、[ordine2]、 miodb.webdb.onSuccess、 miodb.webdb.onError); }); 私はなぜforを使用するのか、私は1つ1つすべての項目を変更したいです。ありがとう – raxe