Mysql Veritabanı Silme ve Güncelleme Komutu Yardım !

adasdad

Sudan Çıkmış
Mesajlar
5
En iyi cevaplar
0
Beğeniler
1
Puanları
0
Merhaba Arkadaşlar;
Ben admin paneli yaptım sayfama. Admin panelinde anasayfada üye konu oluşturduğu zaman admin panelimde gözüküyor "id,konuyu ekleyen,konu başlık,konu tarih,konu kategori,konuyu onayla ve konuyu sil" tabloları var üye konuyu oluşturduğu zaman bu tablolarda teker teker gözüküyor. Şimdi ben konu onaylama ve konu silme yaptım çünkü Mysql veritabanına girmeye üşeniyorum uzun sürüyor biraz oyüzden hemen admin panelinden yapim dedim ve kodladım. İd ler otomatik olarak kuruluyor. Fakat benim sıkıntım Konuyu onayla dediğinde tüm konular onaylanıyor , fakat ben sadece o tabloya tıkladığımda o tablodaki konu onaylansın diğerleri onaylanmasın. Birde silme komutunda yine aynı sorun var 1 tane tabloyu siliyorum tüm konular siliniyor.
Konuyu silme ve onaylama kodum şunlar;


Konu Onaylama kodu:

PHP:
$guncelle = mysql_query("UPDATE konular SET konu_durum='1' WHERE konu_durum='0'");

Konu Silme Kodu:

PHP:
$sil = mysql_query("DELETE FROM konular WHERE konu_durum='1'");


Sorunu Bilen arkadaşlar bana yardımcı olursa çok sevinirim. İyi Günler
 


dikodoksit

Kömür Madencisi
Mesajlar
141
En iyi cevaplar
0
Beğeniler
222
Puanları
310
Bunu yapmasının sebebi, belli bir konu_durum='1' i değil tüm konu_durum='1'.leri güncelliyor olman. Kısaca örnekleyecek olursam aşağıdakinin senin tablon olduğunu varsayalım.

id/konular/konu_durum
1/a/0
2/b/1
3/c/1
4/d/0
5/e/1
6/f/0

Eğer bu tablo için "UPDATE konular SET konu_durum='1' WHERE konu_durum='0'" bunu kullanırsan, konu_durum='1' olan tüm satırları seçtirmiş olursun. Belli bir konu_durum'a sahip olan satırı değil. UPDATE ile de güncellediğinde tüm bu seçtiğin konu_durum'lar 1 olur. Yani yukarıdaki tablodaki 1, 4 ve 6 id'li row'ların hepsinin konu_durum'u 1'e güncellenir.

Aynı şekilde "DELETE FROM konular WHERE konu_durum='1'" sql'i de yine WHERE konu_durum='1' olduğu için konu_durum'u 1 olan tüm satırları bulup siler.

Bu durumu düzeltmek için konu_durum'u id yapman yeterli yani,

$sqlUpdateId = mysql_query("SELECT id FROM konular WHERE konu_durum="0");
$konuDurumZero= mysql_fetch_row($sqlUpdateId);

// $konuDurumZero[0] , konu_durum'u 0 olan satırlardan en düşük id'ye sahip olanı verecektir. $konuDurumZero[count($konuDurumZero) - 1] ise en yüksek
// id'ye sahip olanı.

$sqlDeleteId = mysql_query("SELECT id FROM konular WHERE konu_durum="1");
$konuDurumBir = mysql_fetch_row($sqlDeleteId);

// $konuDurumBir[0], konu_durum'u 1 olan satırlardan en düşük id'ye sahip olanı verecektir. $konuDurumBir[count($konuDurumBir) - 1] ise en yüksek id'ye
// sahip olanı.

mysql_query("UPDATE konular SET konu_durum='1' WHERE id='$konuDurumZero[0]'");
mysql_query("DELETE FROM konular WHERE id='$konuDurumBir[count($konuDurumBir) - 1]'");

Yukarıdaki son 2 yazdığım query'lerden birincisi, a konusu'nun konu_durum'unu 1 yapacaktır. 2.si ise e konusunu silecektir.
 

Üst