Append değilse adın benzersiz olup olmadığını kontrol edin

3 Cevap php

Benim uygulama uygulama otomatik olarak URL'lerin kullanılacak benzersiz bir tanımlayıcı içine yaratacak kendi işletme adı, yani girmek için kullanıcı gerektirir

"Bob'un Cafe" "bobs-cafe" olacak

Yinelenen adları vardır ama eğer ben bir numara eklemek için uygulamayı istiyorum böylece bir "bobs-cafe" a "bobs-cafe-1" zaten var ise biz de aynı şekilde "bobs-cafe-1" kullanmak olacak ve zaten varsa biz "bobs-cafe-2" kullanacak

Ive patlayabilir ve ayrıca düzenli ifadeler baktım kullanılır ama bu yaklaşım en iyi yolu bilmiyorum.

Im numara kapmak için güçlü olmak ve bunu artırma ve dize dönen sıkışmış

3 Cevap

Why not to add an autoincrement number to every identifier in the URL?
Just like SO does:

stackoverflow.com / soru / 2895334 / php-uygulama-kontrol-name-benzersiz-ise-değil-ekleme

böylece, hem benzersiz bir tanımlayıcı ve bir iş adı var.

Onlar bir tanımlayıcı değiştirmeden, kendi işletme adını değiştirmek için ücretsiz çünkü bu bile iyidir.

Sorunuza gelince çok basit. Sadece PHP uygulama için:

if (/* you've found the name is already non unique and have the max one in the $id */) {
  $parts = explode("-",$id);
  if (isset($parts[1])) $newid = $parts[0]."-".($parts[1]+1);
  else $newid = $parts[0]."-1";
}

Sarfraz cevabı ekleyerek, bunu bir LIKE deyimi kullanarak bulmak isteyebilirsiniz

SELECT `urlIdentifier` FROM `businesses` WHERE `urlIdentifier` LIKE `bobs-cafe%`

Tüm bobs-cafe eşyaları almak hangi - Eğer 5 satır olsun eğer bu şekilde, size biliyorum

bobs-cafe
bobs-cafe-1
bobs-cafe-2
bobs-cafe-3
bobs-cafe-4

ve bobs-cafe-5 eklemeniz gerekir ki

EDIT - Ya da bu:

SELECT count(*)  as `howMany` FROM `businesses` WHERE `urlIdentifier` LIKE `bobs-cafe%`

Şimdi sonuç nesnesi (veya dizi) toplam sayısını sahip olacaktır:

echo $ resultObject-> howmany; Bobs-cafe sql / / sayı bulundu

Varsayarak $user şeklinde zaten bobs-cafe

function username_exists ( $user ) {

      $result = mysql_query("SELECT name FROM table WHERE $name LIKE '$user%' ");
      $count = mysql_num_rows($result);

        if ( $result ) {

            $num = $count+1;
            return username_exists ( $user.'-'.$num ) ;

        } else {

            return $user;
        }

}