|
|
| |
Veritabanındaki Birçok Kaydı Aynı Anda Güncelleme |
|
|
Veritabanındaki bir kaydı güncellerken sorun yok. Ancak birden fazla kaydı tek bir sayfada güncellemeye kalktığınızda bu sizi biraz zorlayacaktır
ASP ile veritabanındaki bir kaydı güncellerken belki sorun yaşamıyor olabilirsiniz ama siz bir çok kaydı aynı anda güncellemeye kalktığınızda bu sizi biraz zorlayabilir. Şimdi size bu işin mantığını aktarmaya çalışacağım. Diyelimgi bilgisayar parça fiyatlarının tutulduğu bir tablonuz var ve bu tabloda parçadı, fiyatı, özellikleri gibi 3 alan var. Sizde bu veritabanındaki bilgileri bir admin sayfasından güncelleyeceksiniz. Yapacağınız iş bir do while döngüsü ile verileri alıp textboxlar içine yazdırmak. Sorunmu ne? Bilgileri veritabanından döngü ile alacağınız için ve sadece 3 adet taxtbox (parcaadi, fiyat, ozellik) kullanıp bunu döngü ile çoğaltacağınızdan tüm textboxların adı aynı olacak ve siz formun gönderildiği sayfada textboxun adını yazdığınızda son textboxtaki veri geçerli olacaktır. Buda demek oluyor ki her textboxa ayrı bir isim verip bu şekilde diğer sayfadan almalıyız. Peki ayrı isim vermeyi nasıl yapacağız. Öncelikler veritabanınızda ID (Kimlik) alanının olması şart. ID numarası otomatik olarak VT tarafından atanır ve hiçbir kaydın ID numarası siğeriyle aynı değildir. Yani biz textboxları isimlendirirken bu ID numaralarını kullanacağız. Kısa bir örnek verelim: ############# sayfa 1 ############## <% '---- Veritabanı bağlantınızı gerçekleştirdiğinizi varsayıyorum SQL = "Select * From tablolar order by ID" set getir = baglanti.Execute(SQL) %> <table*> <tr*> <td*>Parça</td ><td >Fiyat</td ><td >özellik</td*> </tr*> <% Do While not getir.EOF ID = getir("ID") parca = getir("parcaadi") fiyat = getir("fiyat") ozellik = getir("ozellik") %> <tr*> <td*><input type="text" name="parca_<%=ID%>" value="<%=parca%>"></td*> <td*><input type="text" name="fiyat_<%=ID%>" value="<%=fiyat%>"></td*> <td*><input type="text" name="ozellik_<%=ID%>" value="<%=ozellik%>"></td*> </tr*> <% getir.Movenext Loop %> </table> ############ sayfa 1 sonu ############# Bu örneği incelediğinizde textboxların isimlendirilmesinde grubu ile birlikte ID numaralarınında kullanıldığını göreceksiniz. Şimdi bu verilerin alınmasını inceliyelim: ############ sayfa 2 ################ <% '---- Veritabanı bağlantınızı gerçekleştirdiğinizi varsayıyorum SQL = "Select * From tablolar order by ID" set getir = baglanti.Execute(SQL) Do While not getir.EOF ID = getir("ID") parca = Request.Form("parca_" &amp; ID &amp; "") fiyat= Request.Form("fiyat_" &amp; ID &amp; "") ozellik= Request.Form("ozellik_" &amp; ID &amp; "") SQL = "Update parca Set " SQL = SQL &amp; " parca="' &amp; parca &amp; "', " SQL = SQL &amp; " fiyat=" &amp; fiyat &amp; ", " 'Sayısal ifadelerde tek tırnak (') kullanılmaz SQL = SQL &amp; " ozellik="' &amp; ozellik &amp; "' " SQL = SQL &amp; " where ID=" &amp; ID &amp; "" baglanti.Execute(SQL) getir.Movenet Loop %> ########### sayfa2 sonu ############# Gördüğünüz gibi formdan bilgileri yine ID numaralarını ve grubunu kullanarak aldık. Bu makaleyi yazarken amacım yalnızca işin mantığını size aktarabilmekti. Bu sebeple kodlarda fazla ayrıntıya girmedim. Hatalarda olabilir. Bu mantık ile her türlü çoklu kayıtla işlem yapabilirsiniz. Mesela yazdığınız bir mesaj scriptinde üyelerin başındaki checkboxu işaretlediği mesajları sileceksiniz. Yine aynı mantık geçerli. Bu sefer checkboları kayıtların ID numaralarıyla isimlendireceksiniz.
Okunma : 144 |
|