Napisałem prosty skrypt rejestracji użytkowników. Dodatkowo chcę, aby każdy z użytkowników otrzymywał unikatowy identyfikator o formacie (np. U1234567), czyli jak widać stała litera "U" oraz 7-cyfrowa unikatowa, losowa liczba.
Napisałem coś takiego:
<?php $sql = "SELECT user_new_id FROM tbl_users"; do { $istnieje = 0; $wynik = ''; for($i=0;$i<7;$i++) { //7-cyfrowa $wynik .= $losuj; } $unikat = 'U'.$wynik; if($unikat==$row['user_new_id']) { $istnieje = 1; } } //end while } while ($istnieje == 1); //end do while ?>
Niestety nie działa jak powinno. Tzn. jeśli jako pierwsza liczbę wylosuje ciąg którego nie ma w bazie to jest OK. Natomiast kolejna wylosowana liczba lubi się powtórzyć (dla ułatwienia ustawiłem 1-cyfrową liczbę i wpisałem do bazy U1-U7, czyli możliwe powinno być jedynie uzyskanie ciągów: U8,U9 oraz U0)
Jeśli ktoś widzi błąd lub zna lepszy sposób na rozwiązanie problemu unikatowego, losowego ID byłbym wdzięczny za wskazówki.