• 03-02-2010, 02:58:55
    #1
    Üyeliği durduruldu
    ARkadaşlar aradım ama pek bilgi bulamadım şöyel bir kodlama yaptım ama sonradan kafam karıştı dogrumu tam oalrak istediğim işlemimi yapıyor bilmiyorum çoğu kişi group by komutunun çift kayıtlarda göstereceğini söylemiş ama sonradan anladımki örneğin
    deneme
    deneme 2
    deneme 3 diye kayıtlarımız var bunların hepsini görüyor o yüzden aşşağıda çektiğini tekrar kontrol ettirip silme işlemi verdim.. ama hala dogrumu tam bilmiyorum dolu postsum gitti
    ama sonradan anladımda kodda bir sorun olmalı tam amacımı karşılamıyor tam amacımı karşılaması için ne gibi bişey ekleyebilirim... tşkler..
    yani diyelim deneme deneme varsa deneme 2 yi saymadan ikisini eşleyip tekini silmesi lzm..

    Selametle...

    <?
    include 'baglanti.php';
    for($x=1;$x<=5000;$x++) { // tekrarla
    for($i=1;$i<=1;$i++) {
    			$sorgubilgicek2 = "SELECT * FROM wp_posts GROUP BY post_title HAVING COUNT(*)>1 LIMIT 1";
    			$sonuclarbilgi2 = mysql_query($sorgubilgicek2);
    			while ($row2 = mysql_fetch_array($sonuclarbilgi2)) { 
    				 $post_title = $row2[post_title];  
    				 
    $bilgi=mysql_query("SELECT COUNT(post_title) FROM wp_posts WHERE post_title='".$post_title."'");
    if($bilgi)
    {
    $tek=mysql_fetch_array($bilgi);   
    	$sayi = $tek[0];
    }
     if ($sayi >= "1") {
    
    		mysql_query("DELETE FROM wp_posts WHERE post_title='$post_title'");
    			echo $post_title;	
    			}	 
    				 
    				 				
    			}
    			
    			}
    			}
    			?>
  • 03-02-2010, 03:34:23
    #2
    Kodunuzu incelemedim. Sadece gözüme çarpan şu kısım
    Alıntı
    $sayi >= "1"
    Aşağıdaki gibi değiştirip denermisiniz.
    Alıntı
    $sayi >= 1
  • 03-02-2010, 03:53:13
    #3
    <?
    
    $result = mysql_query("select id, title from tabloadi");
    
    while(list($id, $title) = mysql_fetch_row($result)){
    	
    	$bak = mysql_query("select id from tabloadi where title='$title' and id!='$id'");
    	
    	if($bak){
    		
    		while(list($silid) = mysql_fetch_row($bak)){
    			mysql_query("delete from tabloadi where id='$silid'");
    		}
    	}
    	
    
    }
    
    ?>
    yedekle denemedim aklıma gelen suan bu uyarlaması sana kalmış. Mantık ise su tek tek sorgulama yapar titlesi eşit olanı ve id si eşit olmayanı siler.
  • 03-02-2010, 10:36:54
    #4
    Üyeliği durduruldu
    $SORGU="
    DELETE  FROM wp_posts  where exists ( 
     select *from  (select MAX(p.ID) cifid,count(*) FROM wp_posts p 
      GROUP BY p.post_title Having count(*)>1 ) cif where cif.cifid=wp_posts.ID 
    ) 
    ";
    mysql_query($SORGU) or die(mysql_error());
    
    echo mysql_affected_rows()." Adet Kayıt Silindi";

    Bunu 1 kere çalıştırman yeter tekrarlayan kayıtlardan son ekleneni siler.. ama eğer o kayıttan 4 tane varsa 3 e düşürür.. yani bunu 0 kayıt silindi diyene kadar tekrar tekrar çalıştır..
  • 03-02-2010, 10:39:24
    #5
    Üyeliği durduruldu
    wp_posts tablosunun yedeğini almayı da unutmayın
  • 03-02-2010, 12:28:35
    #6
    Üyeliği durduruldu
    arkadaşlar saolun hepiniz dediğini denedim hepsindede aynı olay oluyor benim yazdıgım biraz uzun sürüyor döngünün dönmesi olayı Delly nin yazdıgı hızlıca oluyor fakat hepsi aynı işlemi yaptı..

    diyelim Norton Antivirüs 6.5.5 Norton Antivirüs 6.5.7 diye iki kayıt var bunları eşliyor ve silme işini gerçekleştiriyor. benim yaptırmak istediğim tamamı aynı olan kayıtları silmesi..

    genede herkese teşekkürler