Kali ini saya mempersembahkan FDatabase. Yaitu sebuah class yang berfungsi sebagai pengolah data type array yang dianggap sebagai database. Ini bukan murni database lho. Dan data tidak permanen tersimpan. Karena begitu browser di restart atau reload maka datanya akan hilang atau kembali ke nilai awal sesuai pengolahannya diawalnya.
Fungsi-fungsi yang dimilikinya adalah :
- menambah
- menyisipkan
- mengubah
- menghapus
- mencari
Class ini tergantung dengan script saya terdahulu, yaitu Class FError dan Clone Array. Oh ya, hampir lupa tergantung pula dengan Base.js buah karya Dean Edward
Method | Keterangan | ||||||
actAppend(vData) | untuk menambahkan record ke akhir data. Bisa lebih dari satu record.
|
||||||
actAssign(intIndex,varData,varKey) | untuk menyisipkan 1 (satu) record.
|
||||||
actDelete(intIndex) | untuk menghapus 1 record sesuai dengan intIndex
|
||||||
actDeleteBy(sValue,sField,sValue1,sField1) | untuk menghapus record sesuai nilai sValue pada field sField.
|
||||||
actDeleteAll() | untuk menghapus semua record. | ||||||
actUpdate(sValue,sField,mData) | untuk mengubah data sesuai dengan field sField yang bernilai tertentu pada sValue menjadi mData.
|
||||||
getData(sValue,sField) | untuk mendapatkan data sesuai nilai sValue pada field sField.
|
Deklarasi
var myDB=new FDatabase("myDB"); if(myDB.isError()){myDB.actQuit();} /* sVarName : nama variable memory. String. parent: nama parent dari variable memory. Bertype data object. Bila dikosongkan secara default berisi object window. */
Menambahkan record.
var myRecord={id:1,nama:"RinduDendam",kota:"Bandung",negara:"Indonesia"}; myDB.actAppend(myRecord);
Menambahkan record pada no urut tertentu.
var myRecord={id:2,nama:"RinduDendam1",kota:"Jakarta",negara:"Indonesia"}; myDB.actAssign(0,myRecord);
Menghapus record.
myDB.actDelete(1);
Menghapus record dengan syarat.
myDB.actDeleteBy("Jakarta","kota");
Menghapus semua record.
myDB.actDeleteAll();
Mengubah Data.
var myRecord={id:3,nama:"RinduDendamX",kota:"Surabaya",negara:"Indonesia"}; myDB.actUpdate(1,"id",myRecord);
Mendapatkan atau mencari Data.
var MySearch=myDB.getData("Jakarta","kota");
Dibawah ini adalah script lengkapnya.
var FDatabase = FError.extend({ ErrHead:"[ERROR] FDatabase", version:"1.0",arData:[], constructor:function(sVarName,parent) { var err=this.ErrHead+".constructor()\n"; if(!sVarName){this.Error(err+" Parameter sVarName was empty");return;} this.sVarName=sVarName; this.ErrHead="[ERROR] "+this.sVarName; err=this.ErrHead+".constructor()\n"; if(parent){this.parent=parent;}else{this.parent=window;} }, actAppend:function(vData) { var err=this.ErrHead+".actAppend()\n"; if(!vData){this.Error(err+"Parameter vData was empty");return;}; var isExists=false; if(vData.id) { if(this.arData.length) { for(var i in this.arData) { if(!isNaN(i)) { if(this.arData[i].id == vData.id) { isExists=true; break; } } } } } if(!isExists){this.arData.push(vData);} }, actAppendAt:function(intIndex,varData,varKey) { var err=this.ErrHead+".actAppendAt()\n"; if(isNaN(intIndex)){this.Error(err+"Parameter intIndex was empty or not numeric");return;} if(!varData){this.Error(err+"Parameter varData was empty");return;}; if(varKey) { this.arData[intIndex][varKey].push(varData); } else { this.arData[intIndex].push(varData); } }, actAssign:function(intIndex,varData,varKey) { var err=this.ErrHead+".actAssignAt()\n"; if(isNaN(intIndex)){this.Error(err+"Parameter intIndex was empty or not numeric");return;} if(!varData){this.Error(err+"Parameter varData was empty");return;}; if(varKey) { this.arData[intIndex][varKey]=varData; } else { this.arData[intIndex]=varData; } }, actDelete:function(intIndex) { var err=this.ErrHead+".actDelete()\n"; if(isNaN(intIndex)){this.Error(err+"Parameter intIndex was empty or not numeric");return;} this.arData[intIndex]=null; this.arData.splice(intIndex,1); }, actDeleteBy:function(sValue,sField,sValue1,sField1) { var err=this.ErrHead+".actDeleteBy()\n"; if(!sValue){this.Error(err+"Parameter sValue was empty");return;}; if(!sField){this.Error(err+"Parameter sField was empty");return;}; if(!this.arData.length){return;} for(var i in this.arData) { if(isNaN(i)){continue;}; eval("var vData=this.arData[i]."+sField+";"); if(sField1) { eval("var vData1=this.arData[i]."+sField1+";"); if(vData == sValue && vData1 == sValue1){this.actDelete(i);break;} } else { if(vData == sValue){this.actDelete(i);break;} } } return true; }, actDeleteAll:function(){this.arData=[];}, actUpdate:function(sValue,sField,mData) { var err=this.ErrHead+".actUpdate()\n"; if(!sValue){this.Error(err+"Parameter sValue was empty");return;} if(!sField){this.Error(err+"Parameter sField was empty");return;} for(var i in this.arData) { if(isNaN(i)){continue;}; var arD=this.arData[i]; eval("var vData=arD."+sField+";"); if(vData == sValue) { for(var ii in mData) { if(ii == "toJSONString" || ii == "clone"){continue;} eval("var Dd=arD."+ii+";"); if(Dd instanceof Object) { if(Dd.parentNode){Dd.parentNode.removeChild(Dd);} eval("arD."+ii+"=null;"); } eval("this.arData[i]."+ii+"=mData."+ii+";"); } }; } }, getData:function(sValue,sField) { var err=this.ErrHead+".getData()\n"; if(!sValue){this.Error(err+"Parameter sValue was empty");return;}; if(!sField){this.Error(err+"Parameter sField was empty");return;}; if(!this.arData.length){return;} for(var i in this.arData) { if(!isNaN(i)) { eval("var vData=this.arData[i]."+sField+";"); if(vData == sValue) { return this.arData[i]; break; } } } }, searchData:function(sValue,sField,sValue1,sField1) { var err=this.ErrHead+".getData()\n"; if(!sValue){this.Error(err+"Parameter sValue was empty");return;}; if(!sField){this.Error(err+"Parameter sField was empty");return;}; if(!this.arData.length){return;} var arDt=[]; for(var i in this.arData) { if(isNaN(i)){continue;} eval("var vData=this.arData[i]."+sField+";"); if(sValue1 && sField1) { eval("var vData1=this.arData[i]."+sField1+";"); if((vData == sValue || vData.substring(0,sValue.length) == sValue) && (vData1 == sValue1 || vData1.substring(0,sValue1.length) == sValue1)) { arDt.push(this.arData[i]); } }else { if(vData == sValue || vData.substring(0,sValue.length) == sValue) { arDt.push(this.arData[i]); } } }; return arDt; } });
Semoga membantu.
mumet nie mas
ada yang bisa dibanting ? eh .. di bantu ?
artikel yg sangat bagus…
ok thx