v2.5.2
Giriş yap

Benzersiz ID Oluşturma ve Kontrol Etme

redline
2,732 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. :)

shelby
1738 gün önce

@redline
hashids kütüphanesini kullanabilirsin.
https://github.com/vinkla/hashids

Örnek:

<?php

require_once('vendor/autoload.php');

use HashidsHashids;

$salt = 'site_salt_anahtari_degistir';

$length = 6;

$id = 1923;

$hashids = new Hashids($salt, $length);

/
Alternatif
Key için özel harflerde seçebiliriz, hepsi küçük harf olacaktır.
$hashids = new Hashids($salt, 6, 'abcdefghijklmnopqrstuvwxyz');
/

$hash = $hashids->encode($id);

echo $hash."<br/>"; //aWKZrQ

echo $hashids->decode($hash)[0]; //1923