• 17-08-2013, 11:16:11
    #10
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    do while döngüsü kullanın, kelimenizin sonuna birden başlayarak rakamlar ekleyip sql sorgusu ile kontrol ettirin. Döngü sırasında bir tane counter kullanmayı da ihmal etmeyin. Dönen satır sayısı sıfır olana kadar döngü devam edecektir. while koşulu sağlandığında en büyük değeri eklemiş olursunuz.
    Demek istediğim bu değil arkadaşım ama mysql ile soruyorum.
  • 17-08-2013, 12:09:28
    #11
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hocam bunun için baştan düzenli bir şekilde sistem kurmalısınız.Sql de unique duplicate veri girişini önlüyor.Yani sql tarafında bunun çözümü yok diye biliyorum.Ama bunun belli bir sistemi olmalı dediğim gibi.
    mesela
    title
    title-1
    title-2
    gibi

    eğer böyle olursa regexp ile otomatik artırım yapabilirsiniz.

    mesela select title from tablo where title REGEXP '$title(-[::digit::]{0,5})*'

    bu sorgu denemedim ama
    title
    title-1
    title-[digits]

    olan title kolonları çeker.Eğer birden fazla varsa num rows la sayıp yeni title ınız

    title- num rows +1
    gibi birşey olabilir.
    Syntax a dikkat etmeden yazdım siz koda dokersiniz.

    Alıntı
    do while döngüsü kullanın, kelimenizin sonuna birden başlayarak rakamlar ekleyip sql sorgusu ile kontrol ettirin. Döngü sırasında bir tane counter kullanmayı da ihmal etmeyin. Dönen satır sayısı sıfır olana kadar döngü devam edecektir. while koşulu sağlandığında en büyük değeri eklemiş olursunuz.
    Olabilir ama çok sağlıklı değil mesela 10tane texti aynı olan title kolonu olsa 10 sorgu donecek.Ikıncı olarak aradan bir yazı sildiğinde tam sayamadan döngü biter
  • 17-08-2013, 13:28:43
    #12
    Osmanoğlu adlı üyeden alıntı: mesajı görüntüle
    Hocam bunun için baştan düzenli bir şekilde sistem kurmalısınız.Sql de unique duplicate veri girişini önlüyor.Yani sql tarafında bunun çözümü yok diye biliyorum.Ama bunun belli bir sistemi olmalı dediğim gibi.
    mesela
    title
    title-1
    title-2
    gibi

    eğer böyle olursa regexp ile otomatik artırım yapabilirsiniz.

    mesela select title from tablo where title REGEXP '$title(-[::digit::]{0,5})*'

    bu sorgu denemedim ama
    title
    title-1
    title-[digits]

    olan title kolonları çeker.Eğer birden fazla varsa num rows la sayıp yeni title ınız

    title- num rows +1
    gibi birşey olabilir.
    Syntax a dikkat etmeden yazdım siz koda dokersiniz.



    Olabilir ama çok sağlıklı değil mesela 10tane texti aynı olan title kolonu olsa 10 sorgu donecek.Ikıncı olarak aradan bir yazı sildiğinde tam sayamadan döngü biter
    Çok teşekkür ederim arkadaşım dediğin yöntemle oldu. Başka arkadaşlar için kodları da paylaşayım belki birisine de lazım olur.

    Basit olarak form
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    	<title>sefURL Example</title>
    </head>
    <body>
    	<form method="post">
    		<input type="text" name="pTitle" /><br/>
    		<input type="submit" value="Save" name="saveButton"/>
    	</form>
    </body>
    </html>
    Permalink oluşturan fonksiyon
    function sefURL($baslik)
    {
    	$baslik = str_replace(array("&quot;","'"), NULL, $baslik);
    	$bul = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '-');
    	$yap = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', ' ');
    	$perma = strtolower(str_replace($bul, $yap, $baslik));
    	$perma = preg_replace("@[^A-Za-z0-9\-_]@i", ' ', $perma);
    	$perma = trim(preg_replace('/\s+/',' ', $perma));
    	$perma = str_replace(' ', '-', $perma);
    	return $perma;
    }
    Buda sıralı şekilde permalinki oluşturan ve veritabanına kaydeden kodlar.
    if($_POST):
    	$pTitle = $_POST['pTitle'];
    	$slugs = sefURL($pTitle);
    
    	$snumRows 	= mysql_num_rows(mysql_query("SELECT slugs FROM sef WHERE slugs REGEXP '$slugs(-[::digit::]{0,5})*'"));
    	if($snumRows >= 1):
    		$slugs = $slugs . '-'. $snumRows;
    	endif;	
    			$insertQuery =mysql_query("INSERT INTO sef (slugs,pTitle)VALUES ('$slugs','$pTitle')");
    endif;
  • 17-08-2013, 13:53:47
    #13
    Alıntı
    Çok teşekkür ederim arkadaşım dediğin yöntemle oldu. Başka arkadaşlar için kodları da paylaşayım belki birisine de lazım olur.
    Rica ederim kolay gelsin

    Edit:tam eşleşme için kalıbı ^$ ile sınırlandırabilirsiniz.
  • 17-08-2013, 22:08:49
    #14
    Osmanoğlu adlı üyeden alıntı: mesajı görüntüle
    Rica ederim kolay gelsin

    Edit:tam eşleşme için kalıbı ^$ ile sınırlandırabilirsiniz.
    Teşekkürler.