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(""","'"), 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;