v2.5.2
Giriş yap

Benzersiz ID Oluşturma ve Kontrol Etme

redline
2,361 defa görüntülendi ve 1 kişi tarafından değerlendirildi
$code             = "111111";

$codeControl      = $db -> query("SELECT item_code FROM items WHERE item_code = '".$code."'") -> rowCount();

if ($codeControl != 0) {
  $code           = "222222";
}

Yukarıdaki işlemde $code değişkeni rand() vb. bir şekilde oluşturulmuş 6 haneli bir sayı. Bunu sipariş numarası olarak kabul edelim.

Veritabanına kaydetmeden önce $codeControl ile kontrol ediyorum. Eğer sonuç 0'a eşit değil ise if ile yeni bir $code oluşturuyorum.

Bu şekilde çakışmayı engellediğimi düşünüyordum fakat ya ikinci oluşturduğumuz $code'de çakışıyorsa?

if içinde if açarak tekrar kontrol ettirebiliriz, ancak oda çakışırsa diye sorun devam ediyor. :)

Döngü ile kontrol ettireyim dedim, bir türlü akıl erdiremedim. Yardımlarınızı bekliyorum. :)

redline
1528 gün önce

@pcmemo

Hocam sıralı gitmesini istemememin sebebi, kullanıcıların o şekilde görmesini istememem sadece. Yani son siparişi oluşturan kişi kaç sipariş olduğunu aşağı yukarı tahmin edebilir oluyor o şekilde. Tamamen psikolojik yani sebebi. :)


@mehmet

regenerate'i çalıştıramadım hocam zaten, ben beceremedim sanırım. :) uniqid() fonksiyonunu daha önce araştırdım fakat gördüğüm kadarıyla 6 haneli bir sonuç elde edemiyoruz.


@shelby

Bu işlem için bir sınıf dahil etmek gerekir mi bilmiyorum ama sınıfı biraz inceledim hoşuma gitti, kenara attım teşekkür ederim. :)


Benim örnek olarak verdiğim kodu sonuç 0 verene kadar döndürecek bir döngü kuramaz mıyız, for vb. ile? :)