Database Temizlemek için 10'dan sonrasini silmek istiyorum.
11
●635
- 26-02-2016, 15:48:45Merhaba arkadaşlar diyelim php ve mysql ile son yaptığım 10 işlemi gösteriyorum ben buradan 10'dan sonrasını nasıl sildirebilirim mesela benim veritabanı 50 tane işlem var ama son 10 tanesi gözüküyor ben burada geri kalan 40'ı otomatik silmek istiyorum yani 10'dan sonra 11 olursa kalan 1'i otomatik silmek istiyorum nasıl yapabilirim yardımcı olursanız sevinirim şimdiden teşekkürler.
- 26-02-2016, 17:45:02Şimdi hocam şöyle açıklıyım benim kodlar bu,
$tablo = "olum"; $son = "select * from $tablo where oldurenuid='$uid' order by tarih desc LIMIT 0,10"; $bitti = mysql_query($son) or die("Sorgulama yapılmadı."); $result123 = dbquery("SELECT * FROM $tablo WHERE oldurenuid='".$uid."'");Bu kodun altına bunu mu eklicem?
$gelen_limit = 10; $limit = $gelen_limit-10; DELETE FROM $tablo WHERE oldurenuid='".$uid."' ASC limit $limit
Yoksa ben mi yapamadım. - 27-02-2016, 15:24:45
$tablo = "olum"; $son = "select * from $tablo where oldurenuid='$uid' order by tarih desc LIMIT 0,10"; $limit_generator = mysql_query("SELECT id FROM $tablo WHERE 1=1"); $table_row_number = mysql_num_rows($limit_generator); if($table_row_number == 0){ //tablo boş }else{ $limit = $table_row_number - 9; $ondanfazlasinisilenkod = mysql_query("DELETE FROM $tablo WHERE 1 ORDER BY id DESC LIMIT $limit); } $bitti = mysql_query($son) or die("Sorgulama yapılmadı."); $result123 = dbquery("SELECT * FROM $tablo WHERE oldurenuid='".$uid."'");Böyle yaparsanız database temizlenecektir. - 27-02-2016, 20:33:58Üyeliği durdurulduGdefender adlı üyeden alıntı: mesajı görüntüle
$say = mysql_fetch_object(dbquery("select count(id) toplam from $tablo")); $gelen_limit = $say->toplam; $limit = $gelen_limit-10; DELETE FROM $tablo ORDER BY id ASC limit $limitÖnce test et büyük ihtimal çalışır.Mantık basit.Tüm tabloyu saydırdım $say ile sonra -10 dedim.böylece 50 tablo saydı ise $gelen_limit 40 olmuş oldu.
Delete ile de ASC yani artan sıraya göre 40 kayıtı seçer id ye göre belirler.
Hızlı örnek : )
gelen limit 2 olsun delete ile ilk 2 kaydı seçer artarak seçer.3.cüyü seçmez seçilenleri siler
1-) Kayıt 1
2-) Kayıt 2
3-) Kayıt 3
Sonuç olarak sadece Kayıt 3 kalır.Başarılar. - 28-02-2016, 01:06:42
DELETE FROM `tabloadı` WHERE id NOT IN ( SELECT id FROM ( SELECT id FROM `tabloadı` ORDER BY id DESC LIMIT 10 ) silgitsin );Tek sorgu ile daha rahat bir şekilde çözebilirsiniz sorununuzu.
Tüm sorumluluk size aittir. Denemeden önce yedek alınız.
silgitsin alias değeridir. değiştirmesenizde olur. tabloadı nı değiştirmeniz yeterlidir. - 28-02-2016, 21:10:22Arkadaşlar ben yanlış anlattım sanırım mantık şuydu diyelim 100 kişi var veritabanında herkezin 10 tane olacak şekilde olmasını istiyorum herkezin 200 veya 500 tane olup veritabanını kasmasını istemıyorum herkezin zaten son 10 bilgisini gösteriyorum ve son 10 tanesinden sonrakiler otomatik silinsin istiyorum mümkün müdür?
