Arkadaşlar Merhaba
üye silinirken üyeye ait veritabanında birden fazla tablodan verileri silmeyi yapamadım, kodlamada aşağıdaki gibi, bu konuda yardım edebilirmisiniz, Teşekkürler.
<%
Set uyem=db.Execute("SELECT * FROM uye WHERE id="& id)
Set prod=db.Execute("SELECT * FROM ilan WHERE kmn='"& uyem("id") &"'")
Do While Not prod.Eof
For i=1 To 10
If Not prod("resim"&i)="" Then
Set rssil = CreateObject("Scripting.FileSystemObject")
rssil.DeleteFile Server.MapPath("../image/" & prod("resim"&i))
End If
Next
Set vtr=db.Execute("SELECT * FROM vitrin")
Do While Not vtr.Eof
If Not vtr("ilan_no")=id Then
db.Execute("DELETE * FROM vitrin WHERE ilan_no="& prod("id"))
End If
vtr.MoveNext : Loop
db.Execute("DELETE * FROM ilan WHERE id="& prod("id"))
prod.MoveNext:Loop
db.Execute("DELETE FROM uye WHERE id="& id)
%><script>
alert('Üye ve bu üyenin Tüm ilanları başarılı Bir şekilde sistemden silinmiştir...!!');
window.open('index.asp?page=uye','_self');</script>
üye silinirken üyeye ait veritabanında birden fazla tablodan kayıt silme yardım
10
●2.127
- 26-11-2012, 11:24:12Üyeliği durduruldubunun için trigger yazılması daha sağlıklı olur ama ben sana sorgu ile ağaç yapısını silme olayını basitçe anlatayım, işi öğrendikten sonra trigger yazmayı öğrenmelisin:
şimdi mesela uyeler tablomuz olsun, bu kişinin ilanları da ilanlar tablosunda tutulsun. ilanlar tablosunda da uye_id hücremiz olsun ki ilişkiyi sağlayabilelim. hatta bir tablo daha koyalım, atıyorum mesela mesajlar diye tablo olsun. bunda da uye_id hücresi olsun ilişki sağlansın.
sonuç şu:
- uyeler
> id
> kullanici_adi
> sifre
- ilanlar
> id
> uye_id
> ilan_baslik
- mesajlar
> id
> uye_id
> baslik
> icerik
şimdi biz uyeler tablosundan 1 üye silinince bağlı olduğu diğer tablolardaki kayıtları da silelim. mesela id'si 1 olan üyeyi silelim.
sorgumuz:
burda dikkat edersen kalın yaptığım yerlerde ilişkiyi uyguladım. bu sorgu çalışınca 1 id'li uyenin kendisi, ilanları ve mesajları bütün halinde listelenir.Alıntı
silmek için SELECT * yerine DELETE u.*, i.*, m.* yazmak yeterli olur.
sonuç:
NOT: bu işlemi daha da kısa hale getirebilirsin. sonraki aşama olarak trigger öğren demiştim. triggeri öğrenirken foreign key metodunu da öğreneceksin.Alıntı
tablolar arasında ben sorgu ile ilişki kurdum, bunu foreign key ile kısaltabiliyoruz. arkaplanda tabloları bağlıyor, biz sadece DELETE FROM uyeler WHERE id=1 sorgusunu çalıştırıyoruz, o otomatik olarak ilişkili olduğu yerlerden de kayıtları siliyor.
döngü içinde döngü yazarak fuzuli kod yazmış oluyorsun, bu şekilde tek sorgu ile istediğini yapabilmiş olacaksın. anlayamadığın yer olursa sor. - 26-11-2012, 12:47:25Üyeliği durdurulduörnek vererek anlatıyım kardeşim veritabanımızda 2tane tablo olsun biri üyeler diğeri konular
üyelerde idsi 5 nolu admin olsun
konular tablosunda bir verimiz olsun örnek
üyeid=5
konubaslik=deneme
konuicerik=fdsf
gibi
sileceğin üyenin idsini formdan çektiğini varsayalım ve şöyle bir kod yazalım
<% id = request.form("uyeid") set uyesil = baglanti.execute("delete from uyeler where id='&id&'") set uyeyeaitkonusil = baglanti.execute("delete from konular where uyeid='"&id&"'") %>şeklinde mantığı anladıysan sorun kalmaz - 26-11-2012, 14:26:22Üyeliği durduruldubenim yazdığımı okumadan üstünü çizdin yanimhmtbnl adlı üyeden alıntı: mesajı görüntüle
- 26-11-2012, 21:59:01Kimlik doğrulama veya yönetimden onay bekliyor.Birincisi transaction kullan, eğer sorgunun yarısında birşey olur patlarsa iyi olmaz.
Mesela üyeleri sildin diyelim, üyeye ait ilanları silerken hata oldu, hop ilanlar boşa düşer, ama transaction kullanırsan rollback yapar ve silme işlemini iptal eder baştan başlarsın.
İkincisi trigger kullan.
Üçüncüsü ve en önemlisi foreign key'leri kullan.