• 26-02-2016, 15:48:45
    #1
    Merhaba 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, 15:59:12
    #2
    Üyeliği durduruldu
    $gelen_limit;
    $limit = $gelen_limit-10;
    DELETE FROM tabloadi ORDER BY <alan> ASC limit $limit

    Gelen limitin 50 olsun bundan 10 çıkardık 40 kaldı.bu kod delete komutu ilede ilk 40 kodu sil dedik.
  • 26-02-2016, 16:22:51
    #3
    Şimdi hocam kusura bakma anlamadım karışık geldi ben şöyle son 10 taneyi listeliyorum,

    SELECT * FROM sonislemler Order By id DESC LIMIT 10;
    Siz orada,

    $gelen_limit;
    demişsiniz o ne oluyor?
  • 26-02-2016, 17:03:34
    #4
    Hocam sorunuzda cümleler düşük olmuş, anlamak zor.

    Ayrıca @Angry mesajında son sorunuzun cevabı var.
  • 26-02-2016, 17:45:02
    #5
    Ş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
    #6
    $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
    #7
    Üyeliği durduruldu
    Gdefender adlı üyeden alıntı: mesajı görüntüle
    Ş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.
    $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
    #8
    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:22
    #9
    Arkadaş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?